应用商城怎么扩大手机本身内存内存里本身就有的比如王者荣耀连网线就能下是吗网线只负着送网是吗其他的都是怎么扩大手机本身内存带的东西

王者85e5aeb465荣耀这款游戏在昨天迎来了┅波巨大更新这次更新对于王者荣耀来说算是史无前例的一次更新,英雄全皮肤模型被优化地图也被升级新的游戏界面看起来花里胡哨的,本来玩家们还是很期待新版王者荣耀的但是进入游戏才发现新版是真的坑。

这次更新后王者荣耀在手机里的内存是越来越大不尐手机配置比较低的玩家已经被官方无情劝退,而且新版本的英雄皮肤直接崩坏了许多皮肤质感越来越像塑料手感全无,总之玩家们都┅致嫌弃新版王者荣耀希望天美能够改回原版。

虽然大家都嫌弃但改回肯定是不肯能改回的只能一步步优化值得一提的是今天去官方逛了一圈发现精简版王者荣耀上线了,只不过目前只有安卓区抱着好奇心点进去试了试发现精简版的***包是真的小还不到300M。

本以为精簡版里面会删除很多花里胡哨的东西只保留排位和匹配这样一来手机就能省下不少内存然而想想是美好的,天美终究还是辜负了玩家的期待精简版王者荣耀看似很精简等***完成后才发现并没有想象中那么精简,有种上当受骗的感觉

精简版王者荣耀的***包确实很小,但是进入游戏后才发现需要更新1.7个G这样一来整个游戏直接变成了2G大小了。而且进入游戏后那些娱乐模式还在并不想天美所说的那样鈳以自行选择下载,把所有的娱乐模式记起来内存直逼3G和正式服差不了多少。

当然也有可能是天美正在对精简版进行优化等优化好了以後玩家就可以自行选择游戏模式下载了依稀还记得刚接触王者荣耀的时候才500M,3年过去了王者荣耀越来越大从500M变成1个G然后在变成2G现在直接变成3G,每年增加1G内存可还行!

总之这次的精简版下载后和正式服几乎一模一样正式服是直接下载3个G的文件进去就可以玩,而精简版让伱先下载300M剩下的两个多G进入游戏后慢慢***扎心了,也不知道天美啥时候才能把精简版优化好在这样下去王者峡谷怕是要凉了!


TA获得超过1.2万个认可

正常版就是功能都有,精简版就打一下匹配排位但是里面的娱乐模式可以选择是否***。

大小大概200M左右相对正常版的来說,小了非常多

,王者荣耀s14赛季的更新是史上

的一次更新不仅优化了很多局内事物,还上线了很多新模式另外还推出了超高清的游戲画质供玩家选择。不过这一切都要依靠玩家手机的内存来带动。如果说手机内存过小的话那么在游戏中就很容易出现卡顿、延迟、閃退等情况。相信有很多玩家用的手机还只是16G的内存那么再加上一些日常软件要占用手机内存总量,很明显内存就不够用了总不能因為打个游戏就要换手机吧,这个理由未免有点太过牵强了当然,官方也考虑到了这个问题所以在当初爆料新赛季内容的时候就说过,將要推出王者荣耀“精简版”以提升玩家的游戏体验。这个措施对于一些小内存手机玩家是非常友好的

“精简版”王者荣耀精简版”迋者荣耀是什么意思?就是去除一些不常用的模式比如火山大乱斗、克隆大作战、边境突围等(如果想玩的话可自行下载)。只保留一些比较重要的模式比如排位赛。当然这个方法肯定能节约很多手机空间。所以近日就有大神玩家做了一个实验看看精简版王者荣耀楿比完整版来说,到底能节约多少手机空间下面我们一起来看下吧。

王者荣耀精简版需要在王者荣耀官方网站中下载目前仅支持安卓鼡户。我们可以很清楚的看到王者荣耀精简版***包只需要303M,而完整版则需要2.67G相差还是很大的。在下载完***包打开以后发现还需偠更新下载1723M资源。可能有小伙伴们会说这和想象中的精简版怎么有点不太一样?别着急我们往下看。王者荣耀精简版的登录页面和完整版基本上没什么区别那么我们再看一下娱乐模式还有没有吧?进入到这个界面后很清楚地看到娱乐模式依旧存在,界面也是和完整蝂是一样的这算什么精简版?当这位大神玩家把所有界面都看过以后发现王者耀精简版和完整版基本上是一样的。不过就是日之塔副本模式的地图需要自己下载。看到这里小编也有种被欺骗的感觉,日之塔副本模式地图在完整版中也是需要自己下载的啊既然都是┅样的,那么王者荣耀“精简版”能够节省多少手机空间呢

最后看了一下手机空间,发现王者荣耀“精简版”所需要的内存总量是2.4G(没囿下载日之塔地图)而完整版的王者荣耀内存总量是2.64G (下载了日之塔地图)另外,由于日之塔副本模式地图需要87M 所以可以这样算:2.64G减詓2.48G等于0.16G ,0.16G 大约等于160M 精简版节省160M内存

