阿里云原生內(nèi)存數(shù)據(jù)庫Tair在游戲場景的應(yīng)用,阿里云emr數(shù)據(jù)-ESG跨境

阿里云原生內(nèi)存數(shù)據(jù)庫Tair在游戲場景的應(yīng)用,阿里云emr數(shù)據(jù)

來源網(wǎng)絡(luò)
來源網(wǎng)絡(luò)
2022-07-05
點(diǎn)贊icon 0
查看icon 648

阿里云原生內(nèi)存數(shù)據(jù)庫Tair在游戲場景的應(yīng)用,阿里云emr數(shù)據(jù)阿里云原生內(nèi)存數(shù)據(jù)庫Tair在游戲場景的應(yīng)用內(nèi)容簡要:一、游戲系統(tǒng)中的Redis二、云原生內(nèi)存數(shù)據(jù)庫Tair介紹三、Tair的游戲場景一、游戲系統(tǒng)中的Redis(一)Redis In Gaming Servers :分區(qū)分服游戲的架構(gòu)非常多,總結(jié)來看基本有三......

阿里云原生內(nèi)存數(shù)據(jù)庫Tair在游戲場景的應(yīng)用,阿里云emr數(shù)據(jù)




阿里云原生內(nèi)存數(shù)據(jù)庫Tair在游戲場景的應(yīng)用

內(nèi)容簡要:

一、游戲系統(tǒng)中的Redis

二、云原生內(nèi)存數(shù)據(jù)庫Tair介紹

三、Tair的游戲場景

一、游戲系統(tǒng)中的Redis

(一)Redis In Gaming Servers :分區(qū)分服

游戲的架構(gòu)非常多,總結(jié)來看基本有三種,第一種是分區(qū)分服的游戲,第二種是全區(qū)全服,第三種是全球同服。最近全同服的游戲比較火,線上做了很多收割,而分區(qū)分服也適用于一些游戲場景。

Redis的使用場景可以分為兩種,一種場景是當(dāng)緩存使用,另一種場景是當(dāng)內(nèi)存數(shù)據(jù)庫使用。Redis的使用場景在國內(nèi)外的定位是不一樣的,在國外大多數(shù)Redis都是作為緩存使用,但在國內(nèi),可以說70%的用戶是當(dāng)做內(nèi)存數(shù)據(jù)庫。

下面就用一個分區(qū)分服的場景來介紹下Redis的典型用法。

在游戲登錄的時候,這些關(guān)系型數(shù)據(jù),包括用戶數(shù)據(jù)、用戶賬單、計(jì)費(fèi)記錄等肯定是在關(guān)系型數(shù)據(jù)庫里。這里Redis的特點(diǎn)是,比如有一個注冊活動或者新服開放,當(dāng)大量的用戶進(jìn)來后,我們就需要使用一些緩存來抗住壓力,

所以這里的Redis的使用主要是緩存場景。

第二塊是分區(qū)分服里最核心的GameServer。

GameServer是一個強(qiáng)內(nèi)存的計(jì)算型服務(wù),它不會有核心的服務(wù)在數(shù)據(jù)庫里面,但它的一些周邊服務(wù),比如排行榜,還有一些通用的服務(wù),比如分布式鎖,對戰(zhàn)匹配,選角記錄等都通常放到Redis里邊。

還有一塊是圖中間的部分。當(dāng)GameServer變更到一些數(shù)據(jù),如游戲用戶的經(jīng)驗(yàn)變化,游戲獲得的裝備,這些核心關(guān)鍵數(shù)據(jù)也是存入關(guān)系型數(shù)據(jù)庫,因?yàn)檫@些東西都是游戲資產(chǎn),上方紅色部分的場景在RDS里是做緩存。

除此之外還有一些周邊系統(tǒng),在這種分區(qū)分服游戲里,一般也有一些跨服對戰(zhàn)。消息隊(duì)列,mailbox等。這些數(shù)據(jù)也經(jīng)常放在Redis中,使用方便,性能也很好。

還有最后一塊是上圖右下角的部分,游戲公司經(jīng)常會做一些活動,比如做一些宣傳,還有類似于防作弊、防木馬的情況,需要把用戶日志落盤,這個每天生成的數(shù)據(jù)量很大,一般都會放到一個Data Warehouse或者一個分析型數(shù)據(jù)庫如ADB里面供后續(xù)挖掘。此時游戲公司還需要分析活動是否成功,是否需要做投放,Redis在這里提供工單緩存/分析加速。

