背景
一些机构对于应用系统架构安全性的考虑,不允许系统A与系统C直接通讯直连,需要经过部署于DMZ区(Demilitarized Zone 防火墙隔离区,可以作为外部网络和内部网络之间的缓冲区,加强系统架构安全性)的应用中转。
有些应用因为改造成本过高,通讯方式固定,例如只允许通过TCP的长连接接入,此时需要一个中间层应用进行通讯转化
需求分析
作为中间层的透传模块,根据上下游应用的通讯方式不同,有以下的情况:
术语说明
单工:一条链路只发送数据/只接受数据
双工:一条链路既发送数据又接受数据
单工-异步长连接:单工、异步,意味着有两条链路,一条链路用于发送数据,另一条链路用于接收数据
FAQ
单工的异步长连接有什么优点?
可以提高系统吞吐量,某条链路可以只负责发送数据/只负责接收数据。
系统设计
长转长
划分为与上游对接的部分与下游对接的部分,和上下游都是单工-异步长连接,启动应用时进行如下工作:
server 1监听端口,接受上游来的请求(图示有两条链路则监听两个端口)
client 1与上游server建立长连接,保存连接信息
server 2监听端口,接受下游返回的响应
client 2与下游server建立长连接,保存连接信息
消息传递流程:
上游client发起请求 --> server 1接受到请求后获取client 2建立好的长连接转发请求给下游 --> 下游server接受到请求后让下游client返回响应给server 2 --> server 2接受到响应后获取client 1建立好的长连接转发请求给上游
注:此种实现方式可以实现应用层协议无关的长连接转长连接
长转短
划分为与上游对接的部分与下游对接的部分,上游是单工-异步长连接,下游是双工-同步短连接,启动应用时进行如下工作:
server 1监听端口,接受上游来的请求(图示有两条链路则监听两个端口)
client 1与上游server建立长连接,保存连接信息
消息传递流程:
上游client发起请求 --> server 1接受到请求后获取新建client 2客户端同时转发消息给下游 --> 下游server接受到请求返回响应给client 2 --> client 2接受到响应后获取client 1建立好的长链接,转发响应给上游server
注:此种实现方式可以实现应用层协议无关的长连接转短连接
短转长
划分为与上游对接的部分与下游对接的部分,上游是双工-同步短连接,下游是单工-异步长连接,启动应用时进行如下工作:
server 1监听端口,接受上游来的请求
server 2监听端口,接受下游返回的响应
client 2与下游server建立长连接,保存连接信息
消息传递流程:
上游client发起请求 --> server 1接受到请求后获取client 2建立好的长连接转发请求给下游 --> 下游server接受到请求后让下游client返回响应给server 2 --> server 2接受到响应后解析报文获取message Id,根据message Id获取上游短连接的链路
注:目前版本的短连接转长连接还是无法实现应用层协议无关的转发,待后续改造升级
短转短
分为与上游对接的部分与下游对接的部分,上下游都是双工-同步短连接启动应用时进行如下工作:
server 1监听端口,接受上游来的请求
消息传递流程:
上游client发起请求 --> server 1接受到请求后新建客户端client 1与下游server建立连接转发消息,同时client 1保存上游的短连接链路 --> 下游server接受到请求返回响应给client 1 --> client 1接收到响应后转发回上游
注:此种实现方式可以实现应用层协议无关的短连接转短连接
评论区