【netty基础四】netty与nio

发布时间:2026/11/3 9:10:34

【netty基础四】netty与nio 文章目录一. 反应堆1. 堵塞模型2. Java NIO的工作原理二. Netty与NIO一. 反应堆1. 堵塞模型阻塞I/O在调用InputStream.read()方法时是阻塞的它会一直等到数据到来或超时时才会返回同样在调用ServerSocket.accept()方法时也会一直阻塞到有客户端连接才会返回每个客户端连接成功后服务端都会启动一个线程去处理该客户端的请求。阻塞I/O的通信模型示意如下图所示。阻塞I/O通信模型的两个缺点。当客户端多时会创建大量的处理线程。且每个线程都要占用栈空间和一些CPU时间。有些请求没有数据就会导致这些栈空间和cpu就会被一直占用ing阻塞可能带来频繁的上下文切换且大部分上下文切换可能是无意义的。上下文切换CPU利用时间片轮询来为每个任务都服务一定的时间然后把当前任务的状态保存下来继续服务下一个任务。任务的状态保存及再加载叫做线程的上下文切换。2. Java NIO的工作原理由一个专门的线程来处理所有的I/O事件并负责分发。事件驱动机制不断地轮询判断事件是否到达事件到的时候触发而不是同步地去监视事件。线程通信因为请求而建立的线程之间通过wait、notify等方式通信how。保证每次上下文切换都是有意义的减少无谓的时间片进行线程切换。注每个线程的处理流程大概都是读取数据、解码、计算处理、编码和发送响应。二. Netty与NIONetty是一个异步的、事件驱动的、用来做高性能高可靠性的网络应用的框架。下面是其主要的优点。1框架设计优雅底层模型随意切换适应不同的网络协议要求。2提供了很多标准的协议、安全、编解码的支持。3解决了很多NIO不易用的问题。4社区更为活跃在很多开源框架中使用如Dubbo、RocketMQ、Spark等。Netty支持的功能与特性如下图所示。底层核心有Zero-Copy-Capable Buffer非常易用的零拷贝Buffer这个内容很有意思稍后专门来讲、统一的API、标准可扩展的事件模型。传输方面的支持有管道通信HTTP隧道TCP与UDP。协议方面的支持有基于原始文本和二进制的协议解压缩大文件传输流媒体传输ProtoBuf编解码安全认证HTTP和WebSocket。Netty采用NIO而非AIO的理由Netty不看重Windows上的使用在Linux系统上AIO的底层实现仍使用epoll没有很好地实现AIO因此在性能上没有明显的优势而且被JDK封装了一层不容易深度优化。Netty整体架构采用Reactor模型而AIO采用Proactor模型混在一起会非常混乱把AIO也改造成Reactor模型看起来是把Epoll绕个弯又绕回来。AIO还有个缺点是接收数据需要预先你需要预估缓存分配缓存而NIO是需要接收时才分配缓存所以对连接数量非常大但流量小的情况AIO浪费很多内存。Linux上AIO不够成熟处理回调结果的速度跟不上处理需求比如外卖员太少顾客太多供不应求造成处理速度有瓶颈。参考《Netty4核心原理与手写RPC框架》
延伸阅读

更多相关文章

2026/11/3 9:10:34

hive CUSTOM authentication mode:通过用户名密码连接hiveserver

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 9:10:34

【shell】eval命令用法:简化shell结构 封装多个命令然后执行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 9:10:34

【hive 运维】hive注释/数据支持中文

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 11:22:40

抽象类在面向对象编程中的核心应用与实践

1. 抽象类:面向对象编程的进阶利器 第一次接触抽象类时,我正试图重构一个电商系统的支付模块。当时系统里有微信支付、支付宝支付和银联支付三种实现,每个支付类都有自己独特的处理逻辑,但对外又需要保持统一的调用接口。正是在这…

2026/11/3 11:22:40

MATLAB数值分析实战:样条插值、重积分外推与ODE求解

简介:一份围绕数值分析课程上机作业整理的 docx 文档,面向正在学习数值分析、需要完成 MATLAB 编程实验的本科生与研究生。内容以三次样条插值函数、重积分计算和常微分方程初值问题数值解三条主线展开:既给出第一型三次样条通用程序的构造思…

2026/11/3 11:22:40

SQL Server 2019安装配置与性能优化指南

1. SQL Server 2019概述与下载准备 SQL Server 2019作为微软推出的旗舰级关系型数据库管理系统,在性能、安全性和AI集成方面都有显著提升。根据实际项目需求选择合适的版本是安装前的关键决策。目前主要提供以下版本选择: Developer版 :功能…

2026/11/3 11:22:40

HarmonyOS弹簧动效实现与优化指南

1. 项目背景与核心价值 在HarmonyOS应用开发中,动效设计是提升用户体验的关键环节。弹簧拉伸回缩动效作为一种常见的物理模拟效果,能够赋予界面元素更自然的交互反馈。这种效果模拟了真实世界中弹簧的物理特性,当用户拖拽组件释放后&#xff…

2026/11/3 11:22:40

跨境电商如何应对美国TRO商标侵权诉讼

1. 跨境电商法律风险现状解析最近两年,跨境电商卖家群体中出现了一个令人担忧的现象:美国商标侵权诉讼(TRO)案件数量激增,而90%以上的案件最终以和解收场。这个数字背后反映的是中小卖家面对跨国法律纠纷时的普遍困境—…

2026/11/3 11:17:37

35岁测试工程师转型指南:技术升级与职业突破

1. 35岁软件测试工程师的职场困境解析 35岁对于软件测试从业者而言,往往是一个关键的分水岭。在这个阶段,我们通常会面临三个维度的职业挑战: 首先是技术迭代带来的压力。随着DevOps和持续测试的普及,传统的功能测试岗位需求正在…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32实战:基于MAX14431数字隔离器的SPI隔离通信方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

工业SPI隔离通信设计:MAX14431BAEE+与STM32L4A6RG实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32+NRF24L01无线抢答器:硬件设计、通信协议与低功耗实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