一、 Epoll多路复用
-
java bio模型,阻塞进程式
阻塞IO,当客户端(client)向服务端(server)发起一个请求的时候,socket.write会将数据写入到TCP/IP的缓存区里,TCP/IP缓存区会将数据发送到server。当网络传输较慢/或者client有很多的请求时,一旦缓存区存满会导致client无法发送数据一直在进行等待 -
linux select模型,变更触发轮询查找
一个server在内部会监听固定数量的client
当其中监听的client有变化的时候会执行遍历操作
遍历操作会唤醒所有的变化的client执行read操作
read操作会读取客户端的数据并返回
但是select模型有很多的监听client的时候一旦一个发生变化其他的大量client都可能会被遍历一遍消耗很大的性能。并且select的监听数上线理论上是1024。 -
epoll模型,变更触发
100个连接如果有变化,那么直接执行回调函数进行执行,不需要遍历这100个链接。 单线程且没有阻塞