有关游戏的部署方案总结

来源:互联网 发布:淘宝劲舞团 编辑:程序博客网 时间:2024/06/05 19:14

关于分布式服务器部署方案的思考

1.思考要点
 部署需要考虑的流程包括两个方面
 1.1 初次部署流程
  1.1.1 运行环境搭建
  1.1.2 文件的放置
  1.1.3 服务器各个部分的启动
 1.2 更新流程
  1.2.1 启动各个机器上的服务进程
  1.2.2 关闭各个及其上的服务进程
  1.2.3 更新所有的配置文件,进程文件,修改参数
  1.2.4 重新启动各个服务进程
 总结:
  所以对于如果有几百甚至上千机器的分布式部署来说,主要的维护量在于更新。配置文件更新,进程文件更新,启动和关闭各个进程是一次工程浩大且持续性的工作。所以在思考部署的时候要尽量减少每次进行更新的维护成本。
  如果能够实现配置文件和进程文件的集中更新,启动和关闭集中进行,实现状态自动反馈,则会减少大量的成本和出错概率。

2.具体实现
 环境是window 2003系统,物理机集群。范围为一个IDC中心。考虑内容包括文件的集中部署,以及关闭、启动、状态反馈的集中进行。
 
 2.1 部署:
  2.1.1 使用网络盘映射方式,把服务进程的配置文件和进程文件部署在Centre服务器的一个文件夹下,如ServerRelease。所有其他实际运行的服务器把ServerRelease文件夹映射为自己的一个网络硬盘,如Y盘,并且每次启动自动连接。
  2.1.2 在Centre机器上部署一个realmPort用于管理该IDC的所有服务器。
  2.1.3 各个实际的物理机器上安装一个ServerDeamon服务。该服务是一个请求应答系统。可以接受realmPort的请求并作出反应。
  2.1.4 所有物理机器的日志,放置于统一位置,如D:\Log\
 2.2 更新
  2.2.1 通过realmPort发送启动指令,realmPort给各个ServerDeamon发送启动。从而启动各个服务器的进程。
  2.2.2 通过realmPort发送请求状态指令,从而从各个ServerDeamon获取各个服务器状态。
  2.2.3 通过realmPort发送关闭指令,realmPort给各个ServerDeamon发送关闭。从而关闭所有服务器。
  2.2.4 更新Centre机器上的进程文件和配置文件
  2.2.5 重复2.2.1
  
 总结:
  使用类似无盘工作站的方式实现分配式运行,集中部署,集中管理。大大减少运维管理成本。其中分布式部署的只有一个ServerDeamon程序。该程序设计上保证完成关闭,启动,反馈状态3个功能无需再次更新,且稳定不会宕机。

3.ServerDeamon设计
 如果要完成关闭,启动,反馈状态3个功能,无需更新;稳定不会宕机。主要需要几个设计原则。
 3.1 无需更新
  无需更新,则设计上需要把需要变化的指令部分交给系统或者服务进程实现。ServerDeamon不能进行解析。
  无需更新,对于解析参数仅仅接受系统Api参数。类似进行系统服务RPC调用。
  所以实现上对于关闭和启动使用了CreateProcess,参数直接使用传输的字符串。由于所有进程文件都在Y盘下(配置文件中配置),所以使用realmPort生成的字符串作为参数,无需解析。
  对于关闭,使用启动保留的iProcessId进行GenerateConsoleEvent进行安全关闭(Id也是realmPort传送,ServerDeamon不保留任何状态)。
  对于状态,CPU状态 内存状态 Process状态。唯一需要的参数就是ProcessId.固定不变。
 3.2 稳定不会宕机
  稳定的最好保证就是简单,安全。
  所以ServerDeamon是一个单线程,请求应答,没有任何状态存储的服务进程。