转自醒客视角 autoasm.blog-city.com
一种高性能的消息转发架构
Alex Dou
摘要 本文介绍了一种基于多路选择和逆向路由方式的消息转发架构,该架构具有更大的吞吐量,更好的可伸缩性和更小的响应延迟。
关键词 分布式 消息 转发 高性能 软件架构
1. 消息转发的应用与挑战
无论是在Internet业务中还是电信系统的核心交换系统,都使用了各种类型的消息转发代理。如下图
图1.1
上图表示了一个典型的即时消息服务的架构。由于PC1和PC2都位于带地址转换功能的防火墙后,所以,这两个客户端不能直接建立连接。一种简单的解决方法是利用消息服务器转发。首先,PC1与PC2都与消息服务器建立并保持连接。PC1先将消息发送给消息服务器,然后消息服务器再根据消息中的目的地址信息将消息转发给PC2。
除了即时消息服务外,电信交换系统中的各种网关以及网络游戏服务器等都有转发大量消息的需求。
在不考虑规模可伸缩性的情况下,实现消息转发是非常简单的。下面伪代码描述了一个最简单的实现。
//Get Request
Request req = conn1.getRequest();
//Search route table for destination connection
Connection conn2 = routeTable.getConnByAddr(req.getDestination());
//Forward request
conn2.send(req);