一.What is Netty
1.基于NIO的客户端,服务端编程框架,JBOSS提供
2.提供异步的,基于事件驱动的网络应用程序框架和工具
3.提供多种编解码框架集成,高效网络传输
4.提供方便 快捷的可定制化的私有协议栈开发,如dubbo协议,hadoop的Avro框架
二.Nio概述
理解概念:同步/异步/阻塞/非阻塞
今天中午去吃黄焖鸡
同步阻塞:点餐完毕,然后在那等着,还要一边喊:好了没啊!
同步非阻塞:点餐完毕,就回去工作了,过一会儿,就回饭馆喊一声:好了没啊!
异步阻塞:点餐完毕,就回去工作了,接到饭馆电话,说饭做好了,让你去拿
异步非阻塞:点餐完毕,就回去工作了,饭馆打电话说,我们知道您的位置,一会给您送来
类似:银行排队办理业务
一个io操作实际上分成了两个步骤:
io请求(消息通知)/实际io操作(消息处理)
阻塞/非阻塞 ——发起消息通知是否阻塞(等待消息时的状态)
同步/异步 ——消息处理的过程是否阻塞(消息通知回调机制)
三.四种io区别
BIO—block I/O: 同步阻塞式io 传统的java io
伪IO(非官方说法): BIO+线程池+任务队列
NIO—Non-blockI/O: 同步非阻塞式io 事件注册多路复用器 复用器对通 道进行轮询
AIO: NIO2.0(jdk1.7) 异步非阻塞 无需轮询/回调
四.Netty组件
1.Reactor线程(NioEventLoop)模型
单线程 多线程 主从线程
2.Channel:通讯的载体
3.ChannelHandler:Channel中的逻辑处理
4.ChannelPipeline: ChannelHandler的容器(Servlet Filter)
5.ChannelEvent: 数据或者状态的载体
6.Upstream与Downstream: 上行与下行
7.ChannelContext: Handler的上下文信息
8.ServerBootStrap: 启动器
五.CoolBreeze
1.Http栈的消息编解码器
2.url重写规则
3.轻量级
3.1单机多进程服务
3.2零部署,jar依赖
4.MessageContext内部流转
5.exceptionCaught统一异常处理
6.优雅停机
六.基本架构
七.服务化
1.组件初始化
1.1加载外部服务rewriteRule规则
2.启动服务
2.1Netty启动器ServerBootStrap构建
2.2端口监听
3.服务处理
3.1构建MessageContext
3.2服务定位与方法调用
3.3响应适配
3.4输出响应与关闭通道
八.异常分类
启动类异常
容器启动加载配置时的异常,一般采用直接抛出并优雅停机
运行期异常
容器启动后进行服务时的异常,返回具体的HttpResponseStatus
九.容器比较
比较:
Tomcat Resin 基于servlet3.0实现 功能更强大
CoolBreeze 轻量级 减小开发的复杂度
总结:
1.应用起来都需要优化,但CoolBreeze是自己基于Netty的实现, 更清楚怎么优化。
2.需要根据不同应用场景去利用。
十.Future未来
1.零配置
2.通用性
3.性能
4.零侵入
5.开源社区化
十一.说明
目前使用还需要添加netty的jar包,后面会解决这个bug。
工作时间有限,先分享本人组内技术分享的ppt内容,后期再慢慢开源,包括使用手册。
目前使用siege简单压测,单端口QPS能达到700左右。