一文弄懂游戏服务器的云原生化

go 开源游戏服务器框架 1.黑暗死 https://github.com/OpenDiablo2/OpenDiablo2 阅读详情

如今,云原生技术在游戏行业的应用越来越广泛。笔者对此有浓厚兴趣,特地集中学习了一段时间。这篇文章既是记录学习过程的个人笔记,也是游戏服务器云原生的入门引导文章。读完这篇文章,可以对云原生在游戏行业的应用现状、游戏服云原生化的重难点及主流解决方案有初步了解。

云原生背景知识

首先要搞懂什么是云原生技术。云原生(Cloud Native)是指把程序部署到云平台而非传统机房上,同时在程序设计之初就以云的方式思考,充分利用云平台弹性和分布式的特点。

很多人把容器化等同于云原生技术,其实不然。应该说,容器化只是云原生中非常重要且必不可少的一环。其他概念还包括:微服务、DevOps、持续交付。而容器化是实现这些概念的基础,通过容器化,可以方便地完成微服务的细粒度拆分和部署,也可以通过YAML配置文件践行DevOps提倡的开发运维一体化的思维,还可以敏捷快速地修改程序并发布到线上。

Docker

我是从Docker官网和《深入浅出Docker》开始学习Docker的。这是典型的官方文档加指导书的学习模式,官方文档包含新手教程,照着教程把命令敲一遍就算入了门,在这过程中积累的问题再通过阅读书得到解答。

首先搞懂为什么要有Docker。最早的时候,直接在物理机上部署程序,为了保证程序平稳运行,需要购买明显超出性能需要的服务器,但是这样会造成明显的浪费。后来出现了虚拟机,在同一物理机上部署多态虚拟机,彼此隔离。但虚拟机会独占操作系统,过于重度。这时候出现了容器,它是共享宿主操作系统,因此比虚拟机更轻量,更节省资源,适合大量部署。其中Docker是一种应用最广泛的容器。

存在Windows容器和Linux容器,但不存在Mac容器。不过可以在Mac上运行Linux虚拟机,再在上面跑Linux容器,这也是Docker for Mac的实现方式。由于Docker for Mac的特殊实现,我在Mac上跑Agones时还出现了一些问题,后面再细说。

Docker作为容器的一种实现,它也要遵循OCI(开放容器计划)。这样的好处是多种不同的容器实现可以自由替换,其他依赖容器的软件(如Kubernetes)不用依赖特定类型的容器。

Docker通过镜像(Image)来实现容器的快速复制和部署。镜像内部包含一份精简版操作系统、程序代码及依赖库。通过build命令从Dockerfile文件构建镜像,并发布到仓库(Registery)中,以供其他人使用。

Kubernetes

我学习Kubernetes主要是通过官网教程和《Kubernetes修炼手册》。这本书与《深入浅出Docker》的作者是同一个人。学习过程基本上是跟着官网敲命令,然后看书理解概念和原理。

首先需要搞懂为什么要有Kubernetes。虽然Docker和容器为程序提供了轻量级的运行时环境,但是多个容器之间的协同工作、复制、版本更新,这些功能容器本身并没有提供。官方的说法是,Kubernetes是谷歌推出的集群管理和服务编排系统,用于自动部署、扩展和管理容器化程序。集群管理比较好理解,如按节点部署应用程序、扩缩容都属于集群管理的功能;服务编排则类似于把足球场上不同位置的人成一个队伍,即组合多个容器以服务为单位对外提供功能访问。

Kuberntes和Docker一样偏运维向,因此初学起来比较枯燥,都是在敲命令,不像学别的开源软件可以一上来就可以写程序。对于DevOps接触少的人可能不太好适应。因此建议先快速搭建一个可运行的Kubernetes环境(例如通过minikube),等充分上手后再通过云服务(如谷歌云、阿里云)搭建完整的环境。

