Netty·Netty 服务器
Netty 服务器
Netty 是一个提供了易于使用的 API 客户端/服务器框架。特性:
- 高并发 – NIO(非阻塞 IO)
- 传输快 – 零拷贝
Netty 服务器流程:
- 构建一对主从线程组
- 定义服务器启动类
- 为服务器设置 Channel
- 设置处理从线程池的助手类初始化器
- 监听启动和关闭服务器
Netty Server
Netty Server Initializer
ChatHandler
Netty Booter
概念
ChannelInboundHandlerAdapter vs SimpleChannelInboundHandler
SimpleChannelInboundHandler是有泛型参数的
,可以指定一个具体的类型参数,通过 decoder 配合使用,非常方便。ChannelInboundHandlerAdapter
则是直接操作 byte 数组的。
类的关系:
可以看出 SimpleChannelInboundHandler
是继承 ChannelInboundHandlerAdapter
的,也就是说 SimpleChannelInboundHandler
也拥有 ChannelInboundHandlerAdapter
的方法。
一般而言业务代码 SimpleChannelInboundHandler
写在 channelRead0
方法中,而 ChannelInboundHandlerAdapter
写在 channelRead
方法中,注意后面有 0 后缀区别。
SimpleChannelInboundHandler
对 channelRead
的重写:
SimpleChannelInboundHandler
的 channelRead
相比 ChannelInboundHandlerAdapter
而言,主要做了类型匹配以及用完之后释放指向保存该消息的 ByteBuf 的内存引用。
如果说 channelRead 都是同步操作的话,SimpleChannelInboundHandler
是不错的选择,如果操作是异步的话,那他的逻辑就有点麻烦了,例如你把数据交给另外的线程处理了,还没处理就会释放了,这时候 ChannelInboundHandlerAdapter
处理自由的优点也就提现出来了,可以更好的处理更多的特定场景。
SimpleChannelInboundHandler
的好处是可以处理不同的类型对象,并且可以做释放。ChannelInboundHandlerAdapter
的好处则是更自由,在异步的场景下更适合。
参考文章:
从零开始学 netty
金点网络-全网资源,一网打尽 » Netty·Netty 服务器
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
- 是否提供免费更新服务?
- 持续更新,永久免费
- 是否经过安全检测?
- 安全无毒,放心食用