软负载中心学习

1、软负载中心的基础职责

(1)聚合地址信息。聚合地址列表,形成一个可供服务调用者及消息发送者、接受者直接使用的列表。

(2)生命周期感知。能对服务的上下线自动感知,并根据变化更新服务地址数据,形成新的地址列表后,把数据传给需要数据的调用者或消息的发送者和接收者。

2、软负载中心的结构

(1)服务端:感知提供服务的机器是否在线,聚合提供者的机器信息,并负责把数据传给使用数据的应用。

(2)客户端:承载了两个角色,作为提供者,把服务提供者提供服务的具体信息主动传给服务端,并随服务者的变化来更新数据。作为使用者,向服务端告知自己所需要的数据并负责去更新数据,还要本地缓存,提升效率和性能。

3、软负载中心内部有三部分数据

(1)聚合数据:聚合后的地址信息列表。

(2)订阅关系:服务的使用者把自己需要的数据信息告诉软负载中心,这就是一个订阅关系。

(3)连接数据:连接到软负载中心的节点和软负载中心已经建立的连接的管理。

4、内容聚合功能的设计

内容聚合要完成的功能有两个:

(1)保证数据正确性:主要是保证并发场景下数据聚合的正确性。

(2)高效聚合数据

聚合的常规方式可以使用一个Map结构来进行数据管理,用dataId和数据分组的Id作为key,聚合后的数据为Value。

5、服务上下线感知的实现方式

(1)通过客户端与服务端的连接感知:数据的发布者和接收者都与软负载中心的服务器维持一个长连接。对服务提供者,软负载中心通过这个长连接上的心跳或者数据的发布判断发布者是否在线。对于新上线的发布者,通过连接建立和数据发布就实现了上线的通知。可能存在的问题:软负载中心负载很高时,可能产生误判。发布者到软负载中心的网络链路有问题,而服务发布者到服务使用者的链路没问题,也会造成感知的问题。

(2)通过对于发布数据中提供的地址端口进行连接的检查:当长连接判断服务下线时,不直接认定服务已下线,交给另一个独立的监控应用去验证。

参考书籍:《大型网站系统与Java中间件实践》

猜你喜欢

转载自blog.csdn.net/Linda_Lindaaaa/article/details/89227585