其次要弄懂Kubernetes和Docker之间的关系。最开始Docker很火,而Kubernetes刚推出,因此后者为了推广将默认容器实现设置为Docker。后来Kubernetes发展壮大后,谷歌想收购Docker,但Docker不同意。Docker的算盘是自己也想进军服务编排的领域,因此推出了Docker Swarm与Kubernetes竞争(事实上落败)。而站在Kubernetes的角度,它只想要一个干净版的容器,不想要Docker后来推出的那些与自己竞争的多余功能,因此推出了独立的CRI(容器运行时接口)。Docker迫于压力,被迫将其中兼容CRI的部分功能抽离出来,成为containerd。最终两方妥协的结果是,Kubernetes默认使用的容器成为了containerd。

最后要弄懂Kubernetes中的主要概念:Node(节点)、Pod、Deployment(部署)、Service(服务)。

Node代表一个机器,可以是物理机或者虚拟机。一个Kubernetes集群中包含一个或多个主节点(control plan)和多个从节点(data plan),主节点可以做主从互备。主节点负责管理和调度整个Kubernetes集群,从节点上部署应用程序容器。一个Node上可以运行一个或多个Pod。

Pod是Kubernetes中最小的管理单元。它是一组容器的集合,内部容器之间共享内存、磁盘等资源,并对外统一提供一个IP。一个Pod中可以包含一个或多个容器,不过推荐只包含一个。Pod的YAML配置文件是开发和运维共同关注的信息源,成为实现DevOps所需的桥梁。

Deployment代表部署,它是比Pod更高级别的抽象,提供了Pod的生命周期管理、版本管理、可扩展性、滚动更新等功能。Deployment通过ReplicaSet来提供自愈和扩缩容能力。ReplicaSet还可以实现版本升级和回滚。

Service代表服务,它是一组Pod对外提供的服务,对外提供稳定的域名、IP。Pod之间通过负载均衡分担流量。通过为Pod赋予Label,可以使Service将流量导入对应Label的Pod。通过将Label设置为版本号,可以实现版本的安全升级。不过Service的负载均衡功能会显著增加游戏服务器延时,因此不适用于游戏服务器,这点会在后面单独说明。

云原生在游戏行业应用现状

云原生技术最开始是在互联网行业大规模使用的。国外代表是谷歌、亚马逊,国内代表是阿里。Kubernetes最早也是谷歌对内部使用的服务编排技术的总结抽象和开源。后来,随着云平台底层的越来越完善,人们发现使用云原生技术不仅能提供更好的稳定性,还能节省服务器费用,简化开发上线流程,方便运维管理,可谓好处多多。近年来,这波云原生的浪潮也席卷到了游戏行业,但游戏行业有着自己的特点,因此原产于互联网行业的云原生技术会有一些水土不服,需要做定制化的修改。笔者对于游戏行业中几种主要的应用总结如下。

游戏服务器容器化

这是游戏行业云原生改造中难度最大,却也是改造后收益最大的一块。难度在于:不同于互联网应用的无状态,游戏服务器通常是有状态的,而且对延迟非常敏感,不同类型的游戏服务器架构差异又很大,很难像互联网那样提出一个普适各种场景的通用解决方案。通常来说,有明确对局时间的开房间类型游戏(如王者荣耀)更适合容器化。另外,游戏中的网关及中台等无状态服务也适合容器化。这块具体还会在后面单独详细说明。

云原生数据库

云原生数据库不同于传统数据库,它的主要特点是可以弹性扩容,在流量出现急剧提升时可以快速增加节点以应对请求压力;另外搭建和管理方便,运维成本低。它的底层是通过Kubernetes的StatefulSet(有状态副本集)和Persistent Volume(持久卷)来实现的。

知名的云原生数据库国外有Amazon Aurora,国内有阿里云的PolarDB。《原神》就使用了PolarDB来实现高性能的海量数据查询。

云原生数据仓库

游戏数据的查询和分析是游戏运营过程中重要的一环。传统上游戏公司会自建数据仓库来处理,而云原生的数据仓库提供了一种更优的替代方案,可以做到更低的成本、更方便的运维和更高的实时性。

较知名的云原生数据仓库,国内有阿里云的AnalyticDB,国外有Snowflake和Redshift。

云游戏

