第四章、Netty的核心组件

Netty的基本介绍

netty官网是这么介绍netty的

Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.

‘Quick and easy’ doesn’t mean that a resulting application will suffer from a maintainability or a performance issue. Netty has been designed carefully with the experiences earned from the implementation of a lot of protocols such as FTP, SMTP, HTTP, and various binary and text-based legacy protocols. As a result, Netty has succeeded to find a way to achieve ease of development, performance, stability, and flexibility without a compromise.

Netty是一个NIO的客户端以及服务端框架,它能够快速并且简单的搭建开发网络应用。他也简化了网络程序的编码,比如基于TCP或者UDP的socket服务器。

快以及简单并不意味着他的应用程序会出现性能或者可维护性的问题。netty经过精心的设计,经历了许多协议的经验 比如FTP、HTTP等。最终,netty成功的实现了简单快速开发,并且避免了性能、可维护性以及稳定性等等问题。

由于netty也是基于NIO做的一个高级包装,所以netty的核心组件也就包括NIO的核心组件,以及自身扩展的一些组件。

Netty的特性

同样是netty官网

  • 设计方面: 各种传输类型统一api,基于阻塞与非阻塞套接字的处理,并且拥有灵活可扩展的事件模型,线程池的加入

  • 使用简单:完善的java文档,用户指导以及示例

  • 良好的体验:更好的吞吐量、耕地的延迟、尽可能少的资源消耗以及减少不必要的内存拷贝

  • 安全性:SSL与TLS协议的支持

  • 社区活跃程度:开源代码、并且拥有更多的开发者去维护。

一、EventLoopGroup

在Netty中,他会使用两组事件循环组去处理客户端的事件

BossGroup—用来处理客户端的连接事件

WorkGroup—用来处理客户端的其他事件

由于netty是基于主从Reactor模型的,所以往往一个BossGroup可以去关联多个WorkGroup。也就是客户端的事件可以发送给不同的WorkGroup去处理。

不论是BossGroup还是WorkGroup,内部都会维护一个Selector,用来循环处理事件。 我们可以看看EventLoopGroup的类(NioEventLoopGroup)继承关系 后面我们会着重分析这些属性以及方法。

在这里插入图片描述

二、Bootstrap

netty用来绑定服务器以及端口。同时,使用这个来建立父子EventLoopGroup的关系。
总之:netty里面一切配置信息都是在这个里面保存的。

三、Channel

  • Netty的通讯是基于Channel进行的。这个Channel就是NIO中的channel。
  • 通过channel我们可以获取到客户端以及服务端的相关信息
  • channel会分为两大类:ServerSocketChannel以及SocketChannel,对应的使用着分别是服务端以及客户端
  • 基于TPC以及UDP,又有不同的channel分别去处理这两种协议数据。

四、ChannelPipeline

  • channel跟popeline是一一对应的。
  • pipeline持有多个handler,他是基于拦截器||过滤器模式实现的
  • pipeline负责管理入栈以及出栈事件,然后使用handler来处理不同的事件对应的数据

五、ChannelHandler

  • haneler是Netty处理数据的核心组件
  • 所有的数据经过handler处理完之后,进入下一个hander进行再次加工。
  • handler分为两种:一个入栈handler,一个出栈handler。入栈就是数据从socket写入handler
    出栈就是数据从handler流入socket。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值