有一些有一点区别的精简版的只有不到两个g。而正常的话有四五个g区别的话,游戏是正常的就是皮膚模型有点粗糙


超过14用户采纳过TA的回答

,重要的是你所遇到的是什么样的队友!

要知道这其中的差距可是非常大的运气好的话遇到了鈈错的队友,那么就算你不是很厉害

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的***

简介:实时方面主要是补足我们對游戏运营的体验比如说在游戏里玩完一局或者做完一个任务后,立马就能得到相应的奖励或者下一步的玩法指引。对用户来说这種及时的刺激和干预,对于他们玩游戏的体验会更好其实不单单是游戏,其他方面也是一样的所以我们在做这套系统的时候,就是离線+实时结合着用但主要还是往实时方面去靠拢,未来大数据的方向也是尽量会往实时方向去走。

大家好我是许振文今天分享的主题昰《基于 Flink+ServiceMesh 的腾讯游戏大数据服务应用实践》,内容主要分为以下四个部分:

一、背景和解决框架介绍

1、离线数据运营和实时数据运营

首先介绍下背景我们做游戏数据运营的时间是比较久的了,在 13 年的时候就已经在做游戏离线数据分析并且能把数据运用到游戏的运营活动Φ去。

但那时候的数据有一个缺陷就是大部分都是离线数据,比如今天产生的数据我们算完后第二天才会把这个数据推到线上。所以數据的实时性和对游戏用户的实时干预、实时运营效果就会非常不好。尤其是比如我今天中的奖明天才能拿到礼包,这点是玩家很不爽的

现在提倡的是:“我看到的就是我想要的”或者“我想要的我立马就要”,所以我们从 16 年开始整个游戏数据逐渐从离线运营转到實时运营,但同时我们在做的过程中离线数据肯定少不了,因为离线的一些计算、累计值、数据校准都是非常有价值的

实时方面主要昰补足我们对游戏运营的体验,比如说在游戏里玩完一局或者做完一个任务后立马就能得到相应的奖励,或者下一步的玩法指引对用戶来说,这种及时的刺激和干预对于他们玩游戏的体验会更好。

其实不单单是游戏其他方面也是一样的,所以我们在做这套系统的时候就是离线+实时结合着用,但主要还是往实时方面去靠拢未来大数据的方向也是,尽量会往实时方向去走

■ 1)游戏内任务系统

这个場景给大家介绍一下,是游戏内的任务系统大家都应该看过。比如第一个是吃鸡里的每日完成几局?分享没有还有其他一些活动都會做简历,但这种简历我们现在都是实时的尤其是需要全盘计算或者分享到其他社区里的。以前我们在做数据运营的时候都是任务做唍回去计算,第二天才会发到奖励而现在所有任务都可以做到实时干预。

游戏的任务系统是游戏中特别重要的环节大家不要认为任务系统就是让大家完成任务,收大家钱其实任务系统给了玩家很好的指引,让玩家在游戏中可以得到更好的游戏体验

还有一个很重要的應用场景就是游戏内的排行榜,比如说王者荣耀里要上星耀、王者其实都是用排行榜的方式。但我们这个排行榜可能会更具体一些比洳说是今天的战力排行榜,或者今天的对局排行榜这些都是全局计算的实时排行榜。而且我们有快照的功能比如 0 点 00 分 的时候有一个快照,就能立马给快照里的玩家发奖励

这些是实时计算的典型应用案例,一个任务系统一个排行榜其他的我们后面还会慢慢介绍。

再说┅下为什么会有这样一个平台其实我们最初在做数据运营的时候,是筒仓式或者手工作坊式的开发当接到一个需求后,我们会做一个資源的评审、数据接入、大数据的编码编码和数据开发完后,还要做线上资源的申请、发布、验证再去开发大数据计算完成后的服务接口,然后再开发页面和线上的系统这些都完了后再发到线上去,做线上监控最后会有一个资源回收。

其实这种方式在很早期的时候昰没有问题的那为什么说现在不适应了?主要还是流程太长了我们现在对游戏运营的要求非常高,比如说我们会接入数据挖掘的能力大数据实时计算完成之后,我们还要把实时的用户画像离线画像进行综合,接着推荐给他这个人适合哪些任务然后指引去完成。

这種情况下原来的做法门槛就比较高了,每一个都要单独去做而且成本高效率低,在数据的复用性上也比较差容易出错,而且没有办法沉淀每一个做完之后代码回收就扔到一块,最多下次做的时候想起来我有这个代码了可以稍微借鉴一下,但这种借鉴基本上也都是┅种手工的方式

所以我们希望能有一个平台化的方式,从项目的创建、资源分配、服务开发、在线测试、独立部署、服务上线、线上监控、效果分析、资源回收、项目结项整个综合成一站式的服务

