游戏服务器之逻辑服务器的资源分布图

线程类型分成三大类:主线程、网络线程、业务线程。

一、主线程

1、程序主线程(线程1)

读取服务器配置,读取逻辑数据配置,启动账号管理器、日志管理器,启动逻辑引擎(启动账号管理器、启动db管理器(连接数据服务器进程)、启动网关、启动日志管理器、初始化游戏命令)。

二、网络线程

1、逻辑网关(线程2-4和n)

框架是使用多网关结构的逻辑进程。每启动一个逻辑网关,就会启动对应的网络连接监听、接收、发送、和数据缓存处理线程:

网络线程类型包括:

(1)网络连接监听线程

(2)网络数据接收线程

(3)数据缓冲处理例程

队列交换,和数据拷贝线程到对应的玩家数据会话的缓冲区里

(4)网络数据发送线程

数据发送线程的数量是配置的,在服务器的配置文件里。目前配置两个发送线程,每个发送线程有两个发送队列(一个用来追加,一个用来处理发送)

三、业务线程

1、db管理器线程(线程5)

连接到db服务器,发送消息并处理响应消息,读写档案。

2、账号管理器线程(线程6)

处理玩家登陆请求(需要直接查数据校验),和处理玩家状态机。

3、日志管理器线程(线程7)

接收日志(逻辑引擎的或账号管理器的)并写到mysql(方便后台网站查询)。

4、逻辑引擎线程(线程8)

(1)处理新进入的玩家

(2)处理玩家的网络数据包和消息系统

(3)处理角色逻辑,处理失效玩家

(4)处理ai

(5)删除要释放的道具、副本等

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-09-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术

使用Maven的assembly插件实现自定义打包

  最近我们项目越来越多了,然后我就在想如何才能把基础服务的打包方式统一起来,并且可以实现按照我们的要求来生成,通过研究,我们通过使用maven的assembl...

16320
来自专栏noteless

eclipse 创建maven 项目 动态web工程完整示例

注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了

14010
来自专栏云计算教程系列

如何在CentOS 7上配置Apache以使用自定义错误页面

Apache是世界上最受欢迎的Web服务器。它功能强大,功能丰富且灵活。在设计网页时,自定义用户看到的每条内容通常都很有帮助。包括他们请求不可用内容时的错误页面...

24900
来自专栏Crossin的编程教室

【Git 第4课】 创建Git仓库

上次安装了 Git 之后,我让大家用命令: git clone https://github.com/crossin/CrossinClass.git 把我在 ...

37370
来自专栏性能与架构

HBase 数据读写流程

读数据 HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中 假设现在想在用户表中获取 row key 为 ...

49370
来自专栏帘卷西风的专栏

关于luasocket的编译和部署

好了,luasocket的编译和部署就讲完了,做完上面这些步骤,就可以用luasocket来编写网络程序了。

24100
来自专栏移动端周边技术扩展

github中存放预览网页

9410
来自专栏技术博文

linux创建目录mkdir命令(5)

linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。 1.命令格式: m...

43990
来自专栏风中追风

分布式基础__session 和 cookie的差异

HTTP协议是一种无状态的 通信协议 。那么这就以为着 客户端按道理是需要每次请求之前都要和服务器做连接的。 但是每次都进行这种连接,会非常耗时,并且这些重复...

403100
来自专栏Java进阶

再谈session 和 cookie的差异

28980

扫码关注云+社区

领取腾讯云代金券