王义成:阿里云Redis服务助力游戏行业发展
2018數據庫直播大講堂峰會Redis專場,來自阿里云高級產品專家王義成帶來Redis助力游戲行業的相關演講。主要從傳統數據庫的壓力開始談起,著重介紹了阿里云Redis產品架構以及不同的版本,接著對Redis服務能力進行了說明,最后對游戲、視頻行業的應用作了介紹。
直播視頻:https://yq.aliyun.com/video/play/1312
PDF下載:https://yq.aliyun.com/download/2449
以下是精彩視頻內容整理:
傳統數據庫的壓力
傳統數據庫服務模式復雜,賬單交易數據存儲在OLTP SQL數據庫,服務關系圖譜數據存儲到NoSQL數據庫,經常訪問的數據存儲在Key-Value緩存數據庫,沉淀數據存儲在OLAP數據倉庫引擎,經過OLAP小型數倉會做一些在線實時處理分析,還會對長久性數據直接存儲在大數據存儲平臺進行離線大數據分析,傳統數據庫服務模式中,每款數據庫都是一個平臺,一層一層推到另一個數據庫引擎中。數據庫整體演化過程如下:
企業發展之初,系統簡易,只需要幾個單點運行的數據庫,只有SQL或NoSQL,此階段只需要一個兼職DBA就可以搞定;
初現規模,隨著數據庫業務發展,傳統數據庫壓力越來越大,系統架構逐漸復雜,多套HA集群數據庫開始使用監控系統,一些業務需要Key-Value超緩存數據,SQL和NoSQL進行逐步分離,對于不同的業務模塊開始拆分,對于NoSQL等其它類型數據庫,我們會將其存儲到標準的配置模式中,這是傳統數據庫發展一段之后演變的結果。
發展上升期,游戲、視頻直播等行業需要多個項目,項目因而逐漸作拆分,每個項目存儲不同類項的數據。每個業務會有一套單獨數據庫,架構相對比較復雜,DBA要求獨擋一面,需要對每個項目部署、備份、優化以及技術和架構設計,因此需要一名專業頂尖的DBA幫助實現業務系統;
業務突破期,需要OLAP、離線分析等多種混合使用,業務更加復雜,還要做高速擴展,對穩定性、高性能方面提出很高要求,業務模式分為多項目,針對實時數據庫倉儲搭建大數據海量離線分析和實時BI分析平臺,我們需要一個高質量的DBA團隊,熟悉多種SQL運行引擎。
阿里云產品架構
阿里云已經構建了最全產品形態如圖, 產品架構版本分為標準版、集群版和讀寫分離版。標準版是原生的Redis模式,適配于協議完全兼容,但Redis對于線程處理有本質限制,所以標準版理論QPS為8~10W;集群版有效的擴展寫能力,提供多節點模式,把多節點組裝成一個域名包裝給用戶,使集群版性能和容量提升;讀寫分離版有效擴展讀能力,支持不同讀節點模式幫助用戶擴展整個集群讀能力。
另外在存儲模式上,我們構建了比較先進的產品體系,不同集群版本支持單副本、雙副本不同模式,單副本適用于純緩存業務要求,雙副本幫助用戶構建持久化,提供服務可靠性同時保證數據可靠性。讀寫分離版提供多副本版本,提供多重存儲模式+讀寫分離配置。
標準版-單副本
在標準版單副本中,用戶可以拿到一個產品域名寫相應服務,通過SLB路由到底層真實數據節點,對于單副本模式只有單獨進程,如果出現主機級別宕機,就會立即啟動故障后拉起,保證30S內服務馬上啟動,底層為HA故障邏輯,實時探測主節點Redis進程是否真實有效,如果失效會立即切換,拉起空進程保證服務高可靠性。
標準版單副本適用協議敏感的場景,支持任何原生Redis協議,7W QPS的應用可以使用此版本,服務模式為純緩存模式,兼容所有開源客戶端。
標準版-雙副本
標準版雙副本模式與單副本模式主要區別為主備節點模式,主節點提供服務時,備節點實時與主節點同步數據,主備節點都會提供持久化功能,如果發生故障,主節點可以切換到備節點。
雙副本適用于協議敏感、純緩存,且業務宕機后,后端存儲壓力無法接受Redis宕機、緩存失效等情況。性能需求在8~10W QPS可以使用雙副本,兼容所有開源客戶端。
集群版-雙副本
集群版雙副本同樣是暴露整體域名對用戶訪問,底層架構通過多個節點服務能力的疊加把數據庫能力對外提升。可以看到,域名以下SLB、Proxy、底層節點、Configserver都整體包含在阿里云集群版架構服務之下,我們提供Proxy基本代理能力,Configserver存儲數據分片具體模式,把數據節點分發到不同的DBnode節點中,從而達到整體性能提升。
集群版雙副本適用數據量大、性能要求高的場景,性能要求達到100W QPS,訪問方式上兼容所有開源客戶端,提供單分片兩副本存儲,以及16~512G不同規格的服務。
集群版-單副本
集群版單副本與雙副本只在DBnode節點層面有所區別,單副本如果宕機,業務會馬上做相應切換,容易丟掉業務數據。單副本適用數據量大、性能要求比較高的場景,性能要求在100W QPS可使用,兼容所有開源客戶端,單分片單副本數據緩存,提供16~512G規格服務。
讀寫分離
讀寫分離架構如圖,用戶通過ECS集群訪問,通過SLB連接,底層Proxy會做數據路由,將寫節點路由到主節點模式上去,從服務路由到相應的讀節點上去,實現讀寫分離模式。讀寫分離適用讀多寫少、超大key、不要求強一致場景。它的優勢是對用戶透明,能力可線性擴展,支持所有指令。潛在問題是如果一主多從級聯復制,會出現數據ms級別不一致問題。
服務能力
我們真正為用戶提供了相應的整體用戶解決方案,阿里云Redis與其它開源版本的區別主要體現在以下幾個層面:
此外,阿里Redis在產品功能層面服務提升分為四大塊:
- 可靠性:提供雙機熱備模式、提供持久化模式、同城容災和異地容災。
- 安全性:打通VPC網絡,支持強密碼認證,支持Ddos攻擊防護和SSL加密。
- 易用性:提供性能監控和閾值報警,還有高頻操作驗證和數據管理。
- 性能:支持集群版和高性能硬件,基于Binlog模式復制,免除pfork。
獨特的容災能力
阿里云在服務能力層面提供獨特的容災能力,我們可以提供兩機房跨region服務,內部使用BLS組件實時抽取源庫端增量日志,經過流復制模式傳輸到異端機房,再實時寫到另一個機房Redis中,作遠程異地同步。
這適用于可用性要求極高、每個單元都能承擔流量、允許N-1個機房斷電的多活或雙活場景,拓撲模式為服務單元化+數據中心模式,在內核層面作單元數據生產和消費。
行業特性
游戲
游戲行業整體服務模式分為四個:
- 滾服:隨時秒開服,一天多服。阿里云Redis支持基于一個時間點瞬間幫助用戶克隆一個實例出來,可能分鐘級別就會啟動一個Redis。
- 灌服:瘋狂灌人,配置逐步增大。阿里云Redis提供從標準版配置一鍵升級到集群版配置。
- 合服:業務收尾,多服合并。阿里云Redis提供把多個服務遷入到一個數據庫中去,再進行實時降級。
- 閃回:快速回滾,阿里云Redis提供基于時間點或局部快速恢復到原來某一時間點。
目前,阿里云上的游戲客戶遍布很多,包括陌陌游戲、暢游等,總結游戲行業解決方案主要有三點:克隆實例、數據校驗,數據歸檔快速回滾和云上云下數據打通。
視頻直播
對于快速瞬間用戶涌入、大量同時在線模式非常適合使用Redis,傳統視頻直播類行業有很多信息都需要存儲在Redis中,比如朋友關系、送禮物和評論,或者搶紅包類的好友互動,都大量的使用Redis,視頻直播行業的Redis數據庫操作遠遠大于關系型數據庫,該行業的穩定性高于一切,內存可能很小但QPS很高,連接數要求較大。
針對視頻直播行業的特性,阿里云也做了相應的解決方案。包括連接數放開,阿里云將Redis連接數普調至1~2W;帶寬單獨售賣,集群支持熱點key,會在一定時間內捕捉key訪問次數是否大于閾值,幫助緩解單個節點被打爆情況;采用讀寫分離模式緩解對于某個房間過熱或某個明星直播產生的問題。
除了游戲和視頻直播,我們也在其他民生領域進行了探索,并給出解決方案。比如新聞、交通、金融等。
本文由云棲志愿小組毛鶴整理,編輯百見
總結
以上是生活随笔為你收集整理的王义成:阿里云Redis服务助力游戏行业发展的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: input ios问题
- 下一篇: 如何自动检查内存泄漏和句柄耗尽