基于Netty5.x的轻量级http服务器——CoolBreeze

一.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) 异步非阻塞 无需轮询/回调

基于Netty5.x的轻量级http服务器——CoolBreeze_第1张图片



四.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.优雅停机


六.基本架构


基于Netty5.x的轻量级http服务器——CoolBreeze_第2张图片       

七.服务化


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.开源社区化



十一.说明

  1. 目前使用还需要添加netty的jar包,后面会解决这个bug。

  2. 工作时间有限,先分享本人组内技术分享的ppt内容,后期再慢慢开源,包括使用手册。

  3. 目前使用siege简单压测,单端口QPS能达到700左右。






你可能感兴趣的:(基于Netty5.x的轻量级http服务器——CoolBreeze)