6.1 初识软负载中心
在服务调用的框架中的提供服务的ip是通过软负载中心来实现消息中间件中消息的发布者、订阅者对于消息中间件机器的感知都是通过软负载中心实现的,如下图:
从图上2个方面的调用关系中软负载中心的核心功能有2个:
- 聚合地址信息
无论是服务框架中服务提供者的ip地址 还是消息中间件系统中的消息中间件的地址,都需要去软负载中心获聚合地址列表,形成一个可供服务调用者、消息发送者或者接受者可以直接使用的IP地址列表。
- 生命周期感知
软负载中心需要对服务的上下线自动感知,并且根据这个变化去更新服务地址数据,形成新的ip地址列表;把更新的数据传输给服务的调用者、消息的发送者和接收者;
6.2 软负载中心的架构
软负载中心是采取的C/S 架构,服务端主要是监控提供服务机器的状态、聚合提供服务的ip地址,并把地址列表信息实时推动给订阅者;
客户端有2个角色:
1). 服务提供方的客户端:把提供服务的基本信息发送给服务端,并及时把服务提供者的数据变化同步给服务端
2). 服务使用方的客户端:要告诉服务端服务调用着需要的ip 地址,并负责缓存数据并完成缓存数据的回源更新
6.3 解决服务上下线的感知
软负载负责可用的服务列表,当服务可用时可以把服务加到服务列表中,当服务不可用时需要从服务列表中删除。这样也是软负载中心和硬件负载中心(需要配置化操作来更新数据) 最大的优点。
- 具体实现肯定是通过健康的感知(client 的监控进程进行汇报,或者主动的进行远程服务的健康检测)
- 感知到的数据需要及时更新到client 本地的cache 中
6.4 数据的分发
client 订阅了消息后,服务端要把消息数据发送给client;现在上下游服务的感知是实时的,那实时的就会发送给client;
如果数据量达到一定的程度,就需要考虑全量更新和实时更新了;
6.5 针对服务化的个性支持
- 分组:通过数据dataid和分组group 来确定唯一的数据,分组可以理解为一种最简单的命名空间,这个这个分组内dataid是唯一的;分组还有一个非常重要的作用就是优先级,可以把优先级不同的消息数据放到不同的分组内部
6.6 集中配置管理中心
软负载中心除了管理服务地址列表之外,路由规则和消息的订阅关系都保存在软负载中心。这些数据特性并不相同,我们可以根据数据是否持久化保存、是否需要聚合来进行分类
- 持久就是指数据本身与联发布者的生命周期无关,典型的就是持久订阅关系、路由规则、数据访问层的分库、分表规则和数据库配置等。
- 非持久:指和发布者生命周期有关的,比如服务地址列表
- 聚合数据:服务地址列表、订阅关系都需要聚合,这样的数据叫做聚合数据
- 非聚合数据:比如数据库的分库分表规则、路由规则都不需要聚合叫做非聚合数据
我们按照数据是否持久化进行划分:
- 软负载中心管理是非持久化的数据
- 集中配置管理中心管理的是持久化的数据
集中管理 配置中心因为保存的都是各个应用集群、中间件配置的关键信息,所以对于集中配置管理中心来说,最重要的是稳定性和各种异常情况下的容灾策略,其次才是性能也数据分发的延迟性。配置管理中心统一进行控制这些数据