page contents

golang 游戏框架

对游戏服务器历史有了基本了解后,成熟形态的游戏服务器很容易理解。简单来说,就是把逻辑服务器单个进程的压力分摊到多个服务器。难点在逻辑的设计上,要像做手术一样把本来是一体的功能切开,并抽象出若干个API来保持联系(服务器之间是TCP连接)。
attachments-2021-09-sBEITfF0613c05db377c1.jpg
golang 游戏框架简介:
一、参考游戏服务器架构通识

attachments-2021-09-uDcpsK9d613c04f4dbae6.jpgattachments-2021-09-TxC4EzWc613c04faa6a8b.jpgattachments-2021-09-INW1PYxA613c0501e33c7.jpgattachments-2021-09-qlQTEZ9x613c05084240a.jpg


对游戏服务器历史有了基本了解后,成熟形态的游戏服务器很容易理解。简单来说,就是把逻辑服务器单个进程的压力分摊到多个服务器。难点在逻辑的设计上,要像做手术一样把本来是一体的功能切开,并抽象出若干个API来保持联系(服务器之间是TCP连接)。

在分解时,要找联系相对最薄弱的环节入手,比如场景和场景之间分开、单独抽出聊天服务、组队服务、好友服务。无论如何分解,最终结果只能是有限个服务。而且分解的越细,开发难度就越大。因为跨服务器逻辑是把简单的同步逻辑变成了异步Callback逻辑,而且容易出现时序问题等不易测试的问题。

单个场景服务几乎是无法分解的。分解单个场景难度巨大以至于出现了BigWorld引擎来专门的解决场景分割问题,后面会谈到。这种成熟形态的游戏服务器已经能满足现实中99%的频繁交互类网游需求,是大型MMO端游、页游的主流形式。当然有实力的公司在这个基础上会做很多改动,实现动态开辟副本、相位技术等等,但是万变不离其宗,其本质和上图没有什么区别。

二、横向对比

attachments-2021-09-jjvJGkIC613c051689cad.jpg

在架构上面,一般访问量不是很大的网站是只有一台服务器的,访问量高的才会进行分布式设计或者集群设计。而大部分游戏服务器都是需要分布式设计的。在现有的网络游戏服务器端架构中,多是以功能和场景来划分服务器结构的。具体的划分是根据项目的需求进行的,并没有一个十分通用的架构。

以上是比较常见的结构,客户端登录的时候,连接GateServer,然后由GateServer去连接LoginServer进行登录。登录后通过CenterServer转发到GameServer(GameServer即是服务器大区)。而其中的DCServer,主要的功能是缓存玩家角色数据,保证角色数据能快速的读取和保存。LogServer便是保存日志的了。

当一个网站访问人数很庞大的情况下,单独去提升一台物理机配置能够带来的性能提升会因为边际效应逐渐减小。这时候就需要考虑使用集群了。集群有三种,高可用集群, 负载均衡集群,科学计算集群。其中最常见的便是负载均衡。很多情况下,集群之间是不需要互相交互的,数据都在单个服务器上进行处理,也就没了同步的问题(相比游戏服务器要简单了多)。相对于游戏的难点就在于游戏我们可以通过分区分服甚至分频道等方式来减小服务器负载压力。而网站是无法这样让用户分区之类的操作。甚至是需要,全国各地乃至全球各地访问到这个网站都是同样的用户数据(针对这种情况我们会使用cdn,部署网络各地的节点服务器可以使得不同地方的人员访问网站的速度是一致流畅的)。所以并不是网站业务简单就轻率的认为网站开发没有技术含量。

游戏服务器,因为可以分区分频道等,所以很多情况下一台服务器的负载量要求不会太高。像手游的服务器,甚至要求可以低至同时在线200人。而且有些时候我们仅需要提高某一些功能的负载量,又或者大型3D游戏存在地图,这些情况下,我们往往使用分布式架构来解决。如分离聊天、好友之类的功能,如给每个区域分配一个单独的房间/地图/场景服务器。

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

程序员编程交流QQ群:805358732

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-BqOvK55j62afe141bee1f.jpeg

  • 发表于 2021-09-11 09:26
  • 阅读 ( 971 )
  • 分类:Golang

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章