Netty学习总结(6)——Netty使用注意事项
2017-09-20 10:57
393 查看
什么是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.注意以上两点服务器的性能和内存都会得到比较好的控制。
相关文章推荐
- Git学习总结(14)——Git使用前的注意事项
- Git学习总结(14)——Git使用前的注意事项
- OC学习,self使用总结和注意事项,理解类和对象,使用self进行理解非常好
- [学习笔记]寄存器使用注意事项
- 子网掩码与子网划分 注意事项、学习要点及其总结
- DDR 注意事项、学习要点及其总结
- wss4j+xfire+spring 学习总结四(终极注意事项)
- C++ Primer学习笔记:引用的使用注意事项
- EIGRP 注意事项、学习要点及其总结
- Windows Azure服务购买,收费,使用注意事项及学习资料推荐
- PPP 注意事项、学习要点及其总结
- PowerDesigner 15/12.5 使用注意事项总结
- 如何寻找使用案例及其注意事项,学习笔记
- OSPF 注意事项、学习要点及其总结
- 帧中继 注意事项、学习要点及其总结
- NAT 注意事项、学习要点及其总结
- struts使用总结一:慎用actionServlet成员变量,actionServlet生命周期,actionForm生命周期,struts上传注意事项
- VLAN 注意事项、学习要点及其总结(笔记)
- PowerDesigner 15/12.5 使用注意事项总结
- DHCP 注意事项、学习要点及其总结