关于维持AsyncTcpConnection链接的问题

灰灰灰狼

架构如图所示
[attach]1740[/attach]
问题在于图中红色部分。
 
BW在 onWorkerStart 发起 AsyncTcpConnection​ 连接逻辑层,在 AsyncTcpConnection 的 onConnect 回调中,开启定时器发送心跳连接和处理任务.
 
如果心跳连接的频率过快,或者说 BW与逻辑层 频繁的双向通讯,会阻塞BW进程吗?比如:GW和逻辑层同时发送信息过来,是会同时处理还是会谁先就处理谁的先?
 
看了异步任务里面的demo,都是接收到数据就关闭连接,由于 BW与逻辑层是频繁的双向通讯,如果收到数据就关闭连接,这样BW和逻辑层两边都得频繁发起连接,感觉会加重负担。
我的想法是,每一个BW发起的一个异步连接逻辑层(仅此一个),BW里面有一个任务队列,任务队列通过这个连接发送任务与接受结果(此处不阻塞BW与GW的通讯),接受到结果,再把结果主动推送到客户端上。
 
模拟一下场景,ABCD连接到GW,A发送‘踢掉D连接’给GW,GW收到信息转发给BW,BW收到信息立马回复'消息已收到',然后把A的消息压入任务队列,此时BW里面的AsyncTcpConnection正在发送任务给Logic层,那么这时候A的消息能不能压入任务队列?Logic层收到任务,处理到一半通知BW‘踢掉D连接’,然后又通知BW'顺带踢掉C'(这里可能是主动通知),后面又可能因为A的消息,Logic层会间断的主动通知BW踢人
 
 
 
 
 
 

2540 1 0
1个回答

walkor

是否阻塞BW进程和通许频率没有关系。
哪个消息先收到先处理哪个消息,单个进程内不会有并发处理的情况,单个进程内业务处理都是串行的,不会出现一个消息处理一半被其它消息影响的情况。

  • 暂无评论
年代过于久远,无法发表回答
🔝