NIO技术

一、深入理解IO

1.1 服务端客户端通信

最简单的服务端通信模型
在这里插入图片描述

1.2 服务器通信过程分析

  1. cpu 计算和业务处理
  2. IO操作与等待,网络等待、磁盘IO、访问数据库等

在这里插入图片描述
cpu在处理某个任务时,可能大部分时间在等待网络IO、磁盘IO,在等待的时间段内大量的cpu资源就被浪费了。

对于一个高并发的这种IO密集型的网络处理的应用程序,不仅是IO需要花费时间,Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,应用程序想要发送数据必须把数据拷贝从用户空间拷贝到内核空间,才能通过网卡等驱动程序发送出去,反之应用读取数据的过程也是如此。
在这里插入图片描述

1.3 阻塞与非阻塞,同步与异步

  • 阻塞与非阻塞是指线程的处理模式;
  • 同步异步是通信模式

1.4 五种IO模型

1.4.1 阻塞式IO(BIO)

在这里插入图片描述

1.4.2 非阻塞式IO

在这里插入图片描述
和阻塞 IO 类比,内核会立即返回,返回后获得足够的 CPU 时间继续做其它的事情。用户进程第一个阶段不是阻塞的,需要不断的主动询问 kernel 数据好了没有;第二个阶段依然总是阻塞的。

1.4.3 IO多路复用模型

在这里插入图片描述
IO多路复用(IO multiplexing),也称事件驱动IO(event-driven IO),就是在单个线程里同时监控多个套接字,通过 select 或 poll 轮询所负责的所有 socket,当某个 socket 有数据到达了,就通知用户进程。
IO 复用同非阻塞 IO 本质一样,不过利用了新的select 系统调用,由内核来负责本来是请求进程该做的轮询操作。看似比非阻塞 IO 还多了一个系统调用开销,不过因为可以支持多路 IO,才算提高了效率。
进程先是阻塞在 select/poll 上,再是阻塞在读操作的第二个阶段上。

1.4.4 信号驱动IO

在这里插入图片描述

1.4.5 异步IO

在这里插入图片描述

1.5 Netty框架

Netty是一个Java网络应用开发的框架

还没理解好,先挖坑!

1.6 压测

通过superbenchmarch对8801端口的压测
在这里插入图片描述

二、什么是高性能

  • 高并发(concurrent users)
  • 高吞吐量 (Throughout),tps、qps衡量
  • 低延迟 (Low Letancy)
  • 容量

一个接口的延迟是P99等于3毫秒,P是指postpone延迟,99%的请求在3ms内完成。

三、Netty如何实现高性能

从Reactor模型到Netty NIO

3.1Reactor主从模型

没看懂,挖坑!

四、Netty网络程序优化

五、API网关

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值