zoukankan      html  css  js  c++  java
  • 架构阅读笔记3

    阅读文章《游戏服务器的架构演进(完整版)》

      游戏服务器端,是一个长期运行的程序,要服务于多个不定时不定点的网络请求,要尤其关注稳定性和性能。由于用户数量的庞大,服务器需要多个协作来提高承载能力,还要关注部署和扩容的便利性,还要考虑何种程度容灾需求。最基本的做法就是“空间换时间”。

    对于游戏服务端架构,最重要的三个部分就是,如何使用CPU、内存、网卡的设计:

    内存架构:主要决定服务器如何使用内存,以最大化利用服务器端内存来提高承载量,降低服务延迟。

    逻辑架构:设计如何使用进程、线程、协程这些对于CPU调度的方案。选择同步、异步等不同的编程模型,以提高服务器的稳定性和承载量。可以分区分服,也可以采用世界服的方式,将相同功能模块划分到不同的服务器来处理。

    通信模式:决定使用何种方式通讯。基于游戏类型不同采用不同的通信模式,比如http,tcp,udp等。

      之前的网游服务器都是分区分服,玩家都被划分在不同的服务器上,每台服务器运行的逻辑相同,一个服就是一个世界,玩家不能在不同的服务器之间交互,互不牵扯。想要更多的玩家在同一世界,保持玩家的活跃度,于是就有了世界服模型。

      一般地,我们可以将一个组内的服务器简单地分成两类:场景相关的(如:行走、战斗等)以及场景不相关的(如:公会聊天、不受区域限制的贸易等)。经常可以见到的一种方案是:gate服务器、场景服务器、非场景服务器、聊天管理器、AI服务器以及数据库代理服务器。通过这种类型服务器架构,因为压力分散了,性能会有明显提升,负载也更大了,包括目前一些大型的 MMORPG游戏就是采用此架构。不过每增加一级服务器,状态机复杂度可能会翻倍,导致研发和找bug的成本上升,这个对开发组挑战比较大,没有经验,很容易出错。

  • 相关阅读:
    类定义(课下选做)
    结对项目第一周
    迭代和JDB
    JAVA 第五周学习总结
    JAVA 第四周学习总结
    JAVA 第三周学习总结
    springcloud-provider-consumer-register
    springcloud-eureka
    springBoot-打包
    spring-Scheduler
  • 原文地址:https://www.cnblogs.com/wang-jx/p/10800775.html
Copyright © 2011-2022 走看看