分布式游戏服务器通用架构的设计

对于游戏服务器架构,不同项目除了游戏玩法、匹配规则大不相同外,其余部分如日志系统、TCP 连接管理,玩家数据存储,数据库连接与访问等大同小异。游戏服务器架构中高并发、可扩展是主要的设计点。本 Chat 将从 0 到 1 的设计一个高并发、可扩展的通用游戏服务器架构。

该服务器架构已在多个项目中应用,如本人经历过的一个类王者荣耀的 Moba 手游(已在海外上线)、一个类吃鸡的手游。如果你是一个新手,通过本 Chat 你将会学到一个分布式游戏服务器应该是什么样的,并掌握设计分布式游戏服务器的要点。如果你是一个经验丰富的老手,你将会和本 Chat 所描述的内容的产生共鸣,其中的一些设计或许会让你觉得很新颖巧妙而想应用到你现有的项目中去。通过学习 Chat 你终会有所收获。

本 Chat 中涉及的主要内容有:

  • 服务的划分、服务与服务之间的通讯。我们会按照不同的功能将服务进行横向划分,同一功能的服务又可以部署多个来纵向扩展。服务之间如何通讯,直接通讯(会建立 n*n 个连接)还是走路由通讯(n 个连接:所有服务器连上路由,路由负责转发消息)?
  • 单个服务并发的方式。单个服务是选择多线程处理任务,还是单个线程用协程并发处理事务?
  • 数据库的选择与使用。哪些数据存在 Redis,哪些数据存在 MySQL?
  • 玩家数据如何存储。玩家的数据是一个对象的格式,有各种属性,属性里面又有各种属性,而且会频繁修改。用什么方式存这样的数据,存在什么样的数据库?
  • 日志系统的设计。日志的格式怎样设计才能满足以后的查询、分析、定位问题?日志直接在主线程打印吗?
  • 管理与客户端的连接。如何管理成千上万的客户端 TCP 连接?如何处理 TCP 字节流分包、粘包?
  • 如何部署分布式服务器。如何简单的将众多服务的可执行程序与配置根据部署的配置传输到目标机器上,完成服务器部署运行?

本 Chat 将会学到的技术:

  • 数据库 Redis、MySQL
  • 通讯协议 Protobuf
  • 部署工具 Ansible
  • 多线程并发、与协程并发
  • 网络编程

PS:本 Chat 描述的架构可以使用任何后端语言实现如 C++、Go

阅读全文: http://gitbook.cn/gitchat/activity/5d71c11155572d08d5be1780

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

FtooAtPSkEJwnW-9xkCLqSTRpBKX

你可能感兴趣的:(分布式游戏服务器通用架构的设计)