MQTT在游戏运营发行中的实践

前言

在游戏生态中,主要包含游戏的研发方以及运营发行方。一款游戏的运行,分为研发和运营两个阶段。研发的主体有个人、独立工作室、游戏研发公司等;

游戏的研发主体专注于游戏内容的研发,对游戏的发行及运营往往在人力、财力上投入不足,促使游戏发行及运营业务应运而生,产生了独立的运营发行方。目前市场上很多大型游戏厂商将自己的发行及运营能力打包给运营发行方。另外还有一些游戏的分发渠道方,依托于自己的流量优势,也提供仅针对本渠道的联合运营服务。
image.png
上图中有关的交互的部分:

l 游戏本身的操控交互是在游戏客户端与游戏服务端间进行的,大部分会采用Socket长链接的方式进行通信。
l 游戏客户端与游戏发行方平台的交互,包括登录,支付等等,这些由游戏玩家主动请求的会采用http的方式进行链接通信。

这两部分的交互选型相对固定。
但在运营发行方中关于运营消息以及广告推送等场景,例如各类服务器运维升级等跑马灯信息;账号踢下线信息;悬浮窗广告;普通消息推送等等服务更多是由游戏的运营发行方主动推送的。在百万级游戏客户的情况下,如何选择更适合的交互方式是一件头痛的事情。

我们在本章中探讨如何更好地选择运营发行消息的技术实现。

运营发行方推送的特点与要求

1.触达用户多:一款成功的游戏总客户数经常超百万千万。同时在线数高。
2.消息的时效性不同:有些消息是在某时间段内都生效的(例如主游戏服运维升级通知),无论客户当前的状态是否在线,如果当前客户在线那么就立刻收到,离线的客户在下次进入游戏时也会收到相应的消息。有些消息是对于当前在线的客户(例如账号踢下线信息)才有意义。
3.精准的群发性诉求:推送的消息都是对于具有某类特征的客户群体进行广播(例如不同的广告对应不同等级的游戏玩家)
4.连接的轻量级消耗:这类数据的交互对比游戏本身操控来说,频率较低,所以游戏客户端与广告运营等数据推送的流量占用的客户端运行资源尽可能的少。
5. SDK依赖资源简洁:在游戏领域里,由研发团队会产生游戏母包,而运营发行方会在母包的基础上嵌入运营所需要的SDK包,例如支付功能, 数据推送功能;那么对于推送功能本身所依赖的资源包就越小越好了。

备选的技术方案分析

1. http轮询方案: 
优点:
游戏客户端依赖最少,实现方便。
缺点:
无效轮询占比高:多个客户端,多种类的轮询多,鉴于本类消息的频率不高,那么绝大部分轮询都是没有实际业务意义的。
运营端实现复杂:需要使用额外的代码逻辑专门维护已读取状态。
资源占用高:周边配套的调用链,日志信息,并发处理能力这些推高了资源占用情况。

2. Socket方案: 
优点:
游戏客户端依赖比较少,实现方便。
缺点:
连接维护:运营方会有不同种类型的应用划分(例如广告可能是单独的应用,系统管理也会是另一单独的应用),如果都需要推送,那么就必须有不同的socket连接到不同类型的应用;这样游戏客户端的连接就会增多,从而占用比较多的资源。
运营端实现复杂:需要使用额外的代码逻辑专门维护订阅推送类型,在推送过程中需要代码实现过滤,精准投递到目标群体; 为了保证推送的质量(到达与否),需要额外记录推送状态;对于推送数据的时效需要额外的控制,有些过期的消息(例如服务运维时间通知)。

3. KAFKA方案: 
优点:
接入简单:成熟的消息中间件,支持各种实现语言。只需要对接Kafka 节点本身,不需要直接与发行方的应用进行连接,天然解藕。
功能强大: 推送数据的状态维护,存储等都可以借用Kafka的来提供。
缺点:
客户端连接数支持不足,无法通过简单的集群来支持数量众多的游戏玩家(客户端)。

4. MQTT方案: 
优点:
接入简单,MQTT的协议非常简洁,支持各种实现语言。
支持各种订阅关系。
支持p2p消息。
支持各种消息触达的QoS质量。
可观测客户端的连接情况。
支持百万级的连接。
缺点:
MQTT技术当前阶段不如其它方案大众。