云游戏是指在服务器运行游戏客户端,将游戏画面经过视频压缩后,传输到用户的显示设备上进行游戏。这里技术关键点有三个:一是需要有强大GPU和CPU性能的服务器来运行游戏客户端,二是需要将游戏客户端容器化以方便弹性伸缩,三是需要提供性能良好的视频压缩算法和网络传输协议。所以,云游戏也非常适合通过云原生的方式来部署。

函数计算

函数计算用来处理计算密集型的任务,只需要提供函数计算的代码,就可以让调度系统自动分配和调度计算任务。它是一种serverless服务,使用者无需关心服务器的具体状况。

阿里云提供了函数计算的服务,莉莉丝的《剑与远征》项目使用它来做战斗校验,比原先自己做校验服务容器化获得了更低的弹性伸缩延迟。

游戏服务器云原生化

游戏服务器上云与传统互联网行业有着不同的特点,因此容器化改造需要一方面保留Kubernetes中适用的部分,另一方面摒弃掉不适合的部分并替换成新的实现。具体来说,要解决的重点问题如下:

  1. 为了降低延时,需要客户端直连游戏服,而非通过暴露Service的方式做负载均衡。
  2. 游戏服是有状态的,缩容时不能直接停掉服务器,会导致玩家掉线;而是要等到这个服没有玩家后再停止服务。

具体上云的实现逻辑,行业内并没有统一的框架或规范,游戏厂商各家有各家的实现。目前较知名的框架有Agones、KruiseGame,各自的侧重点也不尽相同。我在学习过程中调研过以下几个开源项目,分别做下介绍。

paddle-soccer

这个项目在2016年推出,是一个实验性质的项目,用于验证游戏服务器在Kubernetes上的管理。这个项目的发起人Mark Mandel来自谷歌,他同时也是Agones项目的发起人。可以说,Agones就是在这个项目的基础上发展和完善的。

这个项目的目的是通过一个简单的足球对战游戏,来验证游戏服在Kubernetes上的托管。架构上分为匹配服和游戏服,弹性扩容主要是针对后者。作者为这个项目写过四篇博文,详细介绍了项目目的和设计思路。同时,作者还在GDC 2017上做过专题演讲。

流程是客户端通过匹配服查找要连接到的游戏服,然后将游戏服的ip和端口返回给客户端,客户端连接到游戏服,开始比赛。这里为了延时考虑,客户端直连游戏服,而非像传统互联网应用一样通过Service做负载均衡。实现方法是将游戏服Pod的hostNetwork设置为true,这样Pod就可以直接使用宿主的网络名称空间,外部连接没有额外延迟。

由于各个Pod共用宿主机的网络空间,那么就可能出现端口冲突。解决办法是将已使用的端口记录到Redis中,新服务器启动时先向Redis获取已使用的端口并排除掉,然后在剩余的端口范围中随机,直到获取到可用的端口。

由于游戏服是有状态的,因此不能使用无状态的Deployment来管理,而是通过Pod加Label的方式自行实现scaler。由Label来区分服务器是何种类型(匹配服还是游戏服),并将同种类型的服务器安排在同一节点上。

在扩缩容上,这个项目优先考虑节点的扩缩容而非游戏服,因为节点数量与成本直接相关。为集群设置最大节点数和最小节点数,并为每个节点设置CPU缓冲区大小,避免耗尽节点的CPU。

为了避免集群碎片化,利用节点亲和性,让游戏服务器尽量集中到已有节点中。当某个节点使用的CPU降低到一定阈值时,封锁节点,不再允许调度新的Pod到这个节点上。当这个节点上的所有游戏服都退出后,再删除这个节点。

paddle-soccer在代码中与谷歌云强绑定,所以只能在谷歌云中使用。如果想在别的云平台使用,除非自己修改代码。

Agones

Agones在2017年推出,是谷歌和育碧联合发起的游戏服务器云原生解决方案。前面说到,它的发起人和paddle-soccer是同一人,但是它在后者的基础上做了进一步的封装和抽象,并引入育碧在游戏行业开发3A的经验,使得通用性更强、更容易使用。

