首页 > 其他分享 >Netty原来就是这样啊(二)

Netty原来就是这样啊(二)

时间:2024-11-10 21:19:46浏览次数:3  
标签:Netty Reactor 处理 线程 就是 原来 节点 这样 客户端

前言:

Netty其实最大的特点就是在于对于对NIO进行了进一步的封装,除此以外Netty的特点就是在于其的高性能 高可用性,下面就会一一进行说明。

高性能:

我在Netty原来就是这样啊(一)-CSDN博客 解释了其中的零拷贝的技术除此以外还有Reactor线程模型,这个Reactor线程模型的思想就是基于NIO这个也是可以通过看我的那个博客

Reactor线程模型:

Raactor模式;

组成:

Reactor:在一个线程中进行运行,这个主要就是监听以及分发相关的事件, 这个可以看做是一个中转站,就像我们坐高铁一样,如果没有直达的车次的话那么我们就会选择一个有目的地的高铁站然后我们就到达那个中转站然后乘坐对应的高铁到达目的地

Handler: 处理程序执行 I/O 事件要完成的实际事件,类似于客户想要与之交谈的公司中的实际官员。Reactor 通过调度适当来处理实际的来自客户端的请求

三种模式:
单 Reactor 单线程:

实现原理: 这个就是有Reactor负责监听以及分配IO事件,当监听到事件之后如果是连接事件的话那么就是由Acceptor来进行处理,反之的话由于是单线程的那么read send 以及处理逻辑都会在一个线程中进行

优缺点: 优点就是在于由于单线程的那么就不会产生线程和线程之间的竞争也就是上下文切换

缺点也是比较明显的那就是当处理的请求比较多的时候那么处理的效率就会特别低

单 Reactor 多线程:

实现过程:这个就是在处理业务逻辑的是不一样的,在这个模型当中的话那么就叫处理业务逻辑的部分交给线程池来进行处理,Handler就是负责read以及send的操作,除了这个以外的话那么就是Handler线程的数目变多了,就是在read以及send的时候效率提高了

优缺点: 优点: 相较于单Reactor单线程而言能够处理的并发的请求量多 但是缺点也是在这里因为只有一个Reactor来进行监听以及分配IO事件,这个也是一个瓶颈的地方

主从 Reactor 多线程:

实现原理: 相较于单Reactor多线程而言,当MainReactore建立连接之后将分配一些IO连接给子Reactor那么这样的话就是由多个Reactor来负责监听以及分配IO事件给Handler

优缺点: 优点:就是在于相对于两个模型而言可以应对高并发场景下的请求 缺点:就是在于进行实现的时候会十分复杂

Netty的线程模型:

Netty的线程模型在主从Reactor多线程的基础之上进行了进一步的优化

组成:

BossGroup:   这个主要就是当接收到来自于客户端的请求之后和客户端建立连接用的就是线程池

NioEventLoop: 这个就是里面用于处理实际请求的线程

TaskQueue:这个就是用于存放没有来得及处理的请求的也可以说是任务是一个队列

WorkerGroup: 这个也是一个线程池,里面的就是用于处理业务逻辑以及read write

NIOScoektChanel:这个就是一个通过被selector进行监听用于传输数据的

PipLine:  pipline中包含了 channel,即通过pipline可以获取到对应的 channel,并且pipline维护了很多的 handler(处理器)来对我们的数据进行一系列的处理。 

工作原理: 

1.当客户端发送请求的时候那么这个时候BossGroup负责建立连接然后NIOEventLoop中的Slecetor和客户端的连接进行一个绑定

2.建立连接成功之后就会生成 NIOSocketChannel,之后就会将这个通道和WorkGroup中的NioEventLoop的selector进行一个绑定

3.WorkGroup中的NioEventLoop对于通道进行一个轮询如果有read/write事件的时候,这个时候就会将这个IO事件分发给相应的 ChannelPipeline(包含了多个 ChannelHandler,每个 ChannelHandler 负责处理特定的事件或数据,从而实现了高可用性和高性能的网络通信。) 进行处理。处理完成之后就会直接将结果返回给客户端

高可用性:

 负载均衡

1.客户端负载均衡:客户端可以通过负载均衡算法(如轮询、随机等)选择合适的服务器节点进行连接。

2.服务端负载均衡:使用反向代理(如 Nginx、HAProxy)或负载均衡器(如 AWS ELB)将请求分发到多个服务器节点,确保单个节点的故障不会影响整体服务。

健康检查

  • 定期健康检查:定期检查服务器节点的健康状态,及时发现并隔离故障节点。
  • 心跳检测:客户端和服务端之间定期发送心跳包,检测连接状态。

 分布式部署

  • 多节点部署:在多个物理或虚拟机上部署相同的服务器节点,确保单点故障不会影响整个系统。
  • 地理分布:在不同地理位置部署服务器节点,提高系统的容灾能力。

