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

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

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

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

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

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

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

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

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

  • 相关阅读:
    vue+axios实现文件下载
    处理 Vue 单页面应用 SEO
    JSON.parse()与JSON.stringify()的区别
    JS设置Cookie过期时间
    <div>标签仿<textarea>。contentEditable=‘true’,赋予非表单标签内容可以编辑
    CSS上下左右居中的几种方法
    jqGrid 修改单元格值或者替换图片及其他
    对于Web性能优化, 了解和经验
    初步了解反射案列
    JS IndexOf移除符合规则的一项
  • 原文地址:https://www.cnblogs.com/wang-jx/p/10800775.html
Copyright © 2011-2022 走看看