与paddle-soccer类似,Agones对于游戏服务器采用了直连的方式,而非通过Service做负载均衡。

对于扩缩容这块,首先需要理解Agones的工作模型。游戏服通过Fleet来管理。Fleet上维护有所有可用的游戏服,这些游戏服可能处于Allocated状态或Ready状态。Allocated状态代表已投入使用的服务器,通过匹配服务可以分配到;而Ready状态代表已准备好,但还没投入使用的服务器。扩容和缩容都是针对Fleet。扩容时向Fleet添加新的状态为Ready的服务器,缩容时仅从Fleet删除状态为Ready的服务器,这样能保护正在使用的服务器不被异常关闭。如果确想关闭状态为Allocated的服务器,可以先由业务端调用SDK将服务器状态置为Ready。

另一个关键概念是FleetAutoScaler,它用来做弹性扩缩容。可以通过FleetAutoScaler设置Fleet的最大和最小副本数,以及缓冲区大小。缓冲区也就是Ready服务器的数量。通过这些设置,Fleet的服务器数量会控制在最大和最小值之间,而且扩缩容时会保持固定的缓冲区大小。

通过Fleet和FleetAutoScaler,这个模型维护一组预热的游戏服,可随时根据需要投入使用,避免硬启动带来的需求满足延迟。

Agones还提供了一套完善的SDK供业务端使用。SDK目前支持Go、C++等多种语言,以及Ready()、ShutDown()等查询或者设置游戏服状态的API。业务端调用SDK时,会向SDK服务器发送gRpc请求,SDK服务器再将请求转发到对应游戏服。

除此之外,Agones还提供健康检查的功能。当判断游戏服处于不健康状态时,处于Fleet管理下的游戏服会被删除并重新创建。

Agones可以在各种云平台和Minikube中使用。但是在Mac系统上跑Minikube时,有可能出现从外部连不上游戏服务器的问题,这个目前还没有太好的解决办法。

OpenKruiseGame

OpenKruiseGame(OKG)由阿里云于2022年推出,目前还是一个比较新的项目。它旨在帮助业务开发者简化游戏云原生化的过程,并提供了热更新、原地升级和定向管理等实用功能。

OKG属于OpenKruise的子项目,前者也依赖后者来构建。OpenKruise是阿里云推出的一个Kubernetes扩展功能集,它提供了Kubernetes原生所没有的一些功能,如:通用工作负载、原地升级、可配置扩缩容等。OpenKruise目前已在互联网行业得到广泛应用,如阿里巴巴、斗鱼、Boss直聘、小红书等。

与Agones不同,OKG的目标对象不仅包括PVP游戏,也包括PVE游戏,而不像Agones主要面向PVP游戏。这使得OKG在功能设计上与Agones有所不同,除了传统的弹性扩缩容,还包括热更新及定向运维管理等功能,这些功能在PVE游戏中更为需要。

与PVP游戏相比,PVE类型的游戏特点是用户状态保存的时间更长,不像有明确对局时间的开房间游戏(PVP)那样一局只有十几分钟,理论上PVE游戏中用户只要愿意可以一直在线,这个过程中状态需要一直维持。

为此,OKG首先添加了定向运维的功能。通过设置要定向管理(Reserve)的服务器id,删除对应id的游戏服,同时在创建新服时避免该id对应的游戏服生成。在缩容时,OKG优先删除要Reserve的游戏服,然后依次按照状态、优先级和服务器id等参数确定剩余游戏服的删除顺序。通过Reserve指定下线的功能,可以处理PVE游戏经常会遇到的合服场景。

其次,OKG提供了热更新的功能。很多语言(如Go)不具备语言级别的热更新能力,但可以通过容器的方式支持。OKG的热更新功能由底层的OpenKruise提供。实现方法是在每个游戏服Pod中部署Sidecar和Main两个容器,Sidecar放游戏脚本,Main放游戏引擎和守护进程。热更新时只更新Sidercar,Main不动。这样就无需对Pod整体重建,从而做到在玩家不中断游戏的前提下修改游戏逻辑。

