Dubbo学习(一)——分布式服务治理框架基础概念及工作原理

面试官的心思一般是:

第一步:思考性问题、原理——MQ、ES、Redis、SpringCloud(Dubbo)、....

第二步:实际开发中遇到的问题,你是怎么解决的,上述技术有在项目中用到吗?

第三步:综合的,系统设计,,比如让你设计一个 MQ、设计一个搜索引擎、设计一个缓存、设计一个 rpc 框架,你怎么设计

 

国内SpringCloud架构热火朝天,但是阿里系架构推崇的Dubbo目前仍是市面公司的主流技术,有必要了解下

Dubbo就是一个分布式服务治理框架:

       传统RPC远程调用缺点是缺少服务治理,当服务比较多时URL地址管理起来混乱,Dubbo可解决服务治理问题,核心技术是通过注册中心(服务治理思想和SpringCloud的类似),Dubbo底层框架基于Netty实现。

传统架构—>分布式架构—>SOA架构(SOA基于分布式架构,Dubbo产生于SOA架构)—>微服务架构

SpringCloud和Dubbo区别与相关:他们都属于RPC远程调用框架,但是SpringCloud更强大,某种程度可以说Dubbo是它一个子集

1.什么是Dubbo

(1)是一款分布式服务框架

(2)也是高性能和透明化的RPC远程服务调用框架

(3)支持SOA服务治理方案

2.Dubbo 工作原理

工作流程:

  • 第一步:provider(生产者) 向注册中心去注册
  • 第二步:consumer (消费者)从注册中心订阅服务,注册中心会通知 consumer 注册好的服务
  • 第三步:consumer 调用 provider
  • 第四步:consumer 和 provider 都异步通知监控中心

详细调用流程:

(1)服务容器负责启动、加载,运行服务提供者

(2)服务提供者(provider)在启动时,向注册中心注册自己提供的服务

(3)服务消费者(consumer )在启动时,向注册中心订阅自己所需的服务

(4)注册中心返回服务提供者地址列表给消费者,如果有变更注册中心将基于长连接推送变更数据给消费者

(5)服务消费者从提供者地址列表中,基于负载均衡算法 ,选一台提供者进行调用,如果调用失败再选另一台

(6)服务消费者和提供者,在内存中累计调用次数和调用时间,定时,每分钟发送一次统计数据到检测中心

原理图:

Dubbo学习(一)——分布式服务治理框架基础概念及工作原理

3.项目分层结构(10层):

  • 第一层:service 层,接口层,给服务提供者和消费者来实现的
  • 第二层:config 层,配置层,主要是对 dubbo 进行各种配置的
  • 第三层:proxy 层,服务代理层,无论是 consumer 还是 provider,dubbo 都会给你生成代理,代理之间进行网络通信
  • 第四层:registry 层,服务注册层,负责服务的注册与发现
  • 第五层:cluster 层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务
  • 第六层:monitor 层,监控层,对 rpc 接口的调用次数和调用时间进行监控
  • 第七层:protocal 层,远程调用层,封装 rpc 调用
  • 第八层:exchange 层,信息交换层,封装请求响应模式,同步转异步
  • 第九层:transport 层,网络传输层,抽象 mina 和 netty 为统一接口
  • 第十层:serialize 层,数据序列化层