Seata 高性能RPC通信的实现基石-Netty篇

本文详细介绍了Netty作为一个异步、事件驱动的网络应用框架,其核心组件如Bootstrap、ServerBootstrap、Channel、Selector、ChannelFuture、EventLoop和Handler的作用与原理。Netty的非阻塞I/O和线程模型极大地提高了网络通信的效率,通过EventLoopGroup管理和分配EventLoop,以及ChannelPipeline中的Handler链路处理,实现了高效、可靠的网络通信。
摘要由CSDN通过智能技术生成

一、Netty 简述

Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。从下方所列举的特性中不难发现 Netty 优点很多。

学习 Netty 需要从了解与 Netty 相关的几个关键类开始,如BootstrapServerBootstrapChannelSelectorChannelFutureEventLoopEventLoopGroupChannelHandlerPipeline 等。这些类是 Netty 对网络编程抽象的代表,也是 Netty 的精髓。

二、Bootstrap 和 ServerBootstrap

BootstrapServerBootstrap 作为 Netty 的引导类,提供配置 Netty 组件的接口,开发者通过这些接口来定制搭配 Netty 的各个组件,组装出一个健壮、高性能的网络通信模块。

BootstrapNetty 的客户端引导类,引导客户端进程连接到另一个运行在某个指定主机的指定端口上的服务端进程后进行网络通信。

ServerBootstrapNetty 的服务端引导类,引导一个服务端进程绑定到某个指定的端口,接收来自客户端的网络连接后进行网络通信。

三、Channel

Channel 是 Java NIO 的一个基本构造,从网络编程视角看可把Channel 理解成是对 Socket 操作的封装,所提供的如端口绑定、建立连接、数据读写等 API 降低了直接使用 Socket 的复杂度;Channel具备以下特性:

  • 可获得当前网络连接的通道状态
  • 可获得网络连接的配置参数(缓冲区大小等)
  • 提供异步的⽹络 I/O 操作,⽐如建⽴连接、绑定端⼝、数据读写等
  • 获得 ChannelFuture 实例,并在其上注册监听器⽤于监听 I/O 操作成功、失败、取消时的事件回调。
  • 不同协议、不同 I/O 类型的连接都有不同的 Channel 类型与之对应

四、Selector

java.nio.channels.Selector 是 Java 非阻塞 I/O 实现的关键。Selector 管理一组非阻塞 socket,当这些 socket 中有已就绪可进行 I/O 相关操作的时候,会进行事件通知。使用非阻塞 I/O 比用阻塞 I/O 来处理大量事件相比,处理更快速、更经济。

Selector 被称作多路复⽤器,正是因为借助它可以实现用一个线程监视多个文件句柄,在网络场景中即是一个线程监视多个 socket 句柄。

Netty 中即是一个 Selector 可以监视多个 Channel ,监听 I/O 事件,如 OP_ACCEPT(接收连接事件)、OP_CONNECT(连接事件)、OP_READ(读事件)、OP_WRITE(写事件),还可以不断的查询已注册 Channel 是否处于就绪状态,通过一个线程中管理一个Selector,一个Sel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值