网络模型学习笔记

1.阻塞IO

2.非阻塞IO

3.IO多路复用模型

  将fd传递给select/poll调用,select顺序扫描socket fd是否就绪

4.信号驱动IO

  linux内核通知我们可以开始进行一个IO操作

5.异步IO

  linux内核通知我们IO操作已经完成
 


NIO:IO多路复用模型

1.将多个IO阻塞,复用到同一个select阻塞,由select轮询fd(文件描述符->网络事件)

2.select在使用上有限制,最大的权限是打开的socket fd是有限的1024
  选择替换方案epoll, 1GB内存的机器可以存放10万个句柄左右 cat /proc/sys/fs/file-max 查看

3.select/poll另一个弱点,由于很多socket是空闲的,每次线性扫描,导致fd越多效率越差。
  选择替换方案epoll, 活跃时才会调用callback,事件驱动

4.需要把fd消息通知给用户空间
  epoll通过内核和用户空间mmap同一块内存实现的。

5.高负载,高并发的应用应该选择NIO模型。
  缓冲区Buffer:在NIO的库中所有的数据都是通过Buffer进行处理的                       
  通道Channel:通道不同于流,是因为通道是双向的。(SelectableChannel,FileChannel)    去类比 fd
  多路复用器Selector:会不断的轮询注册的Channel。将就绪(发生读写)的轮询出来         去类比 select,epoll
                     因为jdk使用了epoll,所以一个线程就可以轮询成千上万的channel


BIO:
  一个线程处理一个客户端连接,即一个线程占用了一个fd资源,既浪费了fd资源,也浪费了线程资源,可能会造成线程资源耗尽的问题。

 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值