Netty实现高性能

高性能

高性能包含的内容

  1. 高并发用户(Concurrent Users)
    同时访问应用系统的用户/链接数
  2. 高吞吐量(Throughout)
    单位时间处理的请求数QPS或事务数TPS
  3. 低延迟(Latency)
    用户从发出请求到得到响应的时间,比如P50=1ms表示百分之五十的请求在1ms以内
  4. 容量
    最多能接受的链接数,因为随着访问应用系统的用户增多,就伴随着如JVM本身需要使用更多的内存(系统内存存在物理上限)、GC问题等性能瓶颈。所以一个应用系统的处理链接、请求的数量和应用系统的性能关系曲线总是存在一个顶点,过低或过高都会导致应用系统的性能下降,这个顶点就是该应用系统的容量

高性能的副作用

  1. 系统复杂度 x10以上
  2. 建设与维护成本++++
  3. 故障或 BUG 导致的破坏性 x10以上

Netty 实现高性能

多线程的Socket IO

多线程的Socket IO

使用selector的Socket IO

  • 单个线程通过selector监听多个Socket
    单个线程通过selector监听多个Socket
  • 多个线程通过selector监听多个Socket
    多个线程通过selector监听多个Socket

引入事件处理机制的Socket IO—Reactor 模型

  • 事件处理机制
    事件处理机制
  • 事件处理机制的应用:Reactor 模型
    Reactor 模型

Reactor 模式首先是事件驱动的,有一个或者多个并发输入源,有一个 Service Handler(多路复用) 和多个EventHandlers
这个 Service Handler 会同步的将输入的有数据的请求分发给相应的 Event Handler

从 Reactor 模型到 Netty NIO

Reactor单线程模型

在这里插入图片描述
在这里插入图片描述

此时一个线程充当酒店的前台迎宾reactor,有一个线程充当工作人员

Reactor多线程模型

在这里插入图片描述

此时一个线程充当酒店的前台迎宾reactor,有多个线程充当工作人员

在这里插入图片描述

Reactor主从模型

在这里插入图片描述

此时多个线程充当酒店的前台迎宾reactor,又有多个线程充当工作人员

在这里插入图片描述

Netty对三种模式的支持

在这里插入图片描述

Netty启动和处理流程

在这里插入图片描述

Netty线程模式

在这里插入图片描述

EventLoopGroup

在这里插入图片描述

Netty 运行原理

在这里插入图片描述

关键对象

  • Bootstrap: 启动线程,开启socket
    在这里插入图片描述

  • EventLoopGroup

  • EventLoop

  • SocketChannel: 连接

  • ChannelInitializer: 初始化

  • ChannelPipeline: 处理器链

  • ChannelHandler: 处理器
    在这里插入图片描述

  • ChannelInboundHandler 通过该处理器从channel读取Socket 数据

  • ChannelOutboundHandler 通过该处理器从channel写出数据到Socket
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值