zinx框架分析
服務(wù)器流程
1、首先調(diào)用Server模塊的NewServer方法初始化一個(gè)Server方法
2、在NewServer方法中會(huì)初始化Server模塊的
MsgHandler 和 ConnMgr,msgHandler是路由管理模塊。ConnMgr是管理客戶端連接的模塊
?
3、注冊(cè)鉤子函數(shù),這兩個(gè)函數(shù)分別是框架留給用戶的接口方法,用戶處理當(dāng)有用戶連接進(jìn)來之后和當(dāng)用戶斷開鏈接之前需要處理的業(yè)務(wù)(比如斷開鏈接我們需要進(jìn)行一些資源的回收)
s.SetOnConnStart(DoConnectionBegin) s.SetOnConnStop(DoConnectionStop)函數(shù)原型:
func (IConnection)4、添加消息路由通過Server模塊的AddRouter方法,向模塊的MsgHandler中添加路由
5、最后調(diào)用Server模塊的Serve方法,啟動(dòng)服務(wù)器,等待用戶連接
在Serve方法中首先調(diào)用Server的start方法,啟動(dòng)一個(gè)tcp監(jiān)聽的協(xié)程,等待用戶連接
然后再調(diào)用Server模塊中msgHandler的StartWorkerPool工作池協(xié)程
msgHandler的StartWorkerPool協(xié)程主要是把客戶端發(fā)送來的數(shù)據(jù),通過負(fù)載均衡算法存放到消息隊(duì)列中,排隊(duì)等待處理,
工作池主要是為了防止服務(wù)器開辟大量的協(xié)程,消耗服務(wù)器資源,通過控制服務(wù)器協(xié)程數(shù)量,保證服務(wù)器穩(wěn)定性能
StartWorkerPool方法會(huì)根據(jù)配置文件啟動(dòng)一定數(shù)量的協(xié)程首先初始化消息隊(duì)列,一個(gè)消息隊(duì)列對(duì)應(yīng)一個(gè)工作協(xié)程,工作協(xié)程里面一個(gè)死循環(huán)等待從消息隊(duì)列中取出數(shù)據(jù),然后發(fā)送給對(duì)應(yīng)的路由進(jìn)行處理
?
?
?
?
總結(jié)
- 上一篇: Linux 设备驱动的固件加载
- 下一篇: AlterID.exe解决teamvie