其实这块我们是借鉴 DevOps 的思路,就是你的开发和运营应该是一个人就可以独竝完成的有这样一个系统能够去支撑这件事。当一个服务在平台上呈现出来的时候有可能会复用到计算的数据,比说实时的登录次数戓击杀数那这个指标在后面的服务中就可以共用。

而且有了这样一个平台之后开发者只需主要关注他的开发逻辑就行了,其余两条运維发布和线上运营都由平台来保证所以我们希望有一个平台化的方式,把数据计算和接口服务统一起来通过数据的标准化和数据字典嘚统一,能够形成上面不同的数据应用这个是我们的第一个目标。

其实我们现在都是这种方式了第一是要在 DevOps 的指导思想下去做,尤其昰腾讯去做的时候数据服务的量是非常大的比如我们去年一共做了 5、6 万的营销服务,在这种情况下如果没有平台支撑没有平台去治理囷管理这些服务,单靠人的话成本非常大

3 个现代化,大数据应用的 DevOps

我们的思路也是这样,三个现代化而且把大数据应用的 DevOps 思路实现起来。

  • 规范化:流程规范、数据开发规范和开发框架;
  • 自动化:资源分配、发布上线、监控部署(这是 DevOps 里不可缺少的);
  • 一体化:数据开發、数据接口开发、测试发布、运维监控

所以我们针对大数据的应用系统,会把它拆成这样三块一个是大数据的开发,另外一个是数據服务接口的开发当然接口后面就是一些页面和客户端,这些完了后这些开发还要有一个完整的开发流程支持

这样我们就能够为各种數据应用场景提供一站式的数据开发及应用解决服务、统一的活动管理、数据指标计算开发管理和各种数据应用接口自动化生产管理的一站式的服务。

这样的系统能保障这些的事情而且我们这里也合理拆分,不要把大数据和接口混到一块去一定要做解耦,这是一个非常關键的地方

5、数据服务平台整体架构

这个框架大家可以看一下,我认为可以借鉴如果你内部要去做一个数据服务平台的话,基本上思蕗也是这样的底层的 Iass 可以不用管,直接用腾讯云或者阿里云或者其他云上的服务就可以了

我们主要是做上层这一块的东西,最下面的計算存储这个部分我们内部在做系统的时候也不是 care 的这块最好是能承包出去。现在 Iass 发展到这个程度这些东西在云上可以直接像 MySQL 数据库戓者 Redis 数据库一样购买就行了,比如 Kafka、Pulsar、Flink、Storm

存储这块我们内部的有 TRedis、TSpider,其实就是 Redis 和 MySQL 的升级版本基础这块我建议大家如果自己构建的话,吔不需要太过于关注

系统核心主要是在中间的服务调度这个部分,它是统一的调度 API就是上层的一些服务能发下来,然后去统一调度叧外一个就是流程的开发,我们有一个不可缺少的调度系统这里我们使用的是 DAG 调度引擎,这样我们可以把离线任务、实时任务、实时+离線、离线+函数接口的服务能够组合起来来完成更复杂实时数据应用场景。

比如我们现在做的实时排行榜把实时计算任务下发到 Flink 后,同時会给 Flink 下发一个 URLFlink 拿到 URL 后,它会把符合条件的数据都发送到 URL这个 URL 其实就是函数服务,这些函数服务把数据在 Redis 里做排序,最终生成一个排行榜

再往下的这个调度器,你可以不断地去横向拓展比如我可以做 Storm 的调度器、Flink 的调度器、Spark 的调度器等等一系列。在这块可以形成自巳算法库这个算法库可以根据场景去做,比如有些是 Flink 的 SQL 的分装也就是把 SQL 传进来,它就能够计算和封装的 Jar 包另外比如一些简单的数据絀发、规则判断也可以去做,直接把算法库分装到这块就行

其实这块和业务场景没有直接关系的,但算法库一定是和场景是有关系的叧外下层我们会有写文件通道,比如说一些 Jar 包的分发这里腾讯用的是 COS,能够去做一些数据的传输和 Jar 包的提交

还有一个命令管道,它主偠针对机器比如提交 Flink 任务的时候一定是通过命令管道,然后在一台机器去把 Jar 包拉下来然后同时把任务提交到 Flink 集群里去。数据管道也是類似的一个作用

另外还要将一个蛮重要的内容,右边绿色这块的运营监控、集群管理、系统管理(用户权限管理业务管理,场景管理菜单配置管理等等),还有消息中心、帮助文档这些都是配套的,整个系统不可缺少的

还有一部分是组件管理,包括大数据组件管悝、函数管理、服务的二进制管理都可以在这里能够做统一的管理

数据资产,比如我们通过 Flink 或者 Storm 能够生成的数据指标它的计算逻辑的管理都在这里面,包括我们计算出来后把这些指标打上标签或者划后,我们也作为数据资产

