Skip to content

乱谈游戏服务端分布式架构(一)

乱谈游戏服务端分布式架构(一) published on 乱谈游戏服务端分布式架构(一)有105条评论

architecture1

首先说明一下分布式架构的含义,很多人将“分布式架构”和“分布式运算”两个词理解为同一个概念。这里提到的分布式架构是指服务端程序可以分开部署到多台物理机上(当然也可以部署到同一台物理机上),目的在于通过扩展物理机或硬件设备来提升服务端程序的能力。这里说的“服务端能力”是指服务端的逻辑处理能力、网络数据吞吐量、可承载的客户端连接量等等。

在开始后面的叙述之前我们先按物理机在网络上的部署不同把服务端分为两类,注意这里是按物理机在网络上的部署情况来分类。为何按“物理机在网络上”的部署情况来分类?接下来我们就细细道来。

对于网络游戏而言,一定会有客户端的接入,那么这台服务器一定是部署到公网环境下,如果服务端所有的程序都部署到公网环境,那可以说是灰常的不安全。试想如果负责逻辑处理的服务端程序在公网,黑客们就可以利用各种漏洞入侵了,可以做的事情如下:下载你的服务端程序、备份你的数据库内容等等。所以我们在设计之初就将负责连接的服务端程序和负责逻辑的服务端程序分开,这样至少可以在一定程度上避免这种问题,为什么是一定程度上呢,这样可以拦截掉一部分“新手”黑客。

按物理机在网络上的部署情况来分类,分为两类:网关服务器和逻辑服务器。

网关服务器部署在公网上

  • 接受连接,不管是来自公网的客户端连接,还是来自私网的逻辑服务器连接。反正接受连接就对了。
  • 接收来自公网客户端的数据包并按一定规则转发这些数据包到私网逻辑服务器。
  • 接受来自私网逻辑服务器的数据包并转发到目标公网客户端。
  • 转发所有逻辑服务器之间的内部通讯包。

逻辑服务器部署在私网上

  • 接收和处理来之网关服务器转发的客户端数据包。
  • 发送逻辑包到网关服务器。
  • 接受和处理来之其他逻辑服务器的数据包。

上面就是按物理机部署情况不同的分类,接下来的程序设计就要支持这种部署方式。

首先很明确的是网关服务器程序一定是个可以独立部署的程序,而逻辑服务器程序应该满足各种不同需要,比如支持不同游戏、支持各种逻辑端的管理、不同功能的逻辑端可多次部署、通过添加统一类型的逻辑端来支持更多数量的玩家等。

理解一下上面的文字,整理了一下简要需求,当然是非正式性质的:

  • 独立的网关服务端,独立的逻辑服务端
  • 网关服务端负责交换数据包,逻辑服务端主要负责处理数据包
  • 网关服务端要能控制包的流向
  • 每个端只是一个执行文件,框架而已,加载不同dll的实现不同的功能
  • 各dll要做的主要事情就是处理数据包
  • 网关服务端、逻辑服务端都可以加载多个不同的dll,各dll可以按顺序处理包
  • 各种dll来实现不同的逻辑,各dll比较独立,耦合性弱
  • 制订接口方案,开发人员只需要按接口规范写逻辑dll,能多个人同时开发
原创文章,转载请注明: 转载自游戏无界·达秀的黑暗空间

本文链接地址: 乱谈游戏服务端分布式架构(一)

本站作品除特殊申明外均为原创,采用知识共享署名-非商业性使用-禁止演绎 3.0 Unported许可协议进行许可。如果需转载请保持文章完整性和标明原文出处,禁止商业用途。

您对下面的文章也感兴趣吧:

  1. Pingback: stanley

  2. Pingback: Jason

  3. Pingback: Jason

  4. Pingback: Charlie

  5. Pingback: Floyd