Netty学习总结(6)——Netty使用注意事项
来源:互联网 发布:python ipython 编辑:程序博客网 时间:2024/05/22 00:35
什么是netty?
1、Netty 采用了Reactor模型(异步非阻塞)取代Selector模式(同步非阻塞)
Reactor模式是事件驱动的,有一个或多个并发输入源,有一个Service Handler,有多个Request Handlers;这个Service Handler会同步的将输入的请求(Event)多路复用的分发给相应的Request Handler,Request Handler的操作都是异步的,在此期间程序可以向下继续执行,而通过Future-Listener机制可以将相应的处理状态回调。
Reactor多线程模型
Reactor主从模型
主Reactor用于响应连接请求,从Reactor用于处理IO操作请求!
2、Netty的高效并发编程主要体现在如下几点:
1) volatile的大量、正确使用;
2) CAS和原子类的广泛使用;
3) 线程安全容器的使用;
4) 通过读写锁提升并发性能。
3、Netty除了使用reactor来提升性能,当然还有
1、零拷贝,IO性能优化
2、通信上的粘包拆包
2、同步的设计
3、高性能的序列
Netty怎么用?
1、ChannelInboundHandlerAdapter已被ChannelHandlerAdapter取代
2、channelActive()方法将会在连接被建立并且准备进行通信时被调用。
3、channelRead()方法将会在收到消息时被调用
Netty客户端代码
Netty Client Handler
Netty服务端代码
Netty Server Handler
我们从Netty服务器代码来看,与Reactor模型进行对应!
EventLoopGroup就相当于是Reactor,bossGroup对应Reactor,workerGroup对应从Reactor
TimeServerHandler就是Handler
child开头的方法配置的是客户端channel,非child开头的方法配置的是服务端channel
Netty也要注意几个关键点
1.Handler里面不要做费时的IO/计算操作,最好是自己添加线程池处理比较费时的IO/计算
2.ChannelOption一定要注意设置ChannelOption.WRITE_BUFFER_LOW_WATER_MARK和ChannelOption.WRITE_BUFFER_HIGH_WATER_MARK
3.注意以上两点服务器的性能和内存都会得到比较好的控制。
- Netty学习总结(6)——Netty使用注意事项
- Netty学习总结(1)——Netty入门介绍
- Netty学习(一)—基本使用
- Netty学习总结(2)——Netty的高性能架构之道
- Netty学习总结(3)——Netty百万级推送服务
- netty 使用注意事项
- netty ChannelInboundHandlerAdapter 使用注意事项
- Netty学习总结(5)——Netty之TCP粘包/拆包问题的解决之道
- Netty学习总结
- Java Netty 学习笔记(二)使用Netty编程
- Netty API使用总结
- Netty学习(二)—拆包粘包问题
- Netty学习(四)—LengthFieldBasedFrameDecoder解码器
- Netty学习(六)—WebSocket通信
- Netty学习笔记—helloWorld
- Netty—基本使用介绍
- Netty 学习(6)Netty Example 计算序列的阶乘
- Netty与Marshalling结合发送对象—Netty学习二
- placeholder兼容
- Kylo 0.8.3 安装
- 【基础中心】笔记十--mybatis插入时间
- 区块链技术性感依旧:咔咔房链想吃REITs这个大蛋糕
- 实例展示elasticsearch集群生态,分片以及水平扩展
- Netty学习总结(6)——Netty使用注意事项
- Linux ssh exit,启动的后台进程不会停止
- kaggle Titanic泰坦尼克
- C#批量写入MySQL100w条数据
- java8 lambda表达式原理
- 利用poi完成导出excel功能
- ubuntu Git升级
- TabLayout的使用
- 【选择排序】