前年,也就是2012年,当时在项目空闲的时候想写个服务器底层,想法的来源是一个稳定、高效的底层对服务器开发与扩展有巨大的帮助。于是乎开始写,当时写了一点点,由于项目比较忙停下了手中的底层。后来在去年6月份重新拾起继续完成,差不多在去年11月份弄完了。压力测试效果不错,稳定性也非常好........废话不多说,开始。
先从服务器模型开始说起,比较常见的多进程(apache)、单线程(libev,libevent,asio,twisted (python))、单进程多线程等等,下面链接有写描述可以比较清楚的了解这些模型。
http://blog.csdn.net/solstice/article/details/5307710#_Toc4491
http://blog.chinaunix.net/uid-24148050-id-3195151.html
当然除了这些模型外还有一种基于协程,boost中有协程的支持,但我觉得在语言级别对协程支持得比较好的是go语言,erlang语言,跑题了不在讨论范围。。。呵呵
而我选用的是单进程多线程,的Reactor模式,原因是在网络游戏服务器中,一般是以场景或者大厅为单位区分。
主循环
接受连接线程(accept thread)
读线程(read thread)
写线程(write thread)
定时器线程(timer thread)
数据库线程(db thread)
逻辑线程(logic thread)
协调线程(client thread)
整个底层包含这些内容,我将一一说明我的设计思路和这些线程干的活,以及它们之间的数据交互