netty
netty版本大致版本分为 netty3.x 和 netty4.x、netty5.x
netty可以运用在那些领域?
1分布式进程通信
例如: hadoop、dubbo、akka等具有分布式功能的框架,底层RPC通信都是基于netty实现的,这些框架使用的版本通常都还在用netty3.x
例如: hadoop、dubbo、akka等具有分布式功能的框架,底层RPC通信都是基于netty实现的,这些框架使用的版本通常都还在用netty3.x
2、游戏服务器开发
最新的游戏服务器有部分公司可能已经开始采用netty4.x 或 netty5.x
最新的游戏服务器有部分公司可能已经开始采用netty4.x 或 netty5.x
1、netty服务端hello world案例
SimpleChannelHandler 处理消息接收和写
{
messageReceived接收消息
{
messageReceived接收消息
channelConnected新连接,通常用来检测IP是否是黑名单
channelDisconnected链接关闭,可以再用户断线的时候清楚用户的缓存数据等
}
}
2、netty客户端hello world案例
channelDisconnected与channelClosed的区别?
channelDisconnected只有在连接建立后断开才会调用
channelClosed无论连接是否成功都会调用关闭资源
channelClosed无论连接是否成功都会调用关闭资源
1、一个NIO是不是只能有一个selector?
不是,一个系统可以有多个selector
2、selector是不是只能注册一个ServerSocketChannel?
不是,可以注册多个
1、如何去看一个开源的系统框架
一断点
二打印
三看调用栈
四搜索
二打印
三看调用栈
四搜索
一个thread + 队列 == 一个单线程线程池 =====> 线程安全的,任务是线性串行执行的
线程安全,不会产生阻塞效应 ,使用对象组
线程不安全,会产生阻塞效应, 使用对象池
netty之心跳
1、学习idleStateHandler
用来检测会话状态
2、心跳其实就是一个普通的请求,特点数据简单,业务也简单
心跳对于服务端来说,定时清除闲置会话inactive(netty5) channelclose(netty3)
心跳对客户端来说,用来检测会话是否断开,是否重连! 用来检测网络延时!