Netty 基本概念以及核心组件

      最后更新:2022-05-08 06:36:50 手机定位技术交流文章

      Netty 概述

      Netty是一个非同步事件驱动的网络应用框架,用于迅速建立高性能、高可靠性网络。IONetty建在NIO上,它覆盖了jdk NIO, 因此让我们更自由地使用它。

      1. Netty由事件驱动的网络应用框架,可用于迅速建立高性能、高可靠性网络。IO程序。
      2. Netty其本质是适用于各种与服务器有关的应用的以爪哇国家工业组织为基础的框架。
      3. Netty主要针对在TCP(a) 根据协议为客户提供大量资金,或Peer-to-Peer应用这些应用可以不断传送现场的大量数据。

      NIO的存在问题(缺陷)

      • Java NIO图书馆和API很复杂,难以使用,需要精选器、服务器套件频道、索克频道、ByteBuffer和其他概念的知识。
      • 您必须熟悉 Java 的多线编程。 这是因为 NIO 编程包含反应堆模式, 为了建立高质量的 NIO 应用程序, 您必须对多线和网络编程非常满意 。
      • 例如,客户受到中断、网络闪烁、阅读和书写半包装、缓存失灵、网络堵塞和不规则流动处理。
      • JDK NIOBug: 臭名昭著的民意调查错误。 它将导致选择者的空周期调查, 最终达到100%的 CPU。 Until JDK1.7, 版本没有基本的补救办法 。

      Netty的访谈情况

      例如,MQ、分布式服务框架、ESB信息总线等,以及Netty作为基本通信框架,主要提供高性能、低延迟式通信服务;典型应用包括:Ali分布式服务框架。DubboRPC框架使用Dubbo会议决定进行节点通信。Dubbo协议默认使用Netty作为流程节点与火箭MQ之间的内部通信的基本通信部分,后者也通过Netty进行通信。

      Netty作为出色业绩的基本传播组成部分,TCP/UDPHTTP礼宾商店能够定制和建造私人协议商店和账户登录服务器。

      内蒂的个性是什么?

      • Netty是一个网络通信框架,以Java NIO(禁止阻塞 IO, IO)为基础,比BIO(锁I/O, IO)具有更大的共同性能。

      • Netty依靠零副本功能来减少不必要的内存复制并提供更有效的传输。

      • Netty简单易用,涵盖NIO业务的许多复杂情况,并提供快速进入呼叫接口的机会。

      在这里插入图片描述


      净式模块模块组件

      Channel

      反应堆模式和渠道密不可分,反应堆(EventLoop)检查并分发频道组成部分的IO事件。

      Channel提供异步的网络I/O无现机作业(例如连接、阅读和书写、装订港口)I/O所有对话都将得到迅速回应,但无法保证这些请求在通话结束时得到满足。I/O操作已完成。

      各种协议,各种形式的连接堵塞Channel类型与之对应。

      Selector

      Netty基于Selector对象实现I/O每个NioEventLoop都可在几条电路中独立使用。Selector监听多个连接的Channel事件。

      当向一个Selector中注册Channel后,Selector内部技术可以自动接触这些登记的个人。Channel是否有已就绪的I/O活动(例如可读、可写、符合网络等),使软件能够利用线索有效管理多个Channel

      Handler(ChannelHandler)

      无论是在服务终端代码中 的自定义NettyServerHandler还是别的什么也许客户代码的自定义NettyClientHandler。在过去几年中,国内有几人死亡和被害。频道手动适应器是频道手动适应器的后代。频道处理器接口也通过频道处理器适应器完成。

      ChannelHandler是一个接口,处理I/O事件或拦截I/O并期待着其运作ChannelPipeline因此,许多海峡经销商建立了责任链,位于海峡管道内。

      • IO 频道入门处理器适配器
      • 要处理 IO 事件, 请使用 Channel OutboudHandlerAdapter 频道 。

      Pipeline(ChannelPipeline)

      ChannelPipeline是一个Handler它既能处理又能拦截Channel"即将到来的事件和站外行动等于一"Netty的链。ChannelPipeline开发了一个先进的拦截过滤模型,使用户能够完全灵活地处理事件。Channel中各个的ChannelHandler如何相互交互。

      Netty中每个Channel都有且仅有一个ChannelPipeline其组成部分的连接如下:

      在这里插入图片描述

      频道管道是频道的一部分。此外,海峡管道还维持最初的双向通道操作员背景链。每个频道处理器背景都与频道处理器连接。双向连锁餐桌储存进出事件。输入事件将从链桌头转到最后一站。外向事件将从链桌发送到处理者的前方。这两种处理者之间没有冲突。

      NioEventLoop内部采用串行化设计,从消息的读取->解码->处理->编码->发送,始终由IO线程NioEventLoop负责。

      EventLoop

      事件Loop 是子反应器的 Netty 对应方, NioEventLoop 子反应器有一个事件线 。

      每个NioEventLoop都有 Java NIO 选择以及任务 Quue 。选择器用于完成多路I/O再利用。任务队列的功能是提供缓冲, 当任务发送的速度比线索的处理速度更快时 。相反,使用它来处理选择器检测到的 IO 事件 。如果汉德勒有长期的商业交易它可以发送到任务Quue, 用于天体处理 。

      同时, 选择器和任务 Quue 共享一条线, 以便以一个方向执行队列中的任务 。

      EventLoopGroup(NioEventLoopGroup)

      事件LoopGroup由许多事件Loop线索组成。EventLoopGroup提供next接口,其中至少有一个可能来自使用特定标准(如轮用)的集团内部。EventLoop来处理任务。

      要及时接收新的连接,在服务器端,通常有两种不同的受体。接线和新连接接收另一个负责IO事故的轮换和分配。Netty相应的服务器应用程序您必须为此创建两个 EidentLoopGroup 线索 。Boss Thread集团负责收听和接收连接,另一组负责IO活动的轮换和分发。处理手持器处理器的生意 工人线条组

      在这里插入图片描述

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/24077.html

          热门文章

          文章分类