整体架构
节点角色描述
节点 | 角色描述 |
---|---|
提供者 | 暴露服务的提供者 |
消费者 | 调用远程服务的消费者 |
注册中心 | 注册中心用于服务注册和发现 |
监控中心 | 一个监控中心,统计服务调用次数和调用时间 |
容器 | 服务运行容器 |
调用关系描述
- 服务容器负责启动、加载和运行服务提供者。
- 服务提供者启动时,会向注册中心注册它提供的服务。
- 服务消费者启动时,会向注册中心订阅它需要的服务。
- 注册中心会将服务提供者地址列表返回给消费者。如果有变化,注册中心会基于长连接将变更数据推送到消费者。
- 服务消费者从提供者地址列表中,根据软负载均衡算法选择一个提供者进行调用,如果调用失败,则选择另一个提供者进行调用。
- 服务消费者和提供者会将调用次数和调用时间累积在内存中,并每分钟定期将统计数据发送到监控中心。
Dubbo 架构具有以下特点,即连通性、健壮性、可扩展性和对未来架构的升级能力。
连通性
- 注册中心负责服务地址的注册和查找,相当于目录服务。服务提供者和消费者只在启动时与注册中心交互。注册中心不转发请求,压力较小
- 监控中心负责统计服务调用次数、调用时间等,统计数据先在内存中汇总,每分钟发送到监控中心服务器,并在报表中显示
- 服务提供者向注册中心注册它提供的服务,并向监控中心上报调用时间,不包含网络开销
- 服务消费者从注册中心获取服务提供者的地址列表,根据负载算法直接调用提供者,并向监控中心上报调用时间,包含网络开销
- 注册中心、服务提供者和服务消费者都是长连接,除了监控中心
- 注册中心通过长连接感知服务提供者的存在,如果服务提供者宕机,注册中心会立即推送事件通知消费者
- 注册中心和监控中心都宕机,运行的提供者和消费者不受影响。消费者在本地缓存提供者列表
- 注册中心和监控中心都是可选的,服务消费者可以直接连接服务提供者
健壮性
- 监控中心宕机不影响使用,但会丢失部分采样数据
- 数据库宕机后,注册中心仍然可以通过缓存提供服务列表查询,但无法注册新的服务
- 注册中心采用 peer-to-peer 集群,当任何一个宕机时,会自动切换到另一个
- 注册中心完全宕机后,服务提供者和服务消费者仍然可以通过本地缓存进行通信
- 服务提供者无状态,如果任何一个宕机,不会影响使用
- 服务提供者全部宕机后,服务消费者应用将不可用,并将无限重连等待服务提供者恢复
可扩展性
- 注册中心是 peer-to-peer 集群,可以动态增加机器部署实例,所有客户端都会自动发现新的注册中心
- 服务提供者无状态,可以动态增加机器部署实例,注册中心会将新的服务提供者信息推送到消费者
升级能力
当服务集群规模进一步扩大,IT 治理架构进一步升级时,需要实现动态部署,进行流量计算,现有的分布式服务架构不会带来阻力。下图是未来可能的架构
节点角色描述
节点 | 角色描述 |
---|---|
部署器 | 自动部署服务的本地代理 |
仓库 | 仓库用于存储服务应用发布包 |
调度中心 | 调度中心根据访问压力自动增减服务提供者 |
管理员 | 统一管理控制台 |
注册中心 | 注册中心用于服务注册和发现 |
监控中心 | 一个监控中心,统计服务调用次数和调用时间 |
上次修改时间:2023 年 1 月 2 日:增强 en 文档 (#1798) (95a9f4f6c1c)