zoukankan      html  css  js  c++  java
  • 阅读心得8:《王者荣耀游戏服务器架构演进(完整版)》

    本周阅读了老师推荐阅读的公众号:架构师中的推文《游戏服务器的架构演进(完整版)》,感想如下:

    王者荣耀,年轻人必玩的两个游戏之一,游戏是类dota手游,游戏中的玩法以竞技对战为主,玩家之间进行1V1、3V3、5V5等多种方式的PVP对战,还可以参加游戏的冒险模式,进行PVE的闯关模式,在满足条件后可以参加游戏排位赛等。

    其峰值大约平均每天在线人数将近300万人,而日活跃量高达750万人,这就意味这王者荣耀的服务器需要同时支持这么多人进行对战,进入游戏时,我们发现,需要进行选择游戏大区,QQ区还是微信区,IOS端,还是安卓端,通过这样几次分类,已经使得服务器尽量变得均衡,而进入游戏选择区服时,我们发现,基本每个区都有200个以上的具体服务器,这就使得服务器变得更加均衡。

    众所周知,游戏服务器端,是一个会长期运行的程序,并且它还要服务于多个不定时,不定点的网络请求。所以这类软件的特点是要非常关注稳定性和性能。这类程序如果需要多个协作来提高承载能力,则还要关注部署和扩容的便利性;同时,还需要考虑如何实现某种程度容灾需求。

    那么服务器端架构设计需要注重些什么呢?文章中提到的,CPU、内存、网卡的设计,文章中提到:

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

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

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

           首先,内存不是我们考虑的主要问题,因为现在我们的所有设备,都处于内存过剩状态,其次,通信方式也不是我们应该考虑的问题,4G网络,哦不,哪怕是3G网络,已经足以支持大部分网络游戏的正常运行,我们需要考虑的还是服务器端的逻辑架构。

           以前我们的游戏,第一代卡牌类休闲游戏,由于是弱交互游戏,那么对流量的需求不是很大。再到第二代网游服务器,电脑与网络的普及使得我们越来越多的人接触到了互联网,而互联网游戏也因此得到了发展,此时的服务器架构主要采用而是分服模型。

           而分服虽然可以解决服务器扩展的瓶颈,但单台服务器在以前单线程的方式来运行,没办法充分利用服务器资源,遇到跨服战便无法进行。

           此时第三代服务器端架构应运而出,一般地,我们可以将一个组内的服务器简单地分成两类:场景相关的(如:行走、战斗等)以及场景不相关的(如:公会聊天、不受区域限制的贸易等)。经常可以见到的一种方案是:gate服务器、场景服务器、非场景服务器、聊天管理器、AI服务器以及数据库代理服务器。


    通过这种类型服务器架构,因为压力分散了,性能会有明显提升,负载也更大了,包括目前一些大型的 MMORPG游戏就是采用此架构。

           以上便是本篇文章基本所介绍的游戏服务器端架构的发展历程,我觉得自己收获很大,阅读了很多知识,基本对服务器端的架构发展有了了解,深深感觉到自己的知识远远不够。会更加努力的学习。

  • 相关阅读:
    2019年8月下旬
    2019年8月上旬
    2019年7月 vue专题
    2019年7月上
    mysql安装 demo [linux centos7] [5.7.26]
    记一个日志冲突——管中窥豹[java混乱的日志体系]
    Mybatis-Generator demo
    dubbo doc入门文档
    springBoot+mysql+mybatis demo [基本配置] [遇到的问题]
    nginx安装demo
  • 原文地址:https://www.cnblogs.com/ljl1998/p/10790523.html
Copyright © 2011-2022 走看看