IO多路复用 | epoll 支持亿级IO 笔记

linux 服务器基本上都会用到epoll。 Apache 是一请求一进程的机制,占内存,处理不来高并发。

epoll是一个高性能IO 管理组件,底层数据结构是红黑树,类似于管理丰巢的快递员, 用于管理快递柜。

int epfd  = epoll_create(epoll_size);// 聘请快递员  epoll_size 大于0 或者等于0

epoll_ctl(epfd,add,ev); 快递员对小区中的每个住户进行增删改。就是往红黑树上进行增删改

epoll_wait(epfd,events,epoll_size,-1);// 多长时间收一次快递  (-1阻塞函数,有IO 才走;0不阻塞,没有IO就过;大于0,等待时间)

水平触发(对于一次数据到达,数据没有被取完之前,一直触发)  边沿触发(一次数据的到达,只触发一次)。

不同于select只能创建1024个fd,epoll创建fd 的个数为系统内存允许的最大数目,每个fd都有一个回调函数,只在有数据到达时才会调用(就像快递到了,打电话通知收件人下来取,不需要收件人隔一段时间就下来询问一下快递是否到达),不需要轮询,节省时间。

epoll单线程 -->redis

epoll多线程-->nattyserver

epoll多核--->ntyco

epoll多进程--->nginx

你可能感兴趣的:(大数据)