以上是Redis在分區(qū)分服游戲中的一些使用場景。

(二)Redis In Gaming Servers:全球同服

另一個是最近熱門的全球同服場景,上圖是它最基本的技術(shù)架構(gòu)。

全球同服的特點(diǎn)是,所有的國內(nèi)外節(jié)點(diǎn)都是訪問了同一份數(shù)據(jù)庫。游戲行業(yè)的一個特點(diǎn)是對數(shù)據(jù)庫的性能要求并不高,但是對網(wǎng)絡(luò)和計(jì)算的要求非常高。在游戲行業(yè)里,我們常說最遠(yuǎn)的距離可能不是數(shù)據(jù)到數(shù)據(jù)庫的距離,而是“電信到聯(lián)通”的距離。在這種全球同服游戲架構(gòu)里,有一個很復(fù)雜的問題就是數(shù)據(jù)既然集中了存儲在一個地方,那么在長距離訪問時就會遇到嚴(yán)重的體驗(yàn)問題。實(shí)際上,在這種全球同服的游戲架構(gòu)里,它都會有一個Cache Svr,把遠(yuǎn)端的數(shù)據(jù)都緩存在本地,然后讓本地的訪問去增刪查改它,降低訪問時延,這是全球同服游戲架構(gòu)里的一個核心技術(shù)。在cache server技術(shù)中,由于Redis本身可以作為很好的緩存,所以這里使用得比較多一點(diǎn)。

由于數(shù)據(jù)是集中式存儲,當(dāng)所有游戲用戶都去訪問一個大數(shù)據(jù)庫的時候,要求還是很高的。對于Redis而言,一般都有一個Redis Cluster可以提供訪問。

以上是Redis在全球同服游戲里的使用場景。

(三)游戲?qū)edis的要求

如果游戲要用做高速存儲、內(nèi)存數(shù)據(jù)庫等,那么它對Redis有哪些要求

首先,對數(shù)據(jù)庫的要求是可靠性。對于Redis來說,在電商場景和游戲場景中可靠性要求都很高,但是在例如鏈路管理上還是差別較大。例如,對于電商體系而言,鏈路管理的特點(diǎn)是出問題就斷,寧可返回一個錯誤的結(jié)果,也不會Block,因?yàn)樗械碾娚替溌范际荖o Blocking,出現(xiàn)問題斷了就好,下次再處理。但是游戲行業(yè)不一樣,它需要很好的鏈路保持能力,可以慢慢解決,但是鏈接不能斷,因?yàn)閿嗔酥蠛蠖说臉I(yè)務(wù)就斷掉了,業(yè)務(wù)層還掛著各種游戲的資源信息等,這是游戲行業(yè)跟電商行業(yè)不一樣的一個地方。

一般情況下,很多游戲數(shù)據(jù)庫平均的訪問量都不大,但是不能出問題,第一是鏈路不能斷,第二是如果扛不住的時候,要求能夠平滑擴(kuò)縮容。它對平滑性的要求特別高,因?yàn)楫?dāng)一個游戲突然火了,或者剛開服時有很多用戶去注冊登錄的時候形成注冊風(fēng)暴,會發(fā)生大量擴(kuò)容的行為,如果在擴(kuò)容速度或者平滑性上有所欠缺,那么用戶體驗(yàn)就特別差。

另外,在做一個全球同服游戲的時候需要考慮容災(zāi)和多活的能力。高可靠性對數(shù)據(jù)庫類似于保險(xiǎn),抗熱點(diǎn)、抗壓力是保險(xiǎn),平滑擴(kuò)容也是保險(xiǎn)。

游戲?qū)?shù)據(jù)庫有高可運(yùn)維的要求。電商數(shù)據(jù)庫基本不會涉及太多的運(yùn)維,因?yàn)槊刻斓墓?,包括交易,購物,交易快照等都是存下來的,最多索引一下,不會來回搬?shù)據(jù)。但是對游戲而言,由于每天產(chǎn)生的數(shù)據(jù)和日志特別多,并且游戲運(yùn)營迭代特別快,比如有些分區(qū)分服的游戲,尤其做滾服、合服,迅速開一個新的服務(wù)器,把數(shù)據(jù)庫導(dǎo)過去,然后去滾動,這些游戲運(yùn)營模式對數(shù)據(jù)運(yùn)維要求特別高。當(dāng)游戲用戶反饋說在游戲中丟了東西,我們需要幫他進(jìn)行查找,因此需要支持?jǐn)?shù)據(jù)恢復(fù),還有內(nèi)省、清洗等。

