程序员

dubbo源码愫读(1)dubbo总体架构

2019-01-21  本文已影响4人  桥头放牛娃

1、微服务简介

微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。

1.1、微服务架构的优势

微服务可通过分布式部署,大幅提升团队和日常工作效率。还可以并行开发多个微服务。这意味着更多开发人员可以同时开发同一个应用,进而缩短开发所需的时间。

1.2、所面临的挑战

复杂性和效率问题是基于微服务的架构所面临的挑战。

2、dubbo架构设计

2.1、dubbo结构图

dubbo结构图.png

节点角色说明:

调用关系说明:

2.2、dubbo总体架构

dubbo总体架构图.png

Dubbo框架设计一共划分了10个层,最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层。图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口, 位于中轴线上的为双方都用到的接口。

下面,结合Dubbo官方文档,我们分别理解一下框架分层架构中,各个层次的设计要点:

根据官方提供的,对于上述各层之间关系的描述,如下所示:

2.3、dubbo服务调用流程

服务提供方与服务消费放之间调用关系:

调用关系.png

上图中,蓝色的表示与业务有交互,绿色的表示只对Dubbo内部交互。上述图所描述的调用流程如下:

将上面抽象的调用流程图展开,详细如图所示:

抽象流程图.png

注册/注销服务:
服务的注册与注销,是对服务提供方角色而言,那么注册服务与注销服务的时序图,如图所示:

注册注销流程.png

服务订阅/取消:
为了满足应用系统的需求,服务消费方的可能需要从服务注册中心订阅指定的有服务提供方发布的服务,在得到通知可以使用服务时,就可以直接调用服务。反过来,如果不需要某一个服务了,可以取消该服务。下面看一下对应的时序图,如图所示:

订阅取消流程.png

3、其他说明

3.1、协议支持

Dubbo支持多种协议,如下所示:

在通信过程中,不同的服务等级一般对应着不同的服务质量,那么选择合适的协议便是一件非常重要的事情。你可以根据你应用的创建来选择。例如,使用RMI协议,一般会受到防火墙的限制,所以对于外部与内部进行通信的场景,就不要使用RMI协议,而是基于HTTP协议或者Hessian协议。

3.2、dubbo模块结构及关系

dubbo模块结构.png

可以通过Dubbo的代码(使用Maven管理)组织,与上面的模块进行比较。

简单说明各个包的情况:

3.3、参考文档

参考博客:
http://shiyanjun.cn/archives/325.html
https://www.cnblogs.com/aspirant/p/9002663.html
https://github.com/apache/incubator-dubbo
http://alibaba.github.io/dubbo-doc-static/FAQ-zh.htm

上一篇 下一篇

猜你喜欢

热点阅读