MQTT技术方案

通过对比,上面的三种方案, MQTT方案是非常符合作为游戏的运营发行方与游戏客户端进行推送数据的交互场景。那么我们来看看这个技术的设计原则。

1、轻量级与高效的微消息,MQTT协议精简,消息头特别简单; 
2、基于发布/订阅(Pub/Sub)通讯模式,可以进行双向通信;
3、支持topic进行消息存储落盘;
4、支持订阅关系设定;支持p2p的模式与广播模式;
5、支持百万级别的连接设备;
6、提供消息服务质量管理;
7、适用于低带宽、高延迟、不稳定的网络;
image.png
这里,我们比较一下阿里云的产品微消息队列MQTT与开源MQTT。
image.png

结语

在游戏发布运营平台中,使用阿里云微消息队列MQTT产品可以满足运营平台与游戏客户端间的数据推送服务场景,即既保证了百万级连接,又实现了资源占用少,也能做到各种复杂的消息数据发布订阅管控。
image.png

 

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2021 火爆技术人朋友圈的实时音视频 RTC 你 Pick 了嘛?

5月27日20点,第 13 期「大咖来了」! CSDN 副总裁于邦旭、融云 CTO 任杰、即构科技副总裁刘莉,多方视角探讨 RTC 超级风口与机遇,还有众多精美礼品等你拿! 立即戳:https://live.csdn.net/room/csdnnews/cn…

[V3] Error on build in CI: Cannot find module ‘node:path‘ in vite.config.ts

解决办法 原来的自己的 node 版本是 v14.16.0 的版本,出现了不兼容的问题,于是升级到了稳定版 v16.16.0 。 从新删除一下安装包 rm -rf node_modules package-lock.json 再 npm i,再 build 就没有问题了。 问题链接:https://gith…

SAE 的极致应用部署效率

简介: SAE 在应用创建、部署、重启过程中的效率优化。 作者 | 文俊 阿里巴巴云原生团队 本文整理自《Serverless 技术公开课》 作为 Serverless 平台,SAE 提供了应用全托管的服务,充分利用了云原生的技术红利,以容器作为应用载体…

axios 失败 安装_axios 安装使用

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,它本身具有以下特征:1.从浏览器中创建 XMLHttpRequest2.支持 Promise API3.客…

独家下载!《Java工程师成神之路(基础篇)》

简介: 初学Java的你还在烦恼不知道怎么去学,学习什么内容吗?那么多的技术书籍是否已经让你无从下手?别急,来看这一份完整的Java学习路径。 复制该链接到浏览器完成下载或分享:https://developer.aliyun.com…

Gartner:2021全球安全和风险支出将超1500亿美元

编辑 | 宋 慧 作者 | Gartner投稿 头图 | 付费下载于东方IC 全球信息技术研究和顾问公司Gartner预测,2021年全球信息安全和风险管理技术与服务支出预计将增长12.4%,达到1504亿美元。2020年安全和风险管理支出增长率为6.4%。 Gartner分析师认为&#xf…

四年,如何从前端小白蜕变为前端技术专家?

作者简介:珑晴——淘系技术部前端技术专家,16 年校招实习转正进入的阿里,当时是在聚划算前端团队,随着业务变化一路从聚划算到天猫至今加入淘系技术部,负责日常活动营销的同时,也多次参与大促会场&互动…

lg显示器工厂模式怎么进入_LG液晶显示器进入工厂模式方法.doc

LG液晶显示器进入工厂模式方法常见CRT显示器的工厂模式进入方法IT.SOHU.COM  2004-05-07 09:51  转自: 天极网显示器工厂模式的进入方法集锦1.TCL显示器1)M1502显示器面板按键:“-”,“+”,“←”,“→”,电源开关“◎”。工厂模…

Tomcat 一键启停脚本 linux

文章目录一、脚本开发1. 编写脚本2. 修改脚本3. 赋予权限二、脚本执行2.1. 启动tomact2.2. 查看tomact状态2.3. 停止tomact一、脚本开发 1. 编写脚本 vim start-tomcat.sh添加以下内容: #!/bin/bash# description: Tomcat start/stop/status script#Location of …

