首页 > 其他分享 >Netty - NIO基础

Netty - NIO基础

时间:2022-08-14 17:49:12浏览次数:88  
标签: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,--,服务员,基础,线程,服务器,客人
From: https://www.cnblogs.com/frankcui/p/16585841.html

相关文章

  • 数字电路基础知识
    原文:https://www.cnblogs.com/xianyufpga/p/13641879.html1、逻辑函数的表示方法常用的逻辑函数表示方法有逻辑真值表,逻辑函数式,逻辑图,波形图,卡诺图和硬件描述语言等。......
  • HCIA-Datacom 2.1 实验一:IPv4编址及IPv4路由基础实验
    实验目的掌握接口IPv4地址的配置方法理解LoopBack接口的作用与含义理解直连路由的产生原则掌握静态路由的配置方法并理解其生效的条件掌握通过PING工具测试网络层联通......
  • YbtOJ 「基础算法」第3章 二分算法
    例题1.数列分段二分每段和的最大值。check时从左往右扫,如果当前段的和大于限制则新开一段。code#include<bits/stdc++.h>usingnamespacestd;constintN=1e5+5;i......
  • 2、kalman滤波器------数学基础_数据融合_协方差矩阵
    参考内容:B站的DR_CAN的卡尔曼滤波器视频本节内容:1、数据融合2、协方差矩阵3、状态空间方程4、观测器1、数据融合   假设两个秤对同一个物体进......
  • RUST基础:变量遮蔽
    Rust基础入门书籍推荐《深入浅出RUST》Rust是允许在同一个代码块中声明同样名字的变量。如果这样做,后面声明的变量会将前面声明的变量“遮蔽(Shadowing)”起来。如:1fnm......
  • python基础之open函数和路径处理
    前言本次内容主要介绍文件处理open函数以及路径处理。一、open函数根据前面介绍的函数调用方式,调用open函数。#open函数调用open()TypeError:open()miss......
  • Nginx分布式框架详解-基础18-21nginx服务升级
    nginx服务的命令行控制此方式是通过Nginx安装目录下的sbin下的可执行文件nginx(文件名)来进行对Nginx状态的控制,我们可以通过nginx-h来查看都有哪些参数可以......
  • 基于Vector的Autosar基础解读
    基于Vector的Autosar基础解读https://www.autosar.org/https://zhuanlan.zhihu.com/p/473204205 Autosar基础对于致力于从事软件开发和质量相关工作的同学,Autosa......
  • Arthas基础和JVM相关命令-jad/watch/jvm/sysprop/sysenv/vmoption/getstatic/ognl
    1.jad:反编译指定已加载类的源码jadcom.lyb.web.mySpringBoot.thread.ThreadAppendData 2.watch:函数执行数据观测watchorg.apache.lucene.util.RamUsageEstim......
  • 面试基础
    synchronized关键字的底层原理:synchronized关键字与JVM的monitor有关,monitor里面有个计数器,一开始计数器为0。如果一个线程要获取monitor锁,就看看他的计数器是不是0,如果是......