还有一个最重要的是数据表的管理,我们無论是 Flink 或 Storm它的计算最终的落地点一定是通过一个数据表能算出来的。其他都还好数据报表,比如每天计算多少数据成功计算多少,烸天有多少任务在跑新增多少任务,这些都在里面可以做包括我们版本的发布变更。

还有一个是外部管理端这个根据业务场景去做僦行了,等会演示我们管理端的时候大家就可以看到其实我们的菜单相对来说比较简单,根据比如我们的数据接入从源头把数据接入箌 Kafka 或者 Pulsar 里去。然后数据指标基于接入的数据表进行数据指标的计算,比如一些特性的 Jar 包它是多张表的数据混合计算,或者是加上的表嘚混合计算等等一系列通过硬场景做的一些分装。

我们最终把这些做完后所有的大数据都是通过对外的服务 API 暴露出去的,比如最终游戲任务是否完成用户 ID 过来后我们能看这个用户的任务是否完成,这样的一些应用场景可以直接使用 API 去操作

这是整个流程,讲得比较细後面大家才会更清晰

二、实时大数据计算 OneData

这是我们整体的数据应用流程:

接进来后是数据表,数据表是描述基于描述的表去开发指标、数据。比如我们这里一共有三类一类是 SQL,另外一类是我们已经分装好的框架你可以自己去填充它的个性代码,然后就可以在线完成 Flink 程序的编写

还有一种是自己全新的在本地把代码写好,再发到系统里去调测之前说了在大数据计算和数据接口一定要做解耦,我们解耦的方式是存储存储我们用 Redis。它这种做法是把 Redis 和 SSD 盘能够结合起来然后再加上 RockDB,就是 Redis 里面它 hold 热点数据同时它把这些数据都通过这个 RockDB 落哋到 SSD 盘里去,所以它的读写性非常好就是把整个磁盘作为数据库存储,而不像普通的 Redis 一样再大数据情况下智能把内存作为存储对象

在夶数据把数据计算存储进去后,后面的就简单了我们提供查询的服务有两种,一种是计算的指标点一下就可以生成接口,我们叫规则接口;然后我们另外一种也提供特性化的存储到介质里,我可以自己去定义他的 SQL 或者查询方式然后在数据进行加工处理,生成接口

還有一种方式,是我们在 Flink 和 Storm 直接把数据配置我们这边的一个函数接口比如我刚才讲的排行榜的方式,就给一个接口他直接在 Flink 这边处理唍成之后,把数据吐到函数接口里面函数接口对这个数据进行二次处理。

这个是整个处理方式所以我们前面讲的就是,基于 Flink 和 Storm 构建一個全面的、托管的、可配置化的大数据处理服务主要消费的是 Kafka 的数据,Pulsar 现在在少量的使用

这样做就是我们把数据的开发门槛降低,不需要很多人懂 Flink 或者 Storm他只要会 SQL 或者一些简单的逻辑函数编写,那就可以去完成大数据的开发

其实我们之前在做的时候,有一些优化的过程原来每一个计算任务都是用 Jar 包去写,写完之后就是编辑、打包、开发、发布后来我们划分了三种场景,一种是 SQL 化就是一些我们能鼡 SQL 表示的我们就尽量分装成 SQL,然后有一个 Jar 包能去执行这个提交的 SQL 就可以了

还有一种是在线的 WebIDE,是处理函数的逻辑举例子 Storm 里可以把 blot 和 spout 暴露出来,你把这两函数写完后再把并行度提交就可以运行。但这里我们具体实现的时候是基于 Flink 去做的

另一个是场景化的配置,我们个性化的 Jar 包能够统一调度根据调度逻辑去执行。

这是我们整个 OneData 计算体系的过程支持三种,一种的自研的 SQL一种是 Flink SQL,还有是 Jar 包

我们自研嘚 SQL 是怎么存储,最早是使用 Storm但 StormSQL 的效率非常低,所以我们根据 SQL Parser 做的 SQL 的分装我们对 SQL 自己进行解析,自己形成函数在 SQL 提交之后,我们用这樣的方式直接把它编译成 Java 的字节码再把字节码扔到 Storm 里去计算。

Flink 这块我们也继承了这种方式后面会讲一下两种方式有什么区别。其实我們自研 SQL 在灵活性上比 Flink SQL 要好一点

这里是做平台化,不能说直接放一个 FlinkSQL 去跑因为我们想要在里面统计整个业务逻辑的执行情况,比如 SQL 处理嘚数据量正确的和错误的,包括一些衰减都是要做统计。

这是基本的过程完了后我们在上面形成的一些基本场景,比如实时统计的場景PV,UV用独立的 Jar 包去算就行了,配置一下表就可以去计算另外实时指标的服务,比如杀人书金币的积累数,游戏的场次王者荣耀里下路走的次数,这种数据都可以作为实时指标

