netty学习总结
一、前言
??? 原本高性能的server一般是用c写的,后来java提供了nio aio,所以现在用java来写也算是个可行的方案。
二、高性能server要解决的问题
??? 1、异步socket
??? 2、异步IO
??? 3、多协议支持(传输层之上)
??? 4、减少内存碎片
??? 5、减少锁的影响
??? ……
三、netty的解决方案
??? 1、使用java的nio,最好是aio(内核直接支持)
??? 2、封装了promise,实现了基于回调的异步io
??? 3、架构上区分了reactor层、pipeline层、协议层和逻辑层
??? 4、封装了ByteBuf,自己来管理内存,而不是完全依赖jvm
??? 5、单个socket只在一个线程上处理、避免不必要的线程调度开销
四、欠缺的部分
??? 1、类似于lua、python等脚本语言的协程(coroutine)的支持,这样可以用同步化的代码实现异步化的效率,callback嵌套的代码实在是蛋疼
??? 2、符合promise架构的,异步的 数据库访问、redis访问、文件访问等
??? 3、rpc协议和实现
原文:http://eric-weitm.iteye.com/blog/2282404