libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libeventbased,而且libevent在使用上可以做到跨平台。libevent在linux上实现是使用epoll机制的。平时在代码里..
分类:
其他好文 时间:
2016-04-25 15:22:59
阅读次数:
276
引言 最经看cloud wind 的 skynet服务器设计. 觉得特别精妙. 想来个专题先剖析其通信层服务器内核 的设计原理. 最后再优化.本文是这个小专题的第一部分, 重点会讲解对于不同平台通信基础的接口封装. linux是epoll, unix是 kqueue. 没有封装window上的ioc ...
分类:
其他好文 时间:
2016-04-20 17:49:41
阅读次数:
324
首先,介绍几种常见的I/O模型及其区别,如下: blocking I/O nonblocking I/O I/O multiplexing (select and poll) signal driven I/O (SIGIO) asynchronous I/O (the POSIX aio_func ...
分类:
其他好文 时间:
2016-04-12 12:23:39
阅读次数:
164
libev是一个事件驱动库,底层是基于select、epoll、kqueue等I/O复用接口。所谓事件驱动库,就是用户定义一个事件以及改事件发生时调用的函数,该库会监听该事件,并在事件发生时调用相应的函数。 libev提供了很多事件监听器(watcher),最主要的有IO、时间以及信号监听器。当某一 ...
分类:
其他好文 时间:
2016-04-10 19:25:49
阅读次数:
347
正如我们所知,NGINX采用了异步、事件驱动的方法来处理连接。这种处理方式无需(像使用传统架构的服务器一样)为每个请求创建额外的专用进程或者线程,而是在一个工作进程中处理多个连接和请求。为此,NGINX工作在非阻塞的socket模式下,并使用了epoll 和 kqueue这样有效的方法。 因为满负载
分类:
编程语言 时间:
2016-03-20 21:16:03
阅读次数:
222
首先介绍阻塞与非阻塞:阻塞是个什么概念呢?比如某个时候你在等快递,但是你不知道快递什么时候过来,而且你没有别的事可以干(或者说接下来的事要等快递来了才能做);那么你可以去睡觉了,因为你知道快递把货送来时一定会给你打个电话(假定一定能叫醒你)。非阻塞忙轮询。接着上面等快递的例子,如果用忙轮询的方法,那
分类:
其他好文 时间:
2016-03-09 06:50:20
阅读次数:
182
特点:1、协议实现简单,使用telnet或nc等命令就可以直接操作memcached存取数据2、支持epoll/kqueue异步I/O模型,使用libevent作为事件处理通知机智3、使用key->value键值作为数据存储格式4、使用全内存缓存,效率高,但服务重启数据会丢失工作原理:1、Memcached是一款开源..
分类:
系统相关 时间:
2015-12-19 15:12:17
阅读次数:
255
1.Libevent有几个显著的亮点libevent封装了底层最高效的网络模型,windows的compIO,linux下的epoll模型,freebsd的kqueue,提供统一的异步调用接口;以事件方式驱动,chrome,memcached都在使用该框架.libevent同时也支持DNS,HTTP协议和RPC调用框架。libevent总是选择对应系统框架下..
分类:
其他好文 时间:
2015-10-30 10:52:28
阅读次数:
448
1.引言正如我们所知,NGINX采用了异步、事件驱动的方法来处理连接。这种处理方式无需(像使用传统架构的服务器一样)为每个请求创建额外的专用进程或者线程,而是在一个工作进程中处理多个连接和请求。为此,NGINX工作在非阻塞的socket模式下,并使用了epoll和kqueue这样有效的..
分类:
编程语言 时间:
2015-10-26 10:31:49
阅读次数:
424
The C10K problem编写连接数巨大的高负载服务器程序时,经典的多线程模式和select模式都不再适用。应当抛弃它们,采用epoll/kqueue/dev_poll来捕获I/O事件。最后简要介绍了AIO。网络服务在处理数以万计的客户端连接时,往往出现效率低下甚至完全瘫痪,这被称为 C10K...
分类:
其他好文 时间:
2015-10-07 18:44:06
阅读次数:
191