通用服务平台之通信子系统
通信子系统是通用平台重要模块构件之一,负责整个平台内部通信功能。本篇将简介通信子系统设计相关细节。
1. 通信子系统意义
服务间直连
大多数系统服务间基本都采用直接连接方式进行通信,该方式优缺点分析如下。
优点:1. 通信节点少,延迟低。2. 便于逻辑处理,有些业务处理很可能附加在链路状态上,所以该类方案有天然逻辑处理优势。
缺点:1. 各服务都需要维护大量系统数据,且需要进行数据同步。2. 如果后向服务规模较大,需要维护多根通信链路,对服务处理性能不利。3. 服务间通信是多对多的连线,不便于维护。
通用平台基于上述考虑,决定引入通信子系统将各服务之间直接连接转化为各服务只需要链接本机房的通信服务,发送数据时设置好接收者,发送至通信子系统,子系统会忠实执行发送任务将数据包发送至接收者。通信子系统优缺点分析如下。
优点:1. 业务服务从维护多条链路的复杂情况降低至仅维护几条通信子系统链路简单情况,提高了业务服务性能和可维护性。2. 业务服务不再需要维护大量关联服务系统数据,仅需要少量业务相关服务基本信息即能正常工作。3. 在某些情况下能提高效率省略中间节点,如出于业务系统保护机制某类型服务可能处于较深层次中,回传处理结果时传统处理是依照请求时链路原路依次返回,有了通信子系统作隔离可以实现一步跨越直接到达目的服务,提高了处理性能。4. 服务间网状连接的情况被规范,收纳,机房间也同样如此,便于管理维护。
缺点:1. 延迟相对直连要高,多了中间环节。2. 由于不是直连,有些附加在链路上的逻辑处理需要其他解决方案支持实现。
虽然引入通信子系统也依然存在不小得弊端,但是该子系统提高了业务服务性能,简化了业务服务链路维护处理逻辑,个人觉得还是利大于弊,通用平台引入通信子系统还是有其实用价值。
2. 通信子系统设计原则
(一)通信子系统被设计为以机房为单位,机房与机房间通信由少量服务之间直接通达,这么设计好处是便于维护管理,仅需要确保这几个通讯点正常整个系统就能正常运行,避免了服务之间直连造成机房间多点通信不便维护局面,
(二)通信服务分为两类,一类只负责机房内通信,为应用服务提供通信功能,类似代理功能。另一类为机房间通信提供服务,负责与其他机房同类服务互相通信,原则上不直接与应用服务直连。
(三)为压缩通信量,简化应用服务逻辑,通信子系统支持单数据包群发功能。
3. 通信子系统工作机制
在讲述通信子系统工作机制之前,先给出通信子系统示意图,示意图更能清楚的展示通信子系统架构,更加直观了解通信子系统运行机制。
如上图所示,基本和上节所述的通信子系统设计原则一致。通信以机房为单位、通信子系统由机房内通信节点和机房通信节点组成,机房内节点负责本机房所有应用服务通信请求,机房节点负责机房间通信需求。工作机制在展示该示意图后,无需赘述。
4. 关键细节
(一)机房间通信节点和机房内通信节点均为多进程集群式部署,以便适应大机房业务服务较多情况。
(二)机房间通信节点需要链接除自身所在机房以外所有机房的同类型服务,至少需要保持一条链路,如通信量较大可维持多条,考虑负载均衡,可以由协议来协商完成,避免多条链路集中在某单个机房间通信节点出现负载不均衡情况。
(三)机房内通信节点到机房间通信节点为全连接,机房内通信节点需要上报连接业务服务数据,以便机房间通信节点在收到数据包时能正确转发至机房内通信节点。
(四)机房内通信节点相互之间需要同步连接业务服务数据,以便机房内通信保持足够的路由数据能正常通信。
5. 智能化
为了防止某条链路拥堵,造成通信延迟过大,可以设计机房间通信节点相互测速,之后将测速结果数据进行分析,利用最短路径算法,在链路拥堵或直发延迟过大的情况下,智能优化通信链路,降低通信延迟。
以上是关于通信子系统设计相关简介,通信子系统功用就是为了解决一般系统中服务直连带来的各种负面问题而引入,系统规模越大,通信子系统作用越大,小型系统使用通信子系统反而显得冗余过大,这个时候可以将通信子系统进行压缩,将两类服务成一体,既提供机房内通信也提供机房间通信,显得较为紧凑。但如果是大型系统,个人还是建议分开处理更为妥当。系统其余部分构件设计,详见其他章节。