在《消息顺序性为何这么难?》中,介绍了一种为了保证“所有群友展示的群消息时序都是一致的”所使用的“ID串行化”的方法:让同一个群gid的所有消息落在同一台服务器上处理。

ID串行化是如何实现的呢?

互联网高可用常见分层架构

image.png

客户端,反向代理层,接入层,服务层,存储层,这是互联网常见的高可用分层架构。

这里的“服务层”至关重要,ID串行化保证的是,同一个群gid的消息落在同一个服务上。

画外音:服务集群有很多节点,如果能落在同一个服务节点上,就可以利用这个服务节点做消息串行化。

服务层上下游细节

服务一般由RPC框架实现,上游调用方是多线程程序,通过RPC-client访问服务,而RPC-client内部又通过连接池connection-pool来访问的。

画外音:为了保证高可用,连接池会对集群中的每个服务都建立连接。
image.png

如上图:

(1)上游是业务应用;

收藏 打印