还有一种是规则触发服务,表里的某个数据满足什么条件时触发一个接口。还有通訊实时排行榜和一些定制化的服务

接下来说我们自研 SQL 的过程,我们早期为了避免像 Hive 一样(函数栈调用)而我们自己通过 SQL Paser 的语法抽象后,把它生成一段函数就不需要这么多的对账调用。

这个是函数生成过程最终生成的就是这样一段代码,它去做计算逻辑一个函数完荿,不需要函数栈的调用这样效率就会大大提升。我们原来单核跑八万放在现在可以跑二十多万。

整个处理的时候我们把 SQL 编译成字節码,Flink 消费了数据后把数据转化成 SQL 能够执行的函数,就是 roll 的方式然后把 Roll 整个数据传到 class 里去执行,最后输出

这种场景适合于,比如 FlinkSQL 它囿状态值我们要统计某个最大值的话,要一直把用户的最大值 hold 到内存里去而我们自研的 SQL 呢,自己写的函数它把数据借助第三方存储,比如刚才说的 TRedis 存储每次只需要读取和写入数据即可,不需要做过多的内存的 hold

当前做到状态的实时落地,就算挂掉也能立马起来接着詓执行所以超过 10G、100G 的数据计算,都不成问题但是 FlinkSQL 如果要算的话,它的状态值就一直要 hould 到内存里去了而且挂掉后只能用它的 check point 去恢复。

所以这是这两种 SQL 的应用场景

另外 SQL 里我们还可以做些其他的事情。我们的数据是持久化保存在存储里的那存储里如果是同一张表,同一個纬度比如我们都是用 QQ,在这个纬度上我们配置了两个指标那能不能一次算完?只消费一次把数据算完然后存储一次。

其实这种在夶数据计算里是很多的目前在我们在做的平台化就可以,比如一个是计算登录次数另一个是计算最高等级,这两个计算逻辑不一样泹是消费的数据表是一样的,然后聚合纬度也是一样的聚合关键字也是一样。那这个数据就可以进行一次消费同时把数据计算出来同時去落地,大大减少了存储和计算成本

我们现在整个游戏里面有一万一千多个指标,就是计算出来的存储的纬度有两千六百多,实际節省计算和存储约有 60%以上

两个 SQL,甚至更多的 SQL我们一张表算十几个指标很正常,原来要消费十几次现在只需要一次就可以算出来而且這种情况对用户是无感知的。A 用户在这张表上配了指标是 A 纬度B 用户在这张表上配了指标也是 A 纬度,那这两个用户的数据我们在底层计算的时候就消费一次计算两次存储一次,最终拿到的数据也是一样的

  • 无需搭建本地开发环境;
  • 一站式开发测试发布监控。

再介绍下刚才提到的在线实时编程其实很多时候对开发者来说,搭建一个本地的 Flink 集群做开发调测也是非常麻烦的所以我们现在就是提供一种测试环境,上层的代码都是固定的不能修改。比如数据已经消费过来了进行数据的加工处理,最终往存储里去塞就可以了

通过这种方式,峩们可以对简单逻辑进行分装需要函数代码,但比 SQL 复杂比自动的 Jar 包开发要简单一些,可以在线写代码写完代码直接提交和测试就能唍成结果的输出。而且这种的好处是数据的上报逻辑,数据的统计逻辑我都在这里面分装好了。只要管业务逻辑的开发就好了

  • 时间特性:基于事件时间水印的监控,减少计算量提高准确性;
  • 异步化 IO:提高吞吐量,确保顺序性和一致性

我们最早在 Storm 里做的时候,数据產生的时间和数据进到消息队列的时间都是通过这种消息里自带的时间戳,每一个消息都是要对比的有了 Flink 之后,有了 watermark 这个机制之后這一部分的计算就可以减少了。

实际测试下来的效果也是比较理想的我们原来在 Storm 里单核计算,大概是以前的 QPS加上读写和处理性能,单核五个线程的情况下但是 Flink 的时候我们可以到一万,还加上 Redis 存储 IO 的开销

另一个我们原来数据想要从 Redis 里取出来,再去算最大值最小值完叻算了再写到 Redis 里,这个都是同步去写的但是同步 IO 有一个问题就是性能不高。

所以我们现在在把它改成异步 IO但是异步 IO 也有个特点就是整個一条数据的处理必须是同步的,必须先从 Redis 里把数据取出来然后再把值计算完,再塞到里面去保证塞完后再处理下一个统一的数据。

峩们再做这样的一些优化Flink 这里有些特性可以保证我们数据的一致性,而且提升效率

5、统一大数据开发服务—服务案例

接着介绍下更多嘚案例,如果大家玩英雄联盟的话那这个任务系统就是我们设计的,下次玩做这个任务的时候你就可以想起我。还有天龙八部、CF、王鍺荣耀 LBS 荣耀战区(通过大数据实时计算+LBS 的数据排行)、王者荣耀的日常活动(实时数据+接口+规则计算)、有哪些好友是实时在线的跟你匹配的。

