高性能异步网络服务框架 libgod
本文导语: libgod是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用完成端口、epoll、kqueue等系统调用管理事件机制。整套库采用全异步机制,非常高效,但提供的接口确是同步的,所以使用起来非常简单。libgod致力...
libgod是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用完成端口、epoll、kqueue等系统调用管理事件机制。整套库采用全异步机制,非常高效,但提供的接口确是同步的,所以使用起来非常简单。libgod致力于为游戏、云计算等高并发服务器提供一个高性能而且简单易用的底层。libgod在使用上可以做到跨平台,而且根据libgod官方网站上公布的数据统计,似乎也有着非凡的性能。God的意思是"神",意味着这套网络库强大,无所不能。
编译库代码,编译脚本会判断OS支持哪种类型的事件机制(完成端口、epoll或kqueue),然后条件编译相应代码,供上层使用的接口仍然是保持统一的(否则也不能所谓的跨平台了)。在ubuntu上编译相当容易,configure以后make,make install就可以了,windows上编译似乎有点小麻烦,不过稍微改点东西也就通过了。
从代码中看,libgod支持用户使用三种类型的事件,分别是网络IO、定时器、信号三种,在定时器的实现上使用了RB tree的数据结构,以达到高效查找、排序、删除定时器的目的,网络IO上,主要关注了一下linux上的epoll(因为目前的开发主要在linux平台)。
libgod把网络层和逻辑层分离,多线程,内存缓冲区管理等都由底层实现,上层应用只要专注写逻辑,所以使用libgod很容易就可以开发出一个高性能高并发的服务器。