C C++最全游戏服务器的常用架构_游戏服务器架构,2024年最新字节跳动面试

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

  • 内存架构:主要决定服务器如何使用内存,以最大化利用服务器端内存来提高承载量,降低服务延迟。
  • 逻辑架构:设计如何使用进程、线程、协程这些对于CPU调度的方案。选择同步、异步等不同的编程模型,以提高服务器的稳定性和承载量。可以分区分服,也可以采用世界服的方式,将相同功能模块划分到不同的服务器来处理。
  • 通信模式:决定使用何种方式通讯。基于游戏类型不同采用不同的通信模式,比如http,tcp,udp等。

游戏类型

卡牌跑酷等休闲游戏弱交互游戏

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分区分服RPG游戏(RPG页游)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分服模型是游戏服务器中最典型,也是历久最悠久的模型。在早期服务器的承载量达到上限的时候,游戏开发者就通过架设更多的服务器来解决。这样提供了很多个游戏的“平行世界”,让游戏中的人人之间的比较,产生了更多的空间。其特征是游戏服务器是一个个单独的世界。每个服务器的帐号是独立的,每台服务器用户的状态都是不一样的,一个服就是一个世界,大家各不牵扯。
后来游戏玩家呼吁要跨服打架,于是就出现了跨服战,再加上随着游戏的运行,单个服务器的游戏活跃玩家越来越少,所以后期就有了服务器的合并以及迁移,慢慢的以服务器的开放、合并形成了一套成熟的运营手段。目前多数游戏还采用分服的结构来架设服务器,多数页游还是采用这种模式。

数据共享游戏服务器

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
网关部分分离成单端的gate服务器,DB部分分离为DB服务器,把网络功能单独提取出来,让用户统一去连接一个网关服务器,再有网关服务器转发数据到后端游戏服务器。而游戏服务器之间数据交换也统一连接到网管进行交换。所有有DB交互的,都连接到DB服务器来代理处理。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 场景服务器:它负责完成主要的游戏逻辑,这些逻辑包括:角色在游戏场景中的进入与退出、角色的行走与跑动、角色战斗(包括打怪)、任务的认领等。场景服务器设计的好坏是整个游戏世界服务器性能差异的主要体现,它的设计难度不仅仅在于通信模型方面,更主要的是整个服务器的体系架构和同步机制的设计。
  • 非场景服务器:它主要负责完成与游戏场景不相关的游戏逻辑,这些逻辑不依靠游戏的地图系统也能正常进行,比如公会聊天或世界聊天,之所以把它从场景服务器中独立出来,是为了节省场景服务器的CPU和带宽资源,让场景服务器能够尽可能快地处理那些对游戏流畅性影响较大的游戏逻辑。
  • 网关服务器: 在类型一种的架构中,玩家在多个地图跳转或者场景切换的时候采用跳转的模式,以此进行跳转不同的服务器。还有一种方式是把这些服务器的节点都通过网关服务器管理,玩家和网关服务器交互,每个场景或者服务器切换的时候,也有网关服务器统一来交换数据,如此玩家操作会比较流畅。

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

如果你需要这些资料,可以戳这里获取**

  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++棋牌游戏服务器架构通常包括以下几个主要组件: 1. 游戏逻辑层:负责处理游戏规则、游戏状态的更新和管理,以及处理玩家的操作请求。这一层通常由C++编写,包括游戏逻辑的实现和相关算法。 2. 网络通信层:负责处理客户端和服务器之间的网络通信。这一层通常使用TCP或UDP协议进行数据传输,并提供网络连接的建立、断开、数据收发等功能。常用C++网络库有Boost.Asio、libevent等。 3. 数据库层:负责存储和管理游戏数据,如玩家信息、游戏记录等。这一层通常使用关系型数据库(如MySQL)或NoSQL数据库(如Redis)来存储数据,并提供相应的读写接口。 4. 多线程/多进程管理:为了提高服务器的并发处理能力,可以采用多线程或多进程的方式来处理客户端请求。多线程可以使用C++标准库中的std::thread或第三方库如pthread来实现,多进程可以使用fork或者第三方库如boost.process来实现。 5. 负载均衡与高可用性:为了提高服务器的性能和可用性,可以采用负载均衡技术将客户端请求分发到多台服务器上进行处理,同时可以使用集群和备份机制来实现高可用性。常用的负载均衡软件有Nginx、HAProxy等。 6. 安全认证与防作弊:为了保证游戏的公平性和安全性,可以在服务器端进行安全认证和防作弊处理。常见的技术包括数据加密、防止外挂和作弊程序的检测与防御等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值