此外還有低成本。游戲行業(yè)有很明確的冷熱效應(yīng),游戲剛開始特別火,等游戲熱度慢慢降下來之后,需要迅速把數(shù)據(jù)存下來換出去,降低運(yùn)營成本,這也是非常關(guān)鍵的一點(diǎn)。低成本考察的是介質(zhì),像Redis這種數(shù)據(jù)庫,如果數(shù)據(jù)量都放到內(nèi)存里,那么成本一定比較高。有一塊節(jié)省成本的措施是極致彈性,比如今天游戲做活動,我們把數(shù)據(jù)給彈上去,明天再拆下來,只要有足夠彈性,那么成本是可控的。

最后是快速開發(fā)。游戲行業(yè)的在開發(fā)上的特點(diǎn)是快速迭代,競爭比較激烈,推出游戲的速度特別快,如果成功,則馬上準(zhǔn)備下一版,不成功就很快收掉做下一個游戲。所以如果有框架支持,更多的API,提供更多的封裝和語法糖,那么它可以很迅速地搭建適合自己的游戲體系。

二、云原生內(nèi)存數(shù)據(jù)庫Tair介紹

云原生內(nèi)存數(shù)據(jù)庫Tair(Redis企業(yè)版)是阿里云推出的支持高并發(fā)低延遲訪問的云原生內(nèi)存數(shù)據(jù)庫,完全兼容Redis數(shù)據(jù)結(jié)構(gòu)和API。支持主從與集群架構(gòu),采用多樣存儲介質(zhì)應(yīng)對不同數(shù)據(jù)溫度場景,并提供全球多活、數(shù)據(jù)閃回和豐富的數(shù)據(jù)模型等特性,致力于幫助客戶構(gòu)建在線實(shí)時場景。

Tair兼容了Redis的數(shù)據(jù)結(jié)構(gòu),那么面向游戲行業(yè),和Redis的差別主要是什么呢

首先是容災(zāi)方面,開源的自建Redis沒有很可靠容災(zāi),但阿里云Tair通過可靠的高精度容災(zāi)模塊,能夠做到快速容災(zāi),比如10秒級就可以切換掉一個有問題的數(shù)據(jù)庫。

第二個是鏈接保持能力,游戲領(lǐng)域?qū)︽溄颖3值男枨蠛芨?,這和電商、直播等領(lǐng)域不太一樣。Tair通過代理層的熱升級能力,將鏈接盡可能保持,確保了升級、宕機(jī)等多種情況下的可用性。

第三,一般數(shù)據(jù)庫做容災(zāi)就是主備容災(zāi),用Redis的時候也可以搭個主備出來,阿里云Tair除了采用多可用區(qū)容災(zāi)或跨可用區(qū)容災(zāi)之外,還提供了跨域多活容災(zāi)的能力。注意的是跨域容災(zāi)不一定是多活,但多活一定是跨域容災(zāi)。

還有就是備份,備份很關(guān)鍵,可以防止刪庫跑路等情況。游戲行業(yè)的特點(diǎn)是發(fā)版本的速度特別快,如果版本發(fā)錯則需要快速回滾。Tair提供任意時間點(diǎn)的數(shù)據(jù)恢復(fù),當(dāng)游戲廠商發(fā)現(xiàn)發(fā)布的版本有問題,可以馬上回滾,降低影響。除此之外,Tair還支持秒級數(shù)據(jù)閃回這樣更精密的數(shù)據(jù)回滾能力,可以指定過去任意秒級時間點(diǎn)按key/key pattern或者全量恢復(fù)數(shù)據(jù)。

在這種日常運(yùn)維中,可觀測性是需要建設(shè)的重點(diǎn),業(yè)務(wù)在運(yùn)行中不可避免會遇到實(shí)時熱Key、大Key。由于游戲迭代速度很快,質(zhì)量方面難免偶爾出現(xiàn)問題,我們能夠通過實(shí)時和歷史Key分析快速找到這些瓶頸并解決問題。在Tair中除去能夠迅速觀測到熱點(diǎn),還能夠迅速把熱點(diǎn)加速掉,我們稱之為散列技術(shù),可以把熱點(diǎn)的抗壓能力輕松提升到10~30倍。

成本上,從我們的角度來看Redis,往內(nèi)存里邊放的東西越多,成本就越高,內(nèi)存是所有的存儲里最貴的。但是阿里云Tair有更好方式,我們有Tair持久內(nèi)存型,很好地解決了存儲成本和訪問性能的矛盾。最早做持久內(nèi)存的時候,它沒有什么企業(yè)級特性,后續(xù)我們把企業(yè)級能力都搬到持久內(nèi)存上,如今大家去買持久內(nèi)存的話,就具備這些企業(yè)級能力,包括PITR、多活、加速等。