与Agones类似,OKG使用CRD来自定义游戏服相关的工作负载,包括两种:GameServerSet与GameServer。GameServerSet是对一组游戏服管理的抽象,类比于Agones中的Fleet,它是对OpenKruise中的Advanced StatefulSet的进一步扩展,因此也具有后者特有的原地升级(热更新)功能。GameServer是对一个游戏服管理的抽象,也就是对游戏服定向运维动作的记录,因此删除GameServer也不会触发实际游戏服的删除。

截止本文写作时止,OKG刚刚迭代到0.4版本。作为一个新兴的项目,前面还有很长的路要走。

小结

总的来说,由于游戏类型众多,服务器架构彼此差异大,很难找到一个像互联网那样容易标准化的云原生模型和解决方案。不管是Agones、OpenKruiseGame,还是游戏项目组自己实现的框架,都只适合特定游戏类型或者解决特定问题。不过,借助云原生技术的帮助,可以在成本控制、便捷运维、快速发布方面取得优势,这些优点是传统的部署方式所不具备的。相信随着云原生技术的发展,以及游戏业务和云原生技术的深度融合,游戏服务器的云原生化必将成为未来持续的趋势。

基于anbox的云游戏技术简介 概述 anbox是一个基于容器技术的android虚拟化系统,主页位于https://github.com/anbox/anbox 北弓团队做了些许改进https://github.com/DockDroid/openvmi xdroid做了更多优化:https://www.linzhuotech.com/ 华为基于anbox做的robox:https://support.huaweicloud.com/prtg-robox-kunpengcps/kunpengcps_robox_25_0... 阅读详情

相关推荐

Golang中用于游戏服务器或应用服务器的框架-Golang开发

