dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC(remote procedure call)远程服务调用方案,以及作为SOA(service oriented architectrue)服务治理方案
架构
角色简介:
Container:服务运行容器
Provider:暴露服务的服务提供方
Consumer:调用远程服务的服务消费方
Registry:服务注册和发现的注册中心。
Monitor:统计服务调用次数和调用时间的监控中心
调用关系:
1、服务容器负责启动、加载、运行服务提供者
2、服务提供者启动时,向注册中心注册自己的服务
3、服务消费者启动时,向注册中心订阅自己的服务。
4、注册中心返回服务提供者地址列表给消费者,如果数据有变更,注册中心将基于长连接推送变更数据给消费者
5、服务消费者从服务提供地址列表中,基于软负载均衡算法,从中选取一个服务调用,如果调用失败,选取另一个服务。
6、服务提供者和消费者,在内存中累积调用次数和调用时间,以每分钟一次发送到监控中心。
特点:连通性、健壮性、收缩性和升级性
连通性:
注册中心负责服务地址的注册和查找,相当于目录服务,服务提供者和消费者只有在启动的时候才会与注册中心发生交互。
监控中心负责统计服务调用时间和调用次数,统计先在内存中计算并以每分钟一次的频率发送给监控中心。
服务提供者向注册中心注册其提供的服务,并汇报调用时间给监控中心。
服务消费者向注册中心获取服务提供者地址列表,基于软负载均衡算法调用远程服务,并汇报调用时间给监控中心。
注册中心、服务提供者和服务消费者都是基于长连接,监控中心不是。
注册中心通过长连接感知服务提供者的存在,如果服务提供者宕机,注册中心会立即推送事件给消费者。
注册中心和服务提供者同时宕机,不会影响程序运行,因为服务消费者在本地缓存了服务提供者列表。
健壮性:
监控中心宕掉后,不影响程序使用,只会影响统计数据。
数据库宕掉后,注册中心仍能通过缓存来提供服务地址列表查询,但是不能注册新服务。
注册中心对等集群,任意一台宕掉后,将会自动切换到另一台。
注册中心全部宕掉后,服务提供者和消费者仍能通过本地缓存进行交互。
伸缩性:
注册中心为对等集群,可动态添加部署实例,所有客户端自动发现新的注册中心。
服务提供者无状态,可动态添加部署实例,注册中心将新的服务提供者信息推送给消费者。
升级性:
节点说明:
Deployer:自动部署服务本地代理。
Repository:仓库用于存储服务应用发布包。
Scheduler:调度者基于访问压力自动增减服务提供者。
Admin:统一管理控制台。
Registry:服务注册与发现的注册中心。
Monitor:统计服务的调用次数和调用时间的监控中心。