作者:杨步涛
技术Blog:http://blog.csdn.net/yangbutao
github:https://github.com/yangbutao/xlongc长连接需要注意的事项
长连接最大的问题是对于连接池中连接的维护,连接池中的连接保持一定大小,当少于阀值时,则在获取连接时,自动创建新的连接,并添加到连接池中;连接池中的连接采用RR算法获取。
维护连接池需要应对IO类的异常(SocketTimeoutException、IOException)的情况,确保获取的连接是正常的连接;异常情况主要有:在建立连接时出现异常,需要采取重试策略,超过重试次数,清除连接池中的该连接,还有是在IO过程中出现异常,关闭并清除连接池中的该连接。
架构说明
架构图
客户端实现
客户端socket IO是基于NIO事件驱动的,底层封装了相关的java NIO 模型,比如Selector、SelectionKey、SocketChannel等,通过接收OP_CONNECT、OP_READ、OP_WRITE事件来实现IO操作。
同时客户端调用又是同步的,发出请求后,一直等到结果返回直到超时或者异常。
下面简