码迷,mamicode.com
首页 > 其他好文 > 详细

基于NIO的消息路由的实现(三)服务端与客户端结构

时间:2015-08-18 12:27:34      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

一、服务器端结构:

如图所示:

技术分享

  • 指令类和报文类:对下行的指令和上行的报文进行了类的封装,分别实现IOrder和IPacket接口,继承Order,Packet基类;

  • 服务主线程:接受客户端连接,将客户端发送的报文投递到通讯队列中,发送指令给客户端;保存连接对象(GVConnection)

  • 通讯队列CQ:存储客户端发送过来的报文,此报文由通讯主线程放入;

  • 通讯队列消费者:对通讯队列中的报文进行处理,该做什么做什么,如果是短消息,则放入消息队列MQ中单独处理;

  • 消息队列消费者:对MQ中的短消息进行处理;如果转发的目标客户端没有通道(channel),那么就存入redis。(此部分目前尚未实现)

  • 通道清理线程,针对超时的通道,已关闭的通道进行定期清理;此部分应该有更好地实现方式,请大家帮忙想想吧。

二、客户端结构:

技术分享


  • 指令和报文类同上;

  • 链路维护线程:每隔一定的时间发送给服务端K报文,用于链路检测,如果超过服务端的连续回应次数超过一定的限制(比如,连续三次没有回应),那么,视为已经掉线;

  • 短线重连线程:两种情况会引发重连:1、服务端主动切断通道;这来是可捕获的;2、异常中断(依靠链路维护);


基于NIO的消息路由的实现(三)服务端与客户端结构

标签:

原文地址:http://my.oschina.net/u/2397619/blog/493803

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!