对于游戏服务器架构,不同项目除了游戏玩法、匹配规则大不相同外,其余部分如日志系统、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 专享技术内容哦。

分布式游戏服务器通用架构的设计相关推荐

  1. Unity3damp;amp;C#分布式游戏服务器ET框架介绍-组件式设计

    前几天写了<开源分享 Unity3d客户端与C#分布式服务端游戏框架>,受到很多人关注,QQ群几天就加了80多个人.开源这个框架的主要目的也是分享自己设计ET的一些想法,所以我准备写一系列 ...

  2. 高性能分布式游戏服务器框架,浅谈Go语言自研的分布式游戏服务器架构

    引言:使用Go语言开发游戏已经有5年了,做了三款上线手游,一直采用的都是我们自研的分布式游戏服务器架构.最近我们想把它分享一下,总结一下这几年的经验. 一. 架构图 分布式游戏服务器架构图 1. CD ...

  3. python游戏服务器框架_mqant首页、文档和下载 - Golang/python语言开发的分布式游戏服务器框架 - OSCHINA - 中文开源技术交流社区...

    mqant mqant 是一款基于 Golang 语言的简洁,高效,高性能的分布式游戏服务器框架,研发的初衷是要实现一款能支持高并发,高性能,高实时性的游戏服务器框架,也希望 mqant 未来能够做即 ...

  4. 一文告诉你游戏服务器的架构到底是什么样,各服务器的职责是什么

    目录 1.服务器架构演变的最主要的原因是 2.典型的服务器架构介绍 3.流行的服务器介绍 4.关于服务器架构分布式的看法 5.总结 今天写一下游戏服务器的架构,主要还是还是分析下服务器架构的原理,以及 ...

  5. 云时代架构之游戏服务器的架构演进

    现代电子游戏,基本上都会使用一定的网络功能.从验证正版,到多人交互等等,都需要架设一些专用的服务器,以及编写在服务器上的程序.因此,游戏服务器端软件的架构,本质上也是游戏服务器这个特定领域的软件架构. ...

  6. Java开源生鲜电商平台-Java分布式以及负载均衡架构与设计详解(源码可下载)

    Java开源生鲜电商平台-Java分布式以及负载均衡架构与设计详解(源码可下载) 说明:主要是针对一些中大型的项目需要进行分布式以及负载均衡的架构提一些思路与建议. 面对大量用户访问.高并发请求,海量 ...

  7. Wind分布式游戏服务器引擎的实现

    Wind Wind是一款面向云的高性能.高效率以及高扩展性的大型分布式游戏服务器引擎.Wind利用Python语言的简洁语法以及丰富的生态库来提高游戏业务的开发效率,针对一些对性能有要求的游戏业务功能 ...

  8. Wind:一款面向云的分布式游戏服务器引擎

    Wind是一款面向云的高性能.高效率以及高扩展性的大型分布式游戏服务器引擎.Wind利用Python语言的简洁语法以及丰富的生态库来提高游戏业务的开发效率,针对一些对性能有要求的游戏业务功能(如实时战 ...

  9. 基于Socket的游戏服务器通信框架的设计与实现

    博客地址:blog.liujunliang.com.cn 开发工具:VS2017.Unity2017 本文介绍使用Socket/TCP来开发客户端与服务器端通信框架 博主使用过PhotonServer ...

最新文章

  1. 数据库基础笔记(MySQL)5 —— 基础索引
  2. 坦白讲!做 Java 工程师,挺好!
  3. 使用juggle简化网络编程
  4. [置顶] 程序员的奋斗史(十五)——谈性格
  5. 什么是数据中心,它们是如何变化的?
  6. C指针原理(31)-Ncurses-文本终端的图形
  7. 【实战】tensorflow 花卉识别
  8. Logisim 一个PLA电路
  9. 已安装的sql怎么添加功能_微信群管理工具有哪些功能?怎么在社群中添加微信小助手?...
  10. Java学习系列(十四)Java面向对象之细谈线程、线程通信(上)
  11. 网吧管理软件常见漏洞四节课
  12. H3C交换机配置常用命令
  13. linux 录制视频mp4,Kazam下载使用:优秀的Linux截图与屏幕视频录制软件
  14. 云南大学计算机专业双一流排名,盘点:42所“双一流”大学的一流学科!
  15. 为什么软件系统开发公司不会同意技术入股
  16. Room 使用及初步分析
  17. 一本通题解——1438:灯泡
  18. 计算机c盘一直减小咋办,C盘空间越来越小怎么办有效解决方案
  19. SLCP验厂辅导,SLCP数据收集和验证工具整合成在线格式的托管平台来完成
  20. 阿里百川淘宝联盟私域会员对接

热门文章

  1. 【科普贴】I2C通讯协议详解——偏软件分析和逻辑分析仪实例分析
  2. 能轻松部署的企业即时通讯软件
  3. 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。...
  4. ssm基于BS架构的校园爱心捐赠与物品交换平台的设计与实现毕业设计源码
  5. 聊一聊世界杯的半自动越位技术
  6. html left属性,css中left是什么意思?
  7. 面试题总结151-179
  8. pat 乙级 1015. 德才论(25)
  9. 刘可-寂寞才说爱 试听+下载+歌词
  10. 非易失性NV-SRAM简介