代码改变世界

GoNet项目学习笔记(二)

  量子与唯心  阅读(265)  评论(0编辑  收藏  举报

二)Game Server模块启动分析

主函数入口位于src/agent/main.go,启动流程为:

1. 按顺序初始化导入模块cfg;geoip, db模块等等…

2. 启动HUB客户端,连接HUB Server

3. 启动signal routine 

    1) 处理SIGHUP信号,加载程序配置
    2) 处理SIGTERM信号,程序退出时关闭并等待所有GS的Agent退出

4. 启动Sys routine

    1) 处理系统消息

    2) 定期强制内存回收

5. 启动统计客户端,连接到Stats Server。

6. 启动TCP监听,接收客户端(Player)连接,每个客户端用一个routine处理。

流程图:

 

上图中,Session队列用来接收HubServer转发过来的其它GameServer的消息。GS在启动时HubClient会与HS建立连接同时守护该连接

(src/agent/hub_client/hun_client.go ->_receiver()),接收HS发过来的消息。当HubClient收到HS的消息时(_receiver()函数),会根据IPCObject查找到对应的Session队列(src/agent/hub_client/hun_client.go ->_deliver())。

编辑推荐:
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
阅读排行:
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· 提示词工程师自白:我如何用一个技巧解放自己的生产力
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
· 如何不购买域名在云服务器上搭建HTTPS服务
点击右上角即可分享
微信分享提示