通道类型系统设计及实现思考
通道类型系统
通道类型系统,是指为真正执行业务的双方或多方提供通讯通道的系统,如一个系统中的通讯层。
通道类型系统非功能性要求
- 稳定性
- 可扩展性
稳定性——通道类型系统一般有较高的稳定性要求,实时类系统尤甚。因为通道类系统的主要功能是为业务系统提供通道,通道一断,业务即中断。这就要求通道类型系统要尽量少重启,但这又和可扩展要求有冲突。
可扩展性——业务通常是多变的。通道类型系统必须支持业务变化,经常需要新增接口或变更接口字段,这些都对通道类型系统的可扩展性提出较高要求。
如何满足非功能性需求
通用接口设计
首先,定义一个通用业务接口框架。如采用json格式,定义为:
cmd:
'COMMON_REQ'
data:
json格式业务数据
json格式业务数据中,再区别不同业务,定义为:
busiCmd:
'业务cmd'
busiData:
'业务数据'
这样的业务接口框架设计,可以保证在扩充业务(即增加busiCmd)及业务变更(即修改busiData)情况下,通道类系统不需做更改,满足了可扩展性又不失稳定性。
剥离分发操作
通道类系统,主要作用是处理业务请求的分发操作。当一个请求过来,通道类系统需要判断这个是什么业务请求,然后分发给对应业务系统处理。分发模块在业务扩充的情况下,经常需要变更,这不利于系统的稳定性。
我们可以把分发模块剥离出来,单独做成一个系统,当有业务扩充时,只需要变更分发系统,不需要改动通道系统。同时,剥离后,分发系统可以做成多节点部署,这样可以保证在升级分发系统情况下,不影响业务。