開源Redis的好處在于它跟一般的KeyValue不一樣,它存很多結(jié)構(gòu)化數(shù)據(jù),跟數(shù)據(jù)結(jié)構(gòu)更貼合一點(diǎn),用得比較快一點(diǎn)。但是我們發(fā)現(xiàn)用戶真正用起來的時候,這些結(jié)果是不夠的。游戲用戶大量使用JSON,比如存用戶屬性、道具等,都是JSON結(jié)構(gòu)。所以Tair引擎里已內(nèi)置了JSON結(jié)構(gòu),那么用戶用起來就非常方便了。

三、Tair游戲場景介紹

(一)Tair全球多活

Tair有一個典型的場景是全球多活。

這個是線上的一個例子,例如游戲里中國用戶可以到美國的商店里去買一個光環(huán)裝備,然后這個用戶在國內(nèi)服務(wù)器上就具有了一個光環(huán)。

全球多活是基于引擎高可靠的數(shù)據(jù)多活服務(wù),Tair提供全球同服的高效Cache Server,數(shù)據(jù)庫本身具備多活,數(shù)據(jù)寫入一個地方,那么所有地方都可見。

多活在游戲里基本是用在Cache Server上,所有互聯(lián)網(wǎng)類的用戶都會有一個登錄Session系統(tǒng),如果要去把Session系統(tǒng)做大,做一個很可靠的全球多活Session,Tair也能支持。

(二)數(shù)據(jù)閃回 任意時間點(diǎn)數(shù)據(jù)恢復(fù)

Tair另外一個經(jīng)典場景是任意時間點(diǎn)的數(shù)據(jù)恢復(fù),它實(shí)際上是數(shù)據(jù)安全的一部分。數(shù)據(jù)安全包括鏈路加密,也包括存儲加密,還包括多副本等。

但任意時間點(diǎn)數(shù)據(jù)恢復(fù)這個場景游戲客戶用得最多,大約占90%。游戲廠商在發(fā)版本的時候,如果出現(xiàn)問題可以快速回滾,也支持只回滾某一些東西?;貪L既支持把數(shù)據(jù)恢復(fù)到源,也支持克隆一個新實(shí)例來恢復(fù)。

(三)CAS/CAD 高性能分布式鎖

剛才我們從分區(qū)分服的服務(wù)器里邊也看到了,Redis本身會作為Game Server的一些周邊服務(wù),最簡單一個例子就是分布式鎖。多個機(jī)器同時去拿一個資源的時候,牽扯到資源競爭肯定要有鎖,業(yè)務(wù)需要通過分布式鎖來解決。但這個分布式鎖很少有人實(shí)現(xiàn)的對,所以我們就直接把分布式鎖做在這個引擎里面了。

分布式鎖比起一般的鎖,它除了有互斥性,還有租約性。一般會在鎖上加一個Timer,設(shè)置鎖多長時間,當(dāng)租約到期后,鎖自動釋放。

分布式鎖存在的問題不是加鎖的地方,而是釋放的地方。舉個例子,比如一個應(yīng)用程序去加了鎖,應(yīng)用程序沒有掛,但是時間拖得長一點(diǎn),然后等到引擎里面的Timer超時,鎖就釋放了。結(jié)果第二個應(yīng)用程序就拿到鎖了。當(dāng)這個APP又跑起來的時候,我們一刪鎖就把別人的鎖給刪掉了,會引發(fā)資源錯誤。

因此,難點(diǎn)在刪除這一步,刪除時的要求是只能刪自己的鎖,不能刪別人的鎖。所以很多的云上用戶,如果用去del命令去刪Key的話就刪錯了,正確的實(shí)現(xiàn)是一個事務(wù)操作,而Tair直接在引擎里實(shí)現(xiàn)了分布式鎖。

阿里內(nèi)部90%的分布式鎖都是使用Tair的高性能分布式鎖,包括許多游戲客戶也經(jīng)常使用。

(四)TairDoc:游戲業(yè)務(wù)快速迭代

另一個核心的module能力就是TairDoc,因?yàn)镴SON數(shù)據(jù)結(jié)構(gòu)是游戲用戶里最大的特征結(jié)構(gòu),我們更新JSON的時候不需要該表,直接在對應(yīng)的JSON數(shù)據(jù)中增加相應(yīng)信息即可。