从 Storm 迁移到 Flink,美团外卖实时数仓建设实践

简介: 本文主要介绍一种通用的实时数仓构建的方法与实践。实时数仓以端到端低延迟、SQL 标准化、快速响应变化、数据统一为目标。 作者:朱良 本文主要介绍一种通用的实时数仓构建的方法与实践。实时数仓以端到端低延迟、SQL 标准化、快速响应变化、数据…

Arm发布移动端v9体系新架构,CPU、GPU、IP全囊括了!

2021年5月25日晚,Arm发布了针对移动端的Armv9体系新架构,除了公布首款全面计算(Total Compute)解决方案,Arm还发布了首批基于Armv9 架构的Cortex-A CPU,为消费电子视觉体验而设计的Mali-G GPU系列&#xff…

阿里 双11 同款,流量防卫兵 Sentinel go 源码解读

简介: 本文主要分析阿里巴巴集团开源的流量控制中间件 Sentinel,其原生支持了 Java/Go/C 等多种语言,本文仅仅分析其 Go 语言实现。下文如无特殊说明,sentinel 指代 Sentinel-Go。 作者 | 于雨 apache/dubbo-go 项目负责人 本文…

matlab程序 地震 相干噪声_地震台站台基噪声功率谱概率密度函数Matlab实现

地震台站台基噪声功率谱概率密度函数Matlab实现谢江涛林丽萍谌亮赵敏【摘要】摘要选取2015年四川数字测震台网中筠连和华蓥山地震台记录的垂直分向连续波形数据,利用Matlab软件,计算地震台站台基噪声功率谱概率密度函数,分析地震台站环境噪声…

工业发展 安全护航 2021年工业互联网安全发展峰会成功召开

在数字化创新日益深入的背景下,工业互联网已经成为制造企业构建敏捷、弹性的基础架构的重要转型方向。但与此同时,安全风险与威胁向OT环境渗透,产生了额外的复杂性,对于关键业务与数据带来了严重威胁,构建工业互联网安…

基于 Flink + ClickHouse 打造轻量级点击流实时数仓

作者:LittleMagic Flink 和 ClickHouse 分别是实时计算和(近实时)OLAP 领域的翘楚,也是近些年非常火爆的开源框架,很多大厂都在将两者结合使用来构建各种用途的实时平台,效果很好。关于两者的优点就不再赘…

Spring boot 2.3优雅下线,距离生产还有多远?

简介: 对于任何一个线上应用,如何在服务更新部署过程中保证业务无感知是开发者必须要解决的问题,即从应用停止到重启恢复服务这个阶段不能影响正常的业务请求,这使得无损下线成为应用生命周期中必不可少的一个环节。 前言 在生产…

unplugin-vue-components和unplugin-auto-import 使用

文章目录1. 插件安装2. 创建配置文档链接 1. 插件安装 首先你需要安装unplugin-vue-components 和 unplu在这里插入代码片gin-auto-import这两款插件 npm install -D unplugin-vue-components unplugin-auto-import然后把下列代码插入到你的 Vite 或 Webpack 的配置文件中 …

完整性校验用到常见的算法_几种常见的校验算法

素材来源:网络编辑整理:strongerHuangUART有一个奇偶校验,CAN通信有CRC校验。Modbus、MAVlink、USB等通信协议也有校验信息。在自定义数据存储时,有经验的工程师都会添加一定校验信息。你平时通信,或者数据存储时&…

发布 128 核 Altra Max,自研内核,明年推出 5nm 处理器,“性能怪兽”Ampere 搞大事?

2015 年,在英特尔就职 28 年的总裁 Renee James 辞职,正在大众纷纷猜测她将如何开启下一段旅程时,她有了创业的想法,2017 年带领新团队创立了专注于为云和边缘打造微处理器的 Ampere 公司。 在云原生浪潮下,底层硬件需…

2020亚太内容分发大会 阿里云荣获“边缘计算领航企业”奖

10月21日,第八届亚太内容分发大会在北京隆重召开。凭借在边缘计算领域的先发优势、技术实力与丰富实践,阿里云荣获“边缘计算领航企业”称号。 伴随着中国5G商用进程提速,大带宽、大连接、低时延的应用场景爆发,将催生产业变革&a…