在golang中为游戏服务器或应用服务器提供框架。 einx的示例服务器(https://github.com/Cyinx/game_server_einx)功能用户友好的灵活模块化高精度计时器支持在golang中简化einx用于游戏服务器或应用程序服务器的框架。 einx的示例服务器(https://github.com/Cyinx/game_server_einx)功能用户友好的灵活模块化高精度计时器支持简单的RPC入门安装go get github.com/go-sql-driver/mysql go get github .com / yuin / gopher-lua go获取github.com/Cyinx/einx简要代理-基本接口模块-服务人员网络-模块的网络单元。组件的实现。 计时器-计时器轮。

OpenKruiseGame 项目常见问题解决方案

OpenKruiseGame 项目常见问题解决方案 项目基础介绍和主要编程语言 OpenKruiseGame(简称 OKG)是一个面向多云的开源 Kubernetes 工作负载,专门为游戏服务器设计。它是开源工作负载项目 OpenKruise 的子项目,属于云原生计算基金会(CNCF)在游戏领域的应用。OpenKruiseGame 旨在简化游戏服务器的云原生转型,使其更快速、更稳定。 该项目的主要...

gitblog_00709的博客 706

AI风控系统中的实时决策架构:架构师的关键设计

当用户点击「确认支付」时,一场毫秒级的“欺诈攻防战”正在后台悄然打响:系统需要在100ms内完成用户行为特征提取→欺诈模型推理→规则引擎校验→最终决策返回。这就是AI风控实时决策架构的核心——用技术对抗“实时化的欺诈手段”。本文将以「餐厅智能点餐系统」为类比,拆解实时风控架构的每一层逻辑:从“如何快速拿到用户的实时行为特征”(像服务员实时收集顾客的忌口),到“如何让模型和规则协同决策”(像厨师长结合菜谱和经验判断菜能不能做),再到“如何保证系统扛住大促的高并发”(像餐厅加桌子应对客流高峰)。我们会用。

2502_91592937的博客 1472

云原生游戏第 2 讲:OpenKruiseGame 设计理念详解

本节课程由阿里云容器高级技术专家,刘中巍(莫源)与大家一起探讨游戏云原生化的最佳方式,介绍 OpenKruiseGame 的前世今生以及设计的初衷与思路,同时带来一些关于阿里云容器服务在游戏云原生化方面的探索与思考。快快扫描下方海报二维码,进行预约吧~~...

阿里巴巴云原生的博客 1223

使用CLion在Window端进行linux开发

        以往不管是开发x86端linux程序还是arm端linux程序,都是使用Source Insight作为源码编辑工具的,如下图      去年底,发现CLion的2018.3更新版本,可以支持remote host开发了,大爱!     我是基于以下几点原因,将开发工具换成CLion 1. 语法高亮较明显、跳转、重构方便(我很看重这个); 2. 可以使用图形界面进行调...

alist的笔记专栏 1万+

iOS面试题大全(附带答案)

C语言相关面试题 1.static有什么用途? 答案:在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数。 static 属于静态变量,使用它修饰的变量生命周期是整个源程序。 @1.在函数体内的 static 变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; @2.在模块内的 static 全局变量可以被模块内所有函数访问,但不能被模块外其它函数访问; @3.在模块内的 static 函数只被这一模块内的其它函数调用,这个函数的使用范围被限

IOSNF的博客 2426

云游戏背后的技术

以往的网络游戏需要玩家下载并安装游戏客户端,运行过程中的运算也是在本地完成的,其运行速度、画面效果等都受到本地电脑硬件配置的影响,导致配置不够的玩家体验不佳甚至无法运行游戏。通过虚拟化,云游戏服务提供商可以在强大的服务器硬件上运行多个游戏实例,并将这些实例的输出流传输到玩家的设备上。边缘计算技术在云游戏中发挥着至关重要的作用,通过将计算和存储能力推向网络边缘,显著降低了延迟,提高了游戏的响应速度和用户体验。音视频编解码技术是云游戏体验的关键,涉及到将游戏画面和音频实时编码、传输和解码的过程。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1235

字节跳动扣子AI应用开发平台之实战

推出背景:扣子平台由字节跳动推出,旨在让非开发者也能快速创建、调试和优化聊天机器人。上线时间:扣子平台于2024年2月1日正式上线。功能定位:扣子是一个AI聊天机器人和应用程序编辑开发平台,可以理解为字节跳动版的GPTs。

恩爸编程 5897

探索Agones:Kubernetes上的游戏服务器管理利器

探索Agones:Kubernetes上的游戏服务器管理利器 agonesDedicated Game Server Hosting and Scaling for Multiplayer Games on Kubernetes项目地址:https://gitcode.com/gh_mirrors/ag/agones 在当今的在线多玩家游戏中,稳定且高效的服务器管理是至关重要的一环。这就是Ago...

gitblog_00027的博客 1213

字符编码——简体中文编码中区位码、国标码、内码、外码、字形码的区别及关系

目录区位码国标码(交换码)内码(机内码)区位码、国际码、内码的转换为什么要加上20H为什么加上80H 本文以GB2312为例,讲述区位码、国标码、内码、外码、字形码 区位码 整个GB2312字符集分成94个区,每区有94个位,每个区位上只有一个字符,即每区含有94个汉字或符号,用所在的区和位来对字符进行编码(实际上就是字符编号、码点编号),因此称为区位码。 换言之,GB2312将包括汉字在内的所有字符编入一个94 * 94的二维表,行就是“区”、列就是“位”,每个字符由区、位唯一定位,其对应的区、位编号合并

路人coder 5341

弹窗提示报错: F:\c\CFX5\bin\Debug\net9.0-windows10.0.26100.0\CFX5.dll 面向无法动态枚举工具箱项目的平台...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 947

自顶向下学习K8S--部署Agones

本文在本人博客,原文地址:http://viogami.tech/index.php/blog/346/我是gopher,离不开云原生,自然也逃不了理解docker和K8S这俩。今天抽空想玩下,进而对K8S有实践性的理解。more学一个新事物从底层理论学肯定是最系统的,但不是最工程的。对于K8S,我个人认为相比苦苦理解各种集群,节点,pods等等概念,不如实际上手一次,从实践上逐步理解理论,自顶向下才是最快最高效的学习模式,因为目的是使用K8S,是工程化,而不是了解k8s架构,设计云云。

viogami的博客 1265

Python爬虫抓取学术期刊数据(Springer、Elsevier)

本文详细介绍了如何使用Python爬虫抓取学术期刊网站(如Springer、Elsevier)上的文章信息,并进行数据清洗和存储。我们使用了requestsSeleniumpandas等技术,通过模拟浏览器行为来绕过反爬虫机制,并将数据保存为Excel文件,方便后续分析。未来,我们可以通过加入更多的期刊网站数据源,扩展爬虫的功能,抓取更多的学术数据。同时,结合自然语言处理(NLP)技术,可以对抓取的文章进行自动化的摘要提取和主题分类,为学术研究提供更多的支持。

2201_76125261的博客 1487

ACK One x OpenKruiseGame 全球游戏服多地域一致性交付最佳实践

本文通过一个示例介绍了 ACK One 在全球游戏服多地域一致性交付最佳实践。示例中涉及到 4 个 Kubernetes 集群和一个简单游戏服 Yaml。而当实际生产环境中,很可能出现集群数量更多、游戏服应用描述更复杂的情况,此时做好应用的抽象是关键之处。

阿里巴巴云原生的博客 1294

架构师之HBase vs MongoDB 技术选型与场景决策实战案例

面对海量数据和高并发查询,该选 HBase 还是 MongoDB?本文为你提供完整的决策框架!从数据模型对比、架构解析、六大真实场景(电信 CDR、金融行情、广告点击流、电商商品、社交档案、内容管理)到性能、一致性、运维全面对比,助你在 PB 级时序数据和灵活查询之间做出精准选择!

肖哥弹架构博客 1100

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

OpenKruiseGame × KubeSphere 联合发布游戏服运维控制台,推动云原生游戏落地

近日,云原生游戏开源社区旗下 OpenKruiseGame(以下简称:OKG)基于 KubeSphere 4.0 LuBan 架构开发的游戏服运维控制台 OKG Dashboard 正式发布!现已上架 KubeSphere Marketplace 云原生应用扩展市场,支持免费使用。

阿里巴巴云原生的博客 1392

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Ant引擎容器化:Docker部署与云游戏实战指南

你还在为游戏引擎的跨平台部署头疼吗?复杂的依赖环境、版本冲突、硬件差异让游戏开发者在云游戏时代举步维艰。Ant引擎的Docker容器化方案,将彻底解决这些痛点,让你的游戏应用实现"一次构建,处处运行"。 通过本文,你将掌握: - ✅ Ant引擎Docker镜像构建全流程 - ✅ 云游戏容器化部署最佳实践 - ✅ 性能优化与资源管理策略 - ✅ 生产环境监控与运维方案 ## 一、Ant引擎架构解...

gitblog_00865的博客 1107

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

云原生周刊:Kubeflow 成为 CNCF 项目

OpenKruiseGame(OKG)是简化游戏服云原生化的自定义 Kubernetes 工作负载,相比 Kubernetes 内置的无状态(Deployment)、有状态(StatefulSet)等工作负载而言,OpenKruiseGame(OKG)提供了热更新、原地升级、定向管理等常用的游戏服管理功能,是完全面向游戏服场景而设计的 Kubernetes 工作负载。在场景下,所有节点的行为都是模拟的,与真实节点无异,因此整个方法占用的资源非常少,你可以在笔记本电脑上轻松玩转。本文由博客一文多发平台。

KubeSphere 1317

Minikube安装OpenKruiseGame

【代码】Minikube安装OpenKruiseGame。

weixin_43465618的博客 249

探索游戏新境界:开源项目Wolf,打造智能多用户流媒体服务器

在游戏世界中,狼以其聪明和敏捷而著称。受此启发,我们带来了`games-on-whales/wolf`,一个专为Moonlight设计的高性能流媒体服务器。这个独特的项目允许您通过共享单一远程主机硬件,让多个用户同时享受不同的游戏体验。 Wolf的核心价值在于它的创新性和专业性,旨在为您提供低延迟、高清晰度的游戏流媒体服务,并支持多GPU并行工作,无论是编码还是游戏,都能轻松应对。 ## 项目...

gitblog_00042的博客 673

超强Agones SDK生态:多语言游戏服务器集成终极指南

还在为不同编程语言的游戏服务器集成而头疼?Agones SDK生态为你提供一站式解决方案!无论你的技术栈是C++、Go、Node.js还是Unity,都能轻松接入Kubernetes游戏服务器管理平台。 **读完本文你将获得:** - 全面了解Agones SDK多语言支持体系 - 掌握各语言SDK的快速集成方法 - 实战代码示例和最佳实践指南 - 避免常见集成陷阱的技巧 ## Agones

gitblog_00448的博客 832

Agones:一款基于Kubernetes的开源游戏服务器

在分布式系统领域,支持在线弹性扩展,实时多人专属游戏服务器意味着特殊的挑战。随着游戏专业人士创造的各种特殊方案,Kubernetes被整合成跨云和物理机,支持复杂工作流的开源分布式标准。今天,我们很高兴发布开源Agones[1](希腊语“contest”或者“gathering”的意思)项目,支持弹性扩展实时多人专属游戏平台。按照目前跟游戏业界巨头Ubisoft的合作进展,Agones被定位为自驱

Docker的专栏 4058

云游戏的架构设计和技术实现

这是2017年12月我在ECUG上做的一次技术分享,现在把当时的技术演讲重新做个总结,并附上PPT。有对云游戏技术感兴趣的同学欢迎交流。 云游戏这个概念非常简单,就是我把游戏放到服务器上去运行,把游戏渲染出来的的音视频画面,通过流的形式传送到终端,终端上不再需要安装游戏,各种终端比如说电视、手机、PC、平板都可以运行。这样我们就不需要关心游戏怎么去适配不同的软硬件平台、终端性能够不够等等这些问题。这个概念本身是非常好的,在2009年的时候,这个技术就已经出现了,美国有家叫Onlive 的公司第一.

EGL游戏开发专栏 2966

如何用Agones与Kubernetes构建高性能游戏服务器:自定义资源与控制器完全指南

Agones是专为Kubernetes设计的开源游戏服务器托管和扩展平台,它通过自定义资源定义(CRDs)和控制器实现了对游戏服务器生命周期的精细化管理。本文将带您深入了解Agones如何与Kubernetes深度集成,以及如何利用其强大功能构建弹性、可靠的 multiplayer游戏服务。 ## Agones与Kubernetes集成架构解析 🚀 Agones的核心架构建立在Kuberne

gitblog_00018的博客 522

如何在Kubernetes上部署SuperTuxKart多人在线竞速游戏服务器:完整指南

Agones是专为Kubernetes设计的开源游戏服务器托管和扩展平台,能够帮助开发者轻松部署、管理和扩展多人在线游戏服务器。本文将详细介绍如何使用Agones在Kubernetes环境中部署SuperTuxKart多人在线竞速游戏服务器,让你快速搭建自己的游戏服务。 ## 准备工作 在开始部署之前,确保你已经满足以下条件: - 已安装Kubernetes集群(版本1.21+) - 已安装A

gitblog_00063的博客 490

【Unity知识速递】第7期 Unity 6.6 深度解析:WebGPU 正式版与 WebAssembly64,Web 游戏的内存革命

如何启用 Wasm64?需要注意的是,Wasm64 需要浏览器支持 Memory64 提案,目前主流浏览器的最新版本都已支持。一句话总结: Unity 6.6 用 WebGPU 转正、Wasm64 16GB 内存和渐进式加载三连击,将 Web 游戏的体验天花板又往上推了一大截——Web 平台不再是"妥协版",正在成为真正的一等公民。Unity 6.6 新增了 WebAssembly64(Wasm64) 构建选项,这可能是本次更新中对 Web 游戏开发者影响最大的一项升级。

crystal_WJT的博客 425
上一篇: 游戏服务器开发指南(八):合理应对异常
下一篇: 近年GDC服务器分享合集(四): 《火箭联盟》:为免费游玩而进行的扩展
长三月
博客等级 码龄9年 228粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值