标签:Netty,Reactor,处理,线程,就是,原来,节点,这样,客户端
From: https://blog.csdn.net/2201_75397629/article/details/143480272

相关文章

  • DBeaver如何一次性执行多条sql语句,原来和单条不一样!
    前言我之前一直是用Navicat来连接数据库的,说实话,用起来真的很舒服。但是,后来,我离职了,换了一家新公司。新公司有一个规定,不准使用Navicat,其中的原因众所周知。由于Navicat是付费的,而公司又不想付这笔钱。而且,也不能使用破解的。于是,公司给我们推荐了DBeaver这款连接工具。好吧......
  • DBeaver如何一次性执行多条sql语句,原来和单条不一样!
    前言我之前一直是用Navicat来连接数据库的,说实话,用起来真的很舒服。但是,后来,我离职了,换了一家新公司。新公司有一个规定,不准使用Navicat,其中的原因众所周知。由于Navicat是付费的,而公司又不想付这笔钱。而且,也不能使用破解的。于是,公司给我们推荐了DBeaver这款连接工具。好吧,有......
  • 【网络安全 | 漏洞挖掘】超出范围的域名存在XSS?我是这样提高危害的
    未经许可,不得转载。文章目录正文正文XSS漏洞有时会被忽视,尤其是当域超出范围时。然而,当这种漏洞与跨域资源共享(CORS)配置不当相结合时,它们可能会成为安全项目范围内的有效漏洞,从而有资格获得奖励。为了更好地解释这一点,我将举一个真实的例子,该例子来自我在H......
  • OpenAI 的 正式版o1 模型意外泄露,推理能力真是震撼——事情是这样的
    序言:无论OpenAI出于何种原因,用户的期待和认可都是关键。这次o1模型的泄露事件意外引发热议,也让用户有机会一窥o1的强大潜力。虽然OpenAI已推出o1-preview和o1-mini供用户试用,性能有所提升,但仍未展现最终模型的完整能力。完整版本的意外泄露让人们看到了它真正的实力,......
  • 刚性PCB VS 柔性PCB,区别和作用,你该这样选!
    从前,大多数电子产品采用传统刚性PCB。然而,随着技术发展,许多产品因刚性PCB无法折叠或扭曲而放弃了它,进而催生了柔性PCB的理念,且柔性PCB很快成为市场上众多专业人士的首选。刚性与柔性PCB的制造过程大致相同,但在灵活性、柔软性及成本方面存在差异。柔性PCB成本高......
  • 7.7 g(x)=(10a)/(10b+(a-10b)e^(asinx)),取a=1.1,b=0.01,计算x=1,2,...,20时,g(x)对应的函
    importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.optimizeimportcurve_fit,leastsq,least_squaresfromscipy.constantsimportedefg(x,a,b):return(10*a)/(10*b+(a-10*b)*np.exp(a*np.sin(x)))a=1.1b=0.01x_values=np.......
  • “握拳宝宝”18岁了,现在他长这样!而那张表情包也拯救了他的家庭
    只要你网上冲浪,就不可能没看到过这张表情包一个小宝宝握紧拳头,表情坚定,仿佛刚刚取得了某种胜利。这张照片被广泛传播,成为了经典的表情包。表情包的主角萨米·格里纳(SammyGriner)被称为“成功宝宝”,还被外媒评价“可能是互联网上最著名的婴儿”。NodoubtinyourIntern......
  • 基于Java语言 Netty通讯框架的云块充协议1.5_云快充协议1.6_云快充协议1.4_云快充协议
    云快充协议+云快充1.5协议+云快充1.6+云快充协议开源代码+云快充底层协议+云快充桩直连+桩直连协议+充电桩协议+云快充源码介绍云快充协议+云快充1.5协议+云快充1.6+云快充协议开源代码+云快充底层协议+云快充桩直连+桩直连协议+充电桩协议+云快充源码软件架构1、提供云快......
  • 原来|开发个智能电子名片这么好用啊
    商务交流不可或缺的名片,在科技高速发展的今天,电子名片以信息同步、快速使用、环保、突破距离限制、私域维护、展示丰富、智能管理、低成本、适用范围广等优势深受各大行业好评,小编带大家来了解下电子名片开发的应用场景主要有哪些吧!电子名片开发广泛应用在多个领域,主要包括以......
  • 4.step into netty
    1.NIO现存的问题1.1客户端中断导致死循环详情在3.网络多路复用通信模型中1.2粘包/拆包问题可能P1和P2被合在一起发送给了服务端(粘包现象)可能P1和P2的前半部分合在一起发送给了服务端(拆包现象)可能P1的前半部分就被单独作为一个部分发给了服务端,后面的和P2一起发给服务端......