Dubbo的整体架构设计及分层

五个角色

注册中心registry:服务注册与发现

服务提供者provider:暴露服务

服务消费者consumer:调用远程服务

监控中心monitor:统计服务的调用次数和调用时间

容器container:服务允许容器,装载provider

调用流程

  1. container容器负责启动、加载、运行provider
  2. provider在启动时,向regisitry中心注册自己提供的服务,基于心跳机制的长连接
  3. consumer在启动时,向registry中心订阅自己所需的服务
  4. consumer返回服务提供者列表给consumer,如果有变更,registry将基于长连接推送变更数据给consumer
  5. consumer调用provider服务,基于负载均衡算法调用
  6. consumer调用provider的统计,基于短链接定时每分钟一次统计到monitor

分层

接口服务层(Service):面向开发者,业务代码,接口,实现等

配置层(Config):对外配置接口,以ServiceConfig和ReferenceConfig为配置中心去加载我们的配置和维护我们的配置,当有变化时通常使用Zookeeper去通知客户端

服务代理层(Proxy):对于生产者和消费者、dubbo都会产生一个代理类封装调用细节,业务层对远程调用无感

服务注册层(Registry):封装服务地址的注册和发现,以URL为中心,通常使用ZK

路由层(Monitor):封装多个提供者的路由和负载均衡,并桥接注册中心

监控层(Monitor):RPC调用次数和调用时间监控

远程调用层(Protocal):封装RPC调用(基于TCP)

信息交换层(Exchange):封装请求响应模式,同步转异步

网络传输层(Transport):抽象mina 和 netty 为统一接口,统一网络传输接口

数据序列化层(Serialize):数据传输的序列化和反序列化

没有解决服务熔断,服务降级


   转载规则


《Dubbo的整体架构设计及分层》 锦泉 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录