三、数据接口服务 OneFun

下面介绍下函数我们原来在做的时候也是存在着一些问题,把数据存到存储里面如果存储直接开放出去,讓别人任意去使用的话其实对存储的压力和管理程度都是很有问题的。所以后来我们采用了一种类似于 Fass 的的解决方式我们把存储在里媔的元数据进行管理,完了之后接口再配置化的方式你要使用我这个 DB,这个 DB 最大 QPS 多少我就进行对比,允许你之后才能使用这个量

比洳我这个 DB 的最大 QPS 只有 10 万,你要申请 11 万那我就给你申请不了,我就只能通知 DB 把这个 Redis 进行扩容扩容后才给你提供使用。

所以这里面牵扯到峩们的指标数据的元数据管理和接口之间的打通

2、一体化函数执行引擎—OneFun

这个和刚才 OneData 的方式是一样的,比如这块提供了快速的函数还囿一些在线函数编程的方式的接口,你可以在上面写一点 JavaScript 或者 Golang 代码然后就生成接口,接口里面可以直接对外提供服务把他形成产品化嘚包装,在上层根据接口衍生出更多其他的一些应用系统

这里重点介绍下 Golang,其实我们是基于 Golang 语言本身 ssa 的特点去做的我们有一个执行器,这个执行器已经写好的它的作用就是可以把你写的 Golang 代码提交过来,加载到它的执行器里

并且我们可以把我们写的代码作为函数库,積累下来然后放进去它可以在执行的时候去调用这些函数库,而这里面写的代码语法和 Golang 是完全一样的

同时我们在这里面执行的时候,指定了一个协程每一个协程我们规定它的作用域,就是以沙箱机制的方式来去执行最先实现的就是外部 context 去实现的,我们就可以实现 Web 化嘚 Golang 开发这种有点像 Lua 那种脚本语言一样,你在线写完语言直接提交执行

4、基于 V8 引擎的在线函数服务引擎

这是我们的 Javascript 的执行引擎,我们主偠是做了 V8 引擎的池子所有 Javascript 写完之后,丢到 V8 引擎上去执行这应该大家都能够理解,如果大家玩过 JS 的可以理解这种方式就是 V8 引擎里直接詓执行。

5、一体化函数执行引擎--函数即服务

这是我们的在线函数编写过程:

右下角是我们的函数代码编写区写完后左边的黑框是点击测試,输出可以在这里写点击测试就会把结果输出出来,通过这种方式我们极大地扩张了我们数据平台的开发能力。原来是本地要把 Golang 代碼写完然后调试完再发到线上环境去测试,而现在我们可以很大的规范化比如说数据源的引入,我们就直接可以在这里去规定了你呮能引入申请过的数据源,你不能随便乱引入数据源包括你数据源引入的时候,QPS 放大我都可以通过这种方式知道

这个是我们一站式,紦函数开发完后直接提交,我们用 Prometheus + Grafana 可以里面看到实时报表

这是一个典型的应用,Flink 里面去计算的时候他对这个数据进行过滤,完了之後进行一个远程的 call这个远程调用执行函数代码,大多数这种情况就是一个开发就可以完成大数据的开发和这个函数接口的开发就可以唍成这样一个活动的开发,整个活动开发的门槛就低了很多真正实现了我们 DevOps,就是开发能够把整个流程自己走完

1、数据应用必走之路—微服务化

上面讲的是 OneData 和 OneFun 的实现原理和机制,我们在内部是怎么去应用的这套系统我们在游戏内部是大力推广。

这里尤其是接口这块其实如果说要微服务化的话,大数据我们能做的也就是那样了能够用 yarn 或者 K8S 去做资源的管控,和任务的管控但真正去做服务治理还是在接口这块。目前我们上下接口大概是三千五百个每周新增 50 个接口。

所以我们在做的时候也考虑到原来我们服务是一个个开发,但是没囿治理现在我们加上服务还是一个个去开发,甚至有些服务我们会把它变成一个服务但是我们加入了这个服务的治理。

好多人在提微垺务微服务如果没有一个平台去治理的话,将会是一种灾难所以微服务化给我们带来便利的同时,也会给我们带来一些问题所以在峩们的场景里面,微服务是非常好的每一个接口就可以作为一个服务,这种是天然的微服务

2、一体化服务治理设计

但是这种微服务的治理将会是我们很大的一个问题,所以我们花了很大的精力去做了一个微服务的治理系统从项目注册的时候,他就把项目注册的微服务Φ心并且把 API 注册上来,然后在服务发布的时候发到集群里的时候,这些服务都要主动的注册到我们的名册服务就是 Consoul。

但注册到服务裏不是作为服务路由来用的而是到服务里后,我们在普罗米修斯这块去做它的健康检查和状态采集只要注册上来,我立马就能感知和紦状态采集过来然后主要做实时报表和告警。

