【Dubbo分布式服务框架】1.Dubbo基础介绍

时间:2023-03-19 09:56:29


前言

Dubbo是一个常用的分布式服务框架,它致力于提供高性能、透明化的RPC远程服务方案。学习Dubbo有助于提高企业级应用的开发效率,以及可通过简单的配置就可以实现负载均衡,提高服务的效率。



一、Dubbo基础知识

什么是Dubbo?在介绍Dubbo之前,我们首先了解一下企业级应用架构的整个变迁,有利于我们了解Dubbo的产生背景。



我们的企业级应用架构的变化如图:


【Dubbo分布式服务框架】1.Dubbo基础介绍



单一应用阶段(ORM为主):


对于访问流量小的网站或系统,只需要单一的应用架构即可,也就是只需要一个应用就能将所有的功能都聚集到一起,来减少部署的成本,这个时候,用于简化增删改查工作量的数据库访问框架(ORM对象关系映射框架,如Hibernate、MyBatis),会提高开发的效率。



垂直应用架构(MVC为主):


当访问量稍微增大以后,单一的应用架构就不能满足系统的日常需求,我们需要将系统之间耦合度较低的模块拆分出来,来减少代码的冗余,提高效率。此时,用于提升前端页面访问效率的Web框架应运而生(如Struts、SpringMVC),与之前的ORM框架结合起来,共同形成了MVC架构的Web应用体系。



分布式服务架构(RPC为主):


当应用越来越多,应用和应用之间不断的交互,此时就需要将核心的业务抽取出来,提供独立的服务,形成稳定的服务中心,使前端可以适应多变的市场需求。此时,使用分布式服务框架是一个关键,而我们的Dubbo就是一个分布式服务框架。



流动计算架构(SOA为主):


当提供的服务越来越多,我们就需要一个中心,来对不同服务的负载进行评估,实时的调配资源,提高集群的应用率。此时,资源的调度和治理中心就是关键。而Duboo支持了完整的RPC调用的支持,以及服务治理中心相关的功能。



我们一般开发者大多数接触最多的就是基于MVC架构的Web应用,学习Dubbo更有利于我们开发分布式的Web应用。



Dubbo介绍


Dubbo是一个分布式服务框架,致力于提高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。



Dubbo名称来源于澳大利亚达博市。与Dubbo同类型的框架还有Apache的Thrift、Hessian,Java原生的RMI,WebService,以及淘宝的HSF,京东的JSF。


Apache的Thrift对多语言的支持比较好,但是负载均衡和SOA的治理这一块比较缺乏。而Hessian和WebService都是传统的HTTP调用框架,由于HTTP调用时使用的多是短连接形式,大部分资源都被浪费在服务器的IO导上。Java的RMI只支持Java语言,而且性能比较一般。淘宝的HSF和京东的JSF都没有开源,那么在开源框架中,Dubbo是一个比较优秀的分布式服务框架。


Dubbo的线上版本比较稳定,社区文档多,运维方案比较成熟(admin控制台和monte监控平台)。


Duboo支持拓展,目前,国内有许多家大型生产型应用互联网公司使用了Dubbo框架,如图:


【Dubbo分布式服务框架】1.Dubbo基础介绍


这里,Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2000+个服务提供30亿次访问量支持,并被广泛应用于阿里巴巴集团的各个成员站点。



二、Dubbo涉及的知识

(1)远程调用:RMI、hassion、webService、thrift


     Dubbo都会在底层真正调用的时候,使用这些框架来做远程调用。


(2)通信交互:HTTP、mina、netty


     其中mina与netty都是NIO的框架。


(3)序列化:hessian2、java、json


     Dubbo默认使用hessian2


(4)容器:jetty、spring


     Dubbo在容器方面支持像jetty这样的轻量级容器,或者spring这样的IOC容器。


(5)多线程:异步,线程池


     Dubbo涉及了异步的调用和线程池的管理。


(6)负载均衡:zookeeper、redis


     Dubbo大部分使用zookeeper来实现负载均衡。




三、使用Dubbo可以做什么

(1)作为对内提供服务应用的容器


我们可以开发很多业务处理的应用,然后使用Duboo这种容器来提供服务。



(2)拆分复杂Web应用到服务器容器


把大量的逻辑放置在服务提供的应用之中,使Web应用调用服务容器。



(3)应用负载均衡协调


我们可以使用Duboo来实现软件的负载均衡和协调,这样不仅简化了配置,还大大简化了服务器的利用率。



(4)应用服务治理


下图完整的表示了Dubbo在服务治理提供的相关功能:


【Dubbo分布式服务框架】1.Dubbo基础介绍


除了负载均衡,还可以做服务的降级、调用统计以及依赖关系的计算等等。使用这些功能我们可以很清晰了解一个应用的依赖关系,以及不同应用调用的负载情况,我们根据这些负载,来分配和计算,以增加对应的机器。