(五)TairZset: 多維/多條件實(shí)時排序

排行榜是游戲場景的最常見應(yīng)用,也是Redis的一個主要應(yīng)用場景,甚至有些大型游戲公司有一個專門的排行榜組,給全平臺游戲人員提供排行榜服務(wù),而非直接暴露一個Redis zset接口。在具體開發(fā)實(shí)現(xiàn)中,會遇到如下兩個主要的問題。

第一個問題是在對戰(zhàn)的時候,玩家選擇排行榜上的其他玩家PK,肯定也是選一個分?jǐn)?shù)和時間差不多的,因此,做排行榜的時候是多維度的。例如在直播網(wǎng)站,可以看到在線人數(shù),粉絲點(diǎn)贊數(shù),禮物金額等。如果按照一個個維度去做的時候,那么很難做一個很精確的使用。開源的Redis只能提供一維的排行榜,而Tair則可以提供包含多個Score的多維排行榜,這樣的多維/多條件實(shí)時排序能力很好地解決了這個問題,開發(fā)者使用起來也會非常的敏捷順手。

第二個問題是當(dāng)游戲特別大的時候,例如游戲用戶有2000萬人,那么2000萬人的排行榜是非常大的了,在這樣規(guī)模排行榜程序設(shè)計(jì)上把所有的用戶都存在一個Key下面,Redis就會發(fā)生數(shù)據(jù)傾斜,性能也不是特別好,而如果要把 Key拆開,因?yàn)榕判邪窦炔环戏峙渎?,也不符合交換率,所以拆的話也比較難。針對這個痛點(diǎn),通過TairJedis更可以創(chuàng)建分布式排行榜,非常敏捷的構(gòu)建大規(guī)模、高靈活度的排行榜應(yīng)用,用戶可以根據(jù)業(yè)務(wù)容忍度和性能訴求選擇分布式精確/非精確排行榜而不用關(guān)注實(shí)現(xiàn)細(xì)節(jié),讓游戲開發(fā)者能夠更加敏捷地進(jìn)行游戲邏輯的開發(fā),這些細(xì)節(jié)都是通過SDK層結(jié)合低層TairZset能力幫助用戶構(gòu)建起來的。

后續(xù)Tair的產(chǎn)品發(fā)展過程將會針對游戲行業(yè)的更多場景提供更為靈活敏捷的能力,同時在客戶降本增效上做進(jìn)一步探索。


文章推薦
Youtube視頻營銷——4種方法快速提高客戶留存率來提高關(guān)鍵詞排名,移動營銷新玩法之youtube
TikTok 紅人營銷模式主要有哪些,tiktok為什么要紅人營銷
Wish賣家一定要知道的知識點(diǎn),wish賣家規(guī)則
Wish店鋪排名有什么依據(jù),wish店鋪需要注意什么


特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。

搜索 放大鏡
韓國平臺交流群
加入
韓國平臺交流群
掃碼進(jìn)群
歐洲多平臺交流群
加入
歐洲多平臺交流群
掃碼進(jìn)群
美國賣家交流群
加入
美國賣家交流群
掃碼進(jìn)群
ESG跨境專屬福利分享群
加入
ESG跨境專屬福利分享群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進(jìn)群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
ESG獨(dú)家招商-PHH GROUP賣家交流群
加入
ESG獨(dú)家招商-PHH GROUP賣家交流群
掃碼進(jìn)群
《TikTok官方運(yùn)營干貨合集》
《TikTok綜合運(yùn)營手冊》
《TikTok短視頻運(yùn)營手冊》
《TikTok直播運(yùn)營手冊》
《TikTok全球趨勢報(bào)告》
《韓國節(jié)日營銷指南》
《開店大全-全球合集》
《開店大全-主流平臺篇》
《開店大全-東南亞篇》
《CD平臺自注冊指南》
通過ESG入駐平臺,您將解鎖
綠色通道,更高的入駐成功率
專業(yè)1v1客戶經(jīng)理服務(wù)
運(yùn)營實(shí)操指導(dǎo)
運(yùn)營提效資源福利
平臺官方專屬優(yōu)惠
聯(lián)系顧問

平臺顧問

平臺顧問 平臺顧問

微信掃一掃
馬上聯(lián)系在線顧問

icon icon

小程序

微信小程序

ESG跨境小程序
手機(jī)入駐更便捷

icon icon

返回頂部

【免費(fèi)領(lǐng)取】全球跨境電商運(yùn)營干貨 關(guān)閉