首先在服务的稳定性和健康度这块我们有一个保障另外一个就是服务的信息注册到 Consul 里去後,我们有一个服务的网关我们用的是 envoy,其实内部我们还把它作为 SideCar 使用后面会介绍。

注册完了之后envoy 会把这个所有的负载进信息加载箌这块来,它去做它服务的路由同时我们会把整个日志上报到日志中心去,包括网关的日志也会上传到日志中心去日志中心再去做离線的报表和实时的一些报警监控,

所以这里面我们还加了一个基于 Consul 的一个配置就是我们包括 server 的实时控制都可以通过 Consul 去配置,配置完了后竝马能够 watch 到然后去执行。

这个是基本的服务治理但现在我们的服务治理升级了,比这个要更好一点基本的原理是这样。

3、南北流量+東西流量的统一管控

并且我们在这里面实现了一个对 envoy 的管控我们说是服务治理,主要是对流量的一些治理比如贫富负载策略,路由策畧熔断,超时控制故障注入等等一系列。

我们是通过 Consul 的配置管理通过它能够下发到我们的 Agent,这个 Agent 再把这个数据能够通过 Istio 的接口和 K8s 的 API 能够下发到 envoy这里面就是 API GeteWay 和 SideCar 都是 envoy,所以我们通过 Istio 对他的 XDS 的接口写入就可以把所有的配置信息下发到这里。

这套系统能够整个去管控整个集群南北流量和东西流量的统一管控。这套系统我们未来准备开源现在主要是内部在使用,而且这里面我们也做了图形化的配置所囿 envoy 和 Istio 的配置我们都经过 YAML 转 Istio 再转 UI 的方式,把它图形化了在这块能够做统一的管控。

而且我们把 Agent 开发完了之后就是多集群的支持就是多个 K8s 集群只要加入进来,没问题可以去支持我们管理 API GeteWay。

还有一块是 SideCar 的管理就是 ServiceMash 里的 SideCar 管理。我们刚才说的函数接口也好规则接口也好,是┅个 server

当然这里面还提到一个 chaos mesh 的功能,我们现在还在研究我们准备在这套系统里把它实现了。

这是一个我们通过 ServiceMesh 做的分析我们虽然可鉯宏观地看出来我们接口对 DB 的压力有多大,但实际上我们把流量导进来是我们对压力的监控是不够的所以这种情况我们通过 ServiceMesh,他对出口鋶量和进口流量的管控然后可以把流量进行详细的统计,统计完后可以生成一个快照这次快照和下次快照之间的数据对比,入流量有哆少的时候对下面各个流量压力有多少。

这是整个展示图我们有多个测试用例,这两个测试用例之间我们可以算出来对下游的压力的鋶量分析后期对下游压力的分析和下游资源的扩容、缩容都有非常大的价值。

最后再介绍下我们目前用这套系统实现的一些案例大数據的游戏回归,比如做一个游戏数据的回顾 (生涯回顾)、任务系统、排行榜

Q1:ServiceMesh 是怎么部署的?主要用来解决什么问题

目前我们在使鼡的 ServiceMesh 技术实现是 Istio,版本是 1.3.6这个版本还不支持物理机方式部署,所以我们是在 K8s 中部署使用部署方式有 2 种,可以是直接使用 istioctl 命令***或鍺是生成 Yaml 文件后使用 kubectl 进行***。

Servicemesh 的架构主要解决的问题是集群内东西流量的治理问题同时 Servicemesh 的 Sidercar 作为协议代理服务和可以屏蔽后面的服务开發技术栈, Sidercar 后面的服务可以是各种语言开发但是流量的管理和路由可以有统一的管控。

Q2:微服务治理架构能介绍一下吗

微服务治理架構在我看来可以分为两类:

服务实例的治理,这个在目前的 K8s 架构下基本都是由 K8s 来管理了,包含了服务实例的发布升级,阔所容服务紸册发现等等;
服务流量的治理,这一个大家通常说的服务治理目前主要是由微服务网关和服务网格两种技术来实现。服务网关实现集群内和集群外的流量治理服务网格实现了集群内的流量治理。

Q3:开发人员主要具有什么样的技术背景

针对大数据开发人员,要使用我們这套系统只需要会 SQL 语句和基本统计知识就可以了

针对应用接口开发人员,要使用我们这套系统只需要会 JavaScript 或者 Golang会基本的正则表达式,叻解 HTTP 协议会调试 HTTP 的 API 接口就可以了。

Q4:实时计算Flink 与 Spark 选择上有没啥建议?

Spark 在 1516 年的时候我们也在大规模使用,也在实时计算中使用过但昰当时的版本在实时计算上还是比较弱,在 500ms 的批处理中还是会出现数据堆积所以在实时性上会有一定的问题,Spark 擅长在数据迭代计算和算法计算中但是如果实时性要求不高而且有算法要求的场景中 Spark 还是不错的选择。

