Pigeon中的Netty应用
来源:互联网 发布:淘宝服装店如何推广 编辑:程序博客网 时间:2024/06/11 20:54
一.Netty与Pigeon交互图
二.关键类解释
2.1 Server
Server是Pigeon对服务器的抽象,每个Server对应一个Netty的服务器,并负责处理该 Netty服 务器接收的所有请求
addService(); 该方法在服务启动流程中已经解释,通过addSerivce添加提供的服务 processRequest 提供处理请求的能力
2.2 NettyServer
NettyServer作为Pigeon服务的入口类,一方面 NettyServer通过继承实现了Server接口的AbstractServer拥有添加service和处理request的能力 ; 另一方面NettyServer通过持有bootstrap对象完成服务器的启动以及相关资源的管理。
ServerBootStrap是Netty提供的服务启动工具类,本质上就是开启了一个socket端口, channelFactory则是传入的channel工厂类。
NettyServerPipelineFactory则是封装Pigeon定制的协议处理流程.在Pipeline中完成了从字节流到request的过程
2.3 NettyServerPipelineFactory
pipeline处理流程
pipeline的模式设计是责任链和事件驱动的融合.
责任链类似于一个filter的过程,单纯的责任链模式要求handler保持单一的处理接口。通过加入事件驱动,就是将数据封装成一个个事件,并且后续handler的调用方法由前一个handler触发的事件决定。
比如handler1 接收到一个event2事件就会调用handleEvent2()方法,处理完成后调用fireEvent3触发一个event3事件,这个事件就会调用后续handler2的handleEvent3方法
三 Pigeon协议
Pigeon的通信协议全部可以在2.3中的handler链条中看到。
FramePrepender 简单的判断,拦截了一些非法的请求FrameDecoder 完成tcp粘包的处理,以及版本之间的兼容Crc32Handler 完成了数据完整性的校验CompressHandler 数据的压缩和解压缩ProviderDecoder 编码NettyServerHandler将编码后的请求交给server处理
四.总结
NettyServer通过ServerBootStrap启动一个服务器,服务器每新建一个连接就会通过channelFactory创建一个channel , channel内的数据流经过handler责任链的处理,被序列化成为一个Request对象,在最后一个处理请求的NettyServerHandler中调用NettyServer的processRequest方法,从而完成一个网络请求到Pigeon服务调用的过程
Server的实例需要在handler使用,因此通过Server接口,将Netty相关的部分隔离开。
- Pigeon中的Netty应用
- Pigeon中的负载均衡
- Pigeon中的流量限制
- [netty]--Reactor线程模型以及在netty中的应用
- nio框架netty在项目中的应用
- netty在游戏服务器开发中的应用
- netty应用
- pigeon服务
- netty(七)netty入门应用
- netty源码分析(六)Reactor模式透彻理解及其在Netty中的应用
- netty在游戏服务器开发中的应用(一)
- 对Java多线程在Netty中的应用的理解
- 分隔符和定长解码器在netty中的应用
- chapter21 Java多线程编程在Netty中的应用
- Netty入门应用
- 开发Netty应用
- Netty简单应用
- Netty复杂应用
- 1692 魔板
- 鸟哥的linxu私房菜博客目录
- 开源实时日志分析ELK平台部署
- 查找算法
- 团体程序设计天梯赛L2-005 集合相似度
- Pigeon中的Netty应用
- Tegra K1问题记录
- 九度OJ-1431:Sort
- AndroidStudio之Gradle初解
- string类的浅拷贝,深拷贝,写实拷贝
- ScriptX控件如何在不跳转页面的情况下将要打印的内容打印出来
- Maven国内仓库地址
- 保存app errorlog到sd卡中
- X-Content-Type-Options