1.架构
1.1 服务角色介绍
Provider:暴露服务的服务提供方。
Consumer:调用远程服务的服务消费方。
Registry:服务注册和服务发现的注册中心,存放服务提供方的服务发布信息,调用地址,协议类型等。
Monitor:统计服务的调用次数和调用事件,进行分析和统计服务的压力等性能问题。
Container:服务运行的容器,也可以理解为:RPC服务器。
1.2 服务调用关系
服务容器Container:负责区解决启动Rpc服务器和加载服务提供信息和启动服务提供者。
服务提供者Provider:负责向注册中心Registry组件去注册自己的提供的服务,并且会在内存中统计服务调用次数和服务调用时间,每分钟推送服务定时推送信息到健康中心。
服务消费者Consumer:负责向注册中心Registry组件去消费获取自己所需要的服务,根据软负载均衡进行构建调用服务方案,如果调用失败,则采用failover机制,切换为其他服务提供者的服务。并且会在内存中统计服务调用次数和服务调用时间,每分钟推送服务定时推送信息到健康中心。
注册中心Registry:负责向返回服务提供者列表给服务消费者,建立长连接机制进行构建推送服务消费者实时更新服务信息。
1.3 服务连通性
(1)服务提供者和消费者:服务注册中心和服务消费中心只有在启动的时候,与注册中心交互,注册服务和获取订阅服务等。
(2)注册中心采用的目录服务JNDI协议进行构建服务的查找和注册功能。
(3)服务注册中心和消费中心、服务注册中心三者之间均为长连接、监控中心除外。
(4)服务注册中心通过长连接进行交互服务提供者,服务提供者出现宕机,注册中心,会立刻通知服务消费着,服务消费者会即可进行服务降级和服务的恢复
(5)服务注册中心、监控中心宕机,不会影响服务消费着和提供者,会有内部缓存列表进行服务调用。
(6)服务提供者和服务消费着可以进行直接调用,所以服务监控中心和服务注册中心,不是必需。
(7)服务提供者会每分钟定时汇报服务调用时间和次数到监控中心、同时在启动的时候注册服务信息到注册中心。
(8)服务消费者,会在启动的时候,获取注册中心相关的服务信息列表,然后根据SLP技术,进行服务负载均衡,获取其中一个服务的信息调用服务。同时每分钟会定时上报服务调用时间到服务监控中心。
1.4 服务健壮性
健康中心宕机只会影响数据丢失的完整性,不会出现不可用的情况。
注册中心具有failover机制进行故障切换功能对等集群。
服务提供和服务消费,可以通过本地缓存进行继续通信,即使注册中心全部宕机,服务提供者为无状态化服务,即使服务宕机不影响其他服务使用,如果全部挂了,则客户端消费会进行无限次尝试重新连接调用,直到服务提供者恢复。
1.5 服务伸缩性
注册中心可以长连接时时更新服务提供者到服务列表中。
其中有几点:
服务Deployer,可以自动部署服务本地代理。
服务Repository,仓库基于存储服务的开发包。
Scheduler调度中心:基于服务的压力,动态增减服务提供实例。
admin:统一控制台。