zinx框架分析

服务器流程

1、首先调用Server模块的NewServer方法初始化一个Server方法

2、在NewServer方法中会初始化Server模块的

MsgHandler 和 ConnMgr,  

msgHandler是路由管理模块。ConnMgr是管理客户端连接的模块

 

3、注册钩子函数,这两个函数分别是框架留给用户的接口方法,用户处理当有用户连接进来之后和当用户断开链接之前需要处理的业务(比如断开链接我们需要进行一些资源的回收)

s.SetOnConnStart(DoConnectionBegin)
s.SetOnConnStop(DoConnectionStop)

函数原型:

func (IConnection)

4、添加消息路由通过Server模块的AddRouter方法,向模块的MsgHandler中添加路由

5、最后调用Server模块的Serve方法,启动服务器,等待用户连接

在Serve方法中首先调用Server的start方法,启动一个tcp监听的协程,等待用户连接

然后再调用Server模块中msgHandler的StartWorkerPool工作池协程

msgHandler的StartWorkerPool协程主要是把客户端发送来的数据,通过负载均衡算法存放到消息队列中,排队等待处理,

工作池主要是为了防止服务器开辟大量的协程,消耗服务器资源,通过控制服务器协程数量,保证服务器稳定性能

StartWorkerPool方法会根据配置文件启动一定数量的协程

首先初始化消息队列,一个消息队列对应一个工作协程,工作协程里面一个死循环等待从消息队列中取出数据,然后发送给对应的路由进行处理

 

 

 

 

你可能感兴趣的:(golang)