赞
踩
在大型企业中有:Apple、Twitter的Finagle、Facebook的Nifty、Google、Square、Instagram
在初创企业中有:做http长连接的Firebase、支持各种各样消息推送通知的Urban Airship
当然,Netty也从这些项目中受益。通过实现 FTP、 SMTP、 HTTP 和 WebSocket 以及其他的基于二进制和基于文本的协议, Netty 扩展了它的应用范围及灵活性。

##Netty基本组件

##Netty核心组件
###1. Channel-Socket
Channel是通讯的载体,其基本构造是Socket
是对网络底层读写和连接原语言的抽象
###2. EventLoop-控制流、多线程处理、并发
定义了 Netty 的核心抽象, 用于处理连接的生命周期中所发生的事件
###注: Channel、 EventLoop、 Thread 以及EventLoopGroup 之间的关系

#####A. 一个 EventLoopGroup 包含一个或者多个 EventLoop;
#####B. 一个 EventLoop 在它的生命周期内只和一个 Thread 绑定
#####C. 所有由 EventLoop 处理的 I/O 事件都将在它专有的 Thread 上被处理;
#####D. 一个 Channel 在它的生命周期内只注册于一个 EventLoop;
#####E. 一个 EventLoop 可能会被分配给一个或多个 Channel
#####F. 一个给定 Channel 的 I/O 操作都是由相同的 Thread 执行的, 实际上消除了对于同步的需要。

###3. ChannelFuture-异步通知
Netty 中所有的 I/O 操作都是异步的,用于在之后的某个时间点确定其结果的方法
###4. ChannelHandler和ChannelPipeline
ChannelHandler负责Channel中的逻辑处理
其旨在简化应用程序处理逻辑的开发过程
充当了所有处理入站和出站数据的应用程序逻辑的容器
ChannelHandler子接口:
ChannelInboundHandler——处理入站数据以及各种状态变化
ChannelOutboundHandler——处理出站数据并且允许拦截所有的操作
ChannelInboundHandler的方法:

ChannelOutboundHandler的方法:

ChannelPipeline 提供了 ChannelHandler链的容器
定义了用于在该链上传播入站和出站事件流的API
###5. ByteBuf-Netty的数据容器
Java NIO提供了ByteBuffer作为它的字节容器
Netty的ByteBuffer替代品是ByteBuf
###6. Bootstap-引导客户端和无连接协议
Bootstrap类负责为客户端和使用无连接协议的应用程序创建 Channel

使用EmbeddedChannel 测试 ChannelHandler
##编解码器
解码器
将字节解码为消息
将一种消息类型解码为另一种
编码器
将消息编码为字节
将消息编码为消息
##Netty服务端启动
##预置的ChannelHandler和编解码器
###创建服务端Channel
bind()[用户代码入口] ->initAndRegister()[初始化并注册] ->newChannel()[创建服务端channel]



##如何使用Netty进行RPC服务器的开发?

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。