消息转发

基于NIO的消息路由的实现(一) 前言

血红的双手。 提交于 2019-12-09 11:52:27
一、前言: 已经很久没有碰编码了,大概有9年的时间,日新月异的框架和新东西让我眼花缭乱。之前一直在做web相关的应用。由于项目不大,分布式开发在我编码的那个年代里没有做过,后来走上管理岗位才接触到,仅限于沟通交流和方案的策划,并没有真正的做过。如今我有了一点时间和精力,决定自己学习一下,先从简单的消息通讯开始吧。 好,背景完毕!下面说说我想做的东西,我想做一个基于NIO的消息路由,而并不基于目前已有的各种优秀框架(mina,netty等等),这么做的初衷也许跟我个人的习惯有关,我总是觉得如果不明白原理,即使再好的框架当遭遇问题的时候,我也会无从下手,如果我懂得了原理,再选用其他的框架,也会更得心应手。所以才没有使用现今那些优秀的框架,或许是我的一点点偏见吧。 我的代码已经发布在 http://git.oschina.net/java616 目已经完成根据客户端的标识进行消息的异步转发,仍会持续的迭代和增加。有兴趣的可以下载回去,如果我有做的不好或者不对的地方,敬请指出。 二、一些概念和例程 NIO是啥我就不说了,我们来看一下我理解的NIO工作流程,如图: 上图为我所理解的NIO的工作过程,如果存在问题,请批评斧正。概括一下我的理解: SocketChannel:为NIO工作过程中,数据传输的通道,客户端与服务端的每次交互都是通过此通道进行的; Selector(多路复用器)