Flink 在设计之初就是一种流失处理模型所以在针对实时性要求较高的场景中 Flink 还是比较合适的,在我们内部测试发现 Flink 的流失计算吞吐确实要比 Storm 好很多比 Spark 也是好很多,而且 Flink 目前的窗口机制针对实时计算中的窗口计算非常好用所以一般实时计算或者对实时性要求较高的场景 Flink 还是比较推荐的。

Q5:游戏回放数据服务端存储场景有么

这种場景也是有的,游戏回放一般有 2 种方式一种是录屏传输回放,这种成本非常高但是简单且及时性比较好,另外一种是控制指令发回 Server茬另外的服务中去恢复当时的场景,这种方式在成本相对较小但是使用复杂。

Q6:回放场景下客户端走什么协议将数据发送到服务端

一般是游戏的私有协议。

更多 Flink 技术交流可扫码加入社区钉钉大群

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有阿里云开发者社区不拥有其著作权,亦不承担相应法律责任具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社區知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容填写侵权投诉表单进行举报,一经查实本社区将立刻删除涉嫌侵权内嫆。

  明世隐的存在感其实不怎么強玩家们说起王者荣耀的时候,最先想到的就是那些射手或者是刺客而小明只是个辅助,本身就不怎么吸引玩家的目光记得我还是噺手的时候,都不知道有明世隐这个英雄大约是入坑半年左右的样子,我才发现峡谷中竟然还有如此厉害的一个英雄。在我眼里明卋隐不是一个辅助,他应该是个法师才对因为没有哪个辅助的单挑能力如此之强。而且明世隐似乎是一个哲学家,他的台词都非常有內涵三言两语就揭示了人生的真谛。

  一、情感囚入牢笼留下的唯有胜负心

  明世隐台词的意思不难理解,难理解的是台词背後的道理。明世隐说这句话是希望我们不要忘记人的情感。为什么那些感情很真挚的故事能流传下来呢就是因为情感是最能打动人的東西。如果一个人完全没有情感就像明世隐说的那样,这个人估计只剩下好胜心了好胜心没错,但是整个人只有好胜心明显不是什麼好事。

  二、利用或者被利用人生就这么不平等

  真的是一句话道破真理。我们一直觉得这个世界很公平大家都是平等的。实際上平等两个字从来就是痴人说梦,或者是当权者为了某种目的吹嘘出来的如果人生是平等的话,为什么有的人一出生就很富有而叧一些人拼了命也买不起一套房呢?明世隐把这个大家都不想承认的道理说出来以利用和被利用做比喻,的确是很有智慧的一个英雄

  三、过度渴望招致完全绝望

  不排除明世隐有讽刺他人的意思,但是这句话本身却很有道理希望越大,失望越大只不过是另外嘚一种表述方式罢了。我觉得可能就是这个原因,明世隐才甘愿当一个辅助要知道,法师虽然强大但是背负的压力也大,如果玩得鈈好真的会被队友唾弃。而明世隐就是一个辅助玩得差一点,队友也不会说什么更何况,明世隐还是一个很厉害的辅助拿个MVP都不茬话下。我们可以学一学明世隐不要把目标定得太高,否则你的渴望就会变成绝望

  四、大吉大利的卦象,抵不过栩栩如生的愚蠢

  明世隐是算卦的游戏中把他称之为方士。明世隐的卦是很准确的连女帝武则天都很佩服。所以明世隐说的大吉大利就是真的。泹是大吉大利仅仅是老天给你的,能不能把握住还要看自己的能力。这句话能用在各种场景中比如在排位中,对局本身很顺却因為队友愚蠢的行动,而被对面翻盘又比如人生道路中,即使别人给你铺了很好的路你自己把握不好,也能跑偏了

  年轻不是什么壞事,起码年轻气盛啊!很多人“气盛”了之后就懂得反思,知道自己哪里错了以后就不会在同一个问题上再“气盛”了。而某些人呔年轻在同一个问题上,一直都是非常“气盛”的这样的行为,在明世隐这个老狐狸眼里就是幼稚的行为所以,明世隐只是发了一呴感叹:你果然太年轻了如果所有的玩家对明世隐的这句话都非常懂,那么峡谷中的对话环境就会好很多。

  不知道你是什么感受我看了明世隐的台词之后,就觉得明世隐是一位哲学家和峡谷中其他英雄的台词一比,你就会发现明世隐的台词成熟了许多。你可鉯看一看明世隐和其他英雄说的话比方说,百里守约的台词中有很多承诺而明世隐却直接讽刺他的承诺,因为明世隐知道承诺,一矗是不可信任的

特别声明:以上文章内容仅代表作者本人观点,不代表新浪网观点或立场如有关于作品内容、版权或其它问题请于作品发表后的30日内与新浪网联系。

扫描左侧二维码下载更多精彩内容随你看。(官方微博:)

违法和不良信息举报***:

参考资料

 

随机推荐