ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Netty - NIO基础

2022-08-14 17:30:19  阅读:137  来源: 互联网

标签:Netty NIO thread -- 服务员 基础 线程 服务器 客人


 

一、NIO的三大组件

1.1 Channel

 

常见的Channel有:

  • FileChannel -- 文件传输通道
  • DatagramChannel -- UDP数据传输通道
  • SocketChannel -- TCP数据传输通道(客户端,服务器端通用)
  • ServerSocketChannel -- TCP数据传输通道(专用于服务器端)

1.2 Buffer

常见的Buffer:

只有ByteBuffer最常用,是一个抽象类。实现类有三个,如下图所示

 

 

1.3 Selector

服务器设计 - 多线程

形象解释:将服务器想象是个饭店,socket是一个客人,thread是一个服务员。每来一个客人,就要安排一个服务员跟着。

 

内存占用高:每维护一个线程,都要消耗内存

线程上下文切换成本高:CPU如果只有16核,那最多只能有16个线程在跑。其余线程就搞挂起,保存下该线程的运行情况。等CPU时间片轮到它,再load上下文回去。

 

服务器设计 - 线程池

形象解释:将服务器想象是个饭店,socket是一个客人,thread是一个服务员。在阻塞模式下,一个客人来了,哪怕这个客人啥都不干,一个服务员就要干等在那里,不能处理其他客人的请求。。。

 

老式服务器大多此设计,处理HTTP 请求

服务器设计 - selector

形象解释:将服务器想象是个饭店,channel是一个客人,thread是一个服务员。selector可以监视多个客人的动作。一旦哪个客人有动作(要和服务器交互),selector就会感知到,通知服务员thread来处理。

 

 

   

 

标签:Netty,NIO,thread,--,服务员,基础,线程,服务器,客人
来源: https://www.cnblogs.com/frankcui/p/16585841.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有