整体架构

dubbo-architecture

节点角色描述
节点角色描述
提供者暴露服务的提供者
消费者调用远程服务的消费者
注册中心注册中心用于服务注册和发现
监控中心一个监控中心,统计服务调用次数和调用时间
容器服务运行容器
调用关系描述
  1. 服务容器负责启动、加载和运行服务提供者。
  2. 服务提供者启动时,会向注册中心注册它提供的服务。
  3. 服务消费者启动时,会向注册中心订阅它需要的服务。
  4. 注册中心会将服务提供者地址列表返回给消费者。如果有变化,注册中心会基于长连接将变更数据推送到消费者。
  5. 服务消费者从提供者地址列表中,根据软负载均衡算法选择一个提供者进行调用,如果调用失败,则选择另一个提供者进行调用。
  6. 服务消费者和提供者会将调用次数和调用时间累积在内存中,并每分钟定期将统计数据发送到监控中心。

Dubbo 架构具有以下特点,即连通性、健壮性、可扩展性和对未来架构的升级能力。

连通性

  • 注册中心负责服务地址的注册和查找,相当于目录服务。服务提供者和消费者只在启动时与注册中心交互。注册中心不转发请求,压力较小
  • 监控中心负责统计服务调用次数、调用时间等,统计数据先在内存中汇总,每分钟发送到监控中心服务器,并在报表中显示
  • 服务提供者向注册中心注册它提供的服务,并向监控中心上报调用时间,不包含网络开销
  • 服务消费者从注册中心获取服务提供者的地址列表,根据负载算法直接调用提供者,并向监控中心上报调用时间,包含网络开销
  • 注册中心、服务提供者和服务消费者都是长连接,除了监控中心
  • 注册中心通过长连接感知服务提供者的存在,如果服务提供者宕机,注册中心会立即推送事件通知消费者
  • 注册中心和监控中心都宕机,运行的提供者和消费者不受影响。消费者在本地缓存提供者列表
  • 注册中心和监控中心都是可选的,服务消费者可以直接连接服务提供者

健壮性

  • 监控中心宕机不影响使用,但会丢失部分采样数据
  • 数据库宕机后,注册中心仍然可以通过缓存提供服务列表查询,但无法注册新的服务
  • 注册中心采用 peer-to-peer 集群,当任何一个宕机时,会自动切换到另一个
  • 注册中心完全宕机后,服务提供者和服务消费者仍然可以通过本地缓存进行通信
  • 服务提供者无状态,如果任何一个宕机,不会影响使用
  • 服务提供者全部宕机后,服务消费者应用将不可用,并将无限重连等待服务提供者恢复

可扩展性

  • 注册中心是 peer-to-peer 集群,可以动态增加机器部署实例,所有客户端都会自动发现新的注册中心
  • 服务提供者无状态,可以动态增加机器部署实例,注册中心会将新的服务提供者信息推送到消费者

升级能力

当服务集群规模进一步扩大,IT 治理架构进一步升级时,需要实现动态部署,进行流量计算,现有的分布式服务架构不会带来阻力。下图是未来可能的架构

dubbo-architecture-futures

节点角色描述
节点角色描述
部署器自动部署服务的本地代理
仓库仓库用于存储服务应用发布包
调度中心调度中心根据访问压力自动增减服务提供者
管理员统一管理控制台
注册中心注册中心用于服务注册和发现
监控中心一个监控中心,统计服务调用次数和调用时间

上次修改时间:2023 年 1 月 2 日:增强 en 文档 (#1798) (95a9f4f6c1c)