前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >游戏服务器之多进程架构通信

游戏服务器之多进程架构通信

作者头像
李海彬
发布2018-03-22 16:42:54
1.8K0
发布2018-03-22 16:42:54
举报
文章被收录于专栏:Golang语言社区Golang语言社区

游戏服务器有时需要分多个进程来处理各种负载。多个进程之间的连接处理就相对复杂了。

1、服务器进程类型

(1)登陆服务器

创建账号,检验角色账号,选择和获取并返回网关信息。

(2)网关服务器

创建角色,转发消息。会有网关角色,和相关的屏信息,用于广播。

(3)场景服务器

处理场景(分线或不分线的)、副本的游戏逻辑。

(4)社会关系服务器

处理社交相关的全区的逻辑。

(5)数据库服务

存取数据。

(6)中心服务器

处理内部服务器之间的消息转发,和某些转发流程控制。

(7)其他服务器

还有些日志服务器、连接php(gm)服务器、跨服战服务器、聊天服务器等。

2、进程内的网络相关线程类型

进程内的网络相关线程类型(不包括主线程和逻辑线程),处理进程间通信需要处理的连接的数据发送和接收。

<1>、被动连接相关

被动连接线程池

(1)验证线程 (1-1)检查验证超时、验证发来消息的服务器id和服务器ip(服务器之间,依靠中心服务器发来的依赖服务器列表) (1-2)验证账号和临时id和账号(客户端登陆和重登陆) (1-3)验证epoll接收是否有错误,验证客户端的唯一性,超时就放到回收线程 (2)同步线程 (2-1)网关发消息删除中心服务器登陆会话 (2-2)中心服务器读数据库检查其他服务器连接的合法性 (2-3)发送测试消息到对端 (3)网络接收发送线程 负责发送和接收数据(多线程,数量需要配置,每条线程处理的连接数需要是动态增长的) (4)回收线程 回收连接

<2>主动连接相关

(1)主动连接线程

根据进程需要主动连接别的进程来增加。

如场景进程需要主动连接中心服务器、社会关系服务器、网关服务器、日志服务器、数据库服务器,所以分别各自要另起连接线程。

(2)主动连接线程池

(2-1)连接测试线程 测试连接是否正常 (2-2)验证线程 (2-3)网络处理线程 负责发送和接收数据(多线程,数量需要配置,每条线程处理的连接数需要是动态增长的)

3、进程间的连接图

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、服务器进程类型
  • 2、进程内的网络相关线程类型
  • 3、进程间的连接图
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档