dubbo服务治理架构与原理

dubbo是什么dubbo是一个分布式服务中间件 , 是高性能和透明化的RPC远程服务调用解决方案 , 主要通过资源调度和服务治理来解决分布式架构下服务资源浪费以提高集群的使用率 。核心部分包含:

  • 远程通讯:提供多种基于长连接的NIO的抽象封装 , 包括多种线程模型 , 序列化方式 , 以及请求-响应模式的信息交互
  • 集群容错:提供基于接口方法的透明化远程调用 , 包括多协议支持 , 软负载均衡 , 失败容错 , 地址路由 , 动态配置的集群策略
  • 服务发现:基于注册中心目录服务 , 使服务消费者能动态查找服务提供者 , 使地址透明 , 服务提供者可以根据流量平滑增加节点
 
1.dubbo架构-组件角色在深入架构前 , 先了解一下dubbo的组件角色 , 如下图:
 
dubbo服务治理架构与原理

文章插图
 
 
  • Provider:暴露服务的服务提供方
  • Container:服务运行容器
  • Registry:服务注册与发现的注册中心
  • Consumer:调用远程服务的服务消费方
  • Monitor:统计服务调用次数和耗时的监控中心
调用关系分析:
  • 服务容器Container负责启动 , 加载 , 运行服务提供者 。
  • 服务提供者Provider在启动时 , 向注册中心注册自己提供的服务 。
  • 服务消费者Consumer在启动时 , 向注册中心订阅自己所需的服务 。
  • 注册中心Registry返回服务提供者地址列表给消费者 , 如果有变更 , 注册中心将基于长连接推送变更数据给消费者 。
  • 服务消费者Consumer , 从提供者地址列表中 , 基于软负载均衡算法 , 选一台提供者进行调用 , 如果调用失败 , 再选另一台调用 。
  • 服务消费者Consumer和提供者Provider , 在内存中累计调用次数和调用时间 , 定时每分钟发送一次统计数据到监控中心Monitor 。
 
dubbo服务治理架构与原理

文章插图
 
 
问:各组件角色之间是采用长连接还是短连接交互的?为什么? 答:服务提供者->消费者 , 服务提供者->注册中心 , 服务消费者->注册中心 。以上三个交互环节采用的是长连接 。至于为什么?笔者分析是因为基于注册中心的动态服务发现与注册机制 , 所以需要通过心跳的方式实时检测节点的状态
 
2.dubbo架构-模型分层先来看一下dubbo这个中间件的领域模型分层结构 , 如下图:
 
dubbo服务治理架构与原理

文章插图
 
 
中间件架构分层设计: