虎牙在業務全球化的過程中,對于數據庫產生了新的要求。
如果你喜歡觀看或參與游戲直播,那么你很有可能會用過虎牙。作為國內兩大游戲直播平臺之一,虎牙擁有兩款核心產品,除了讓國內用戶津津樂道的虎牙直播,還有面向海外用戶的Nimo TV。前者的月活躍用戶已突破1.78億。
虎牙海外業務平臺技術負責人馬昭告訴記者,虎牙在發展過程中一直秉承著“技術驅動娛樂”的理念,在直播領域采用了很多新技術,如實現了行業首個虛實同臺的AR互動直播。
而在深耕國內業務的同時,虎牙也拓展了海外業務。2018年,虎牙正式推出海外直播產品Nimo TV,用兩年時間順利進入了東南亞、拉美、中東等地區,并獲得了一定的市場份額。2020年,Nimo TV的月活用戶已經突破了三千萬。
業務全球化的新要求
據馬昭介紹,虎牙在業務全球化的過程中,對于數據庫產生了新的要求:
第一個要求是成熟穩定,因為數據庫的穩定性直接決定著上云業務的穩定性,一旦數據庫出現問題,影響會很大。
第二,海外業務擴展比較迅速,對數據庫的擴展性也提出了要求,要能跟上Nimo TV的節奏,能進行快速擴展。
第三,數據庫要能夠兼容已有的架構。因為在業務出海之前,虎牙已經有了國內的虎牙直播業務,很多基礎平臺和構件已經可以部署到海外了,基本可以做到無縫上線。
基于這些需求,技術團隊對虎牙的數據庫體系進行了重新審視,并且重新設計了數據庫體系。
馬昭表示,市面上的數據庫種類很多,不過虎牙選擇數據庫的時候還考慮到:供應商是否能對全球化業務進行支持、在某些區域里會不會更有優勢、能不能很好的自動擴容、最終的吞吐量是多少,以及成本如何優化等因素,并最終選擇了亞馬遜云科技的數據庫。
用Amazon Aurora實現性能提升
過去,虎牙一直使用關系型數據庫MySQL,但隨著業務量的增加和數據內容的增加,MySQL的性能已經無法滿足需求。經過研究和測試,虎牙用Amazon Aurora替換了傳統的MySQL,達到了性能提升的目的。
虎牙在Amazon Aurora中存儲了交易信息、主題信息、主播的開播記錄以及用戶信息等等。原先存儲在MySQL上的數據都遷移進了Amazon Aurora。
馬昭告訴記者,使用Amazon Aurora給虎牙帶來了四個好處:
首先是性能提升,如果要提升傳統的MySQL的讀寫性能,需要做分庫分表操作。但這會讓聚合查詢變得非常困難,業務需要做很多兼容。而Amazon Aurora省去了大量的分庫分表工作,使研發人員可以更加聚焦在主營業務上。
第二,Amazon Aurora非常容易擴展,因為海外流量變化非常迅速,需要頻繁的擴容與縮容,而MySQL擴縮容需要遷移數據,非常困難。而Aurora屬于計算和存儲分離的架構,擴縮容非常容易?,F在虎牙基本已經實現了Aurora自動擴縮容,使成本下降了50%以上。
第三,是Amazon Aurora的全球同步能力,這對于虎牙的全球化業務非常重要。因為海外用戶與國內用戶有很大不同,海外用戶的距離相對較遠,處于不同的國家,所以用戶之間的訪問延遲比較高。如果要降低延遲,提升用戶體驗,需要能就近訪問數據。但MySQL很難滿足這個要求,Amazon Aurora的物理同步方式能夠很好的支撐虎牙數據的全球化。
第四是維護與遷移的能力,傳統的MySQL維護和遷移都比較麻煩,需要很多DBA人員做復制、備份等工作,而Amazon Aurora的維護簡單得多,基本上可以實現自動化。另外,Amazon Aurora有很多API,可以很方便的接入公司的運維體系,方便做監控和規劃。
此外,Amazon Aurora還能完全兼容MySQL,無需做任何代碼更改就可以上線,研發人員對其也比較熟悉,基本上沒有技術壁壘。
用Amazon DynamoDB應對流量突增
Nimo TV業務還有個特點,就是經常會出現流量突增,低峰與高峰的數值躍動很大,相差幾十倍。因為業務涉及的海外國家很多,虎牙很難去統計每個國家的節日、預測每個國家的大主播什么時候會上線,并為此預留資源。一旦流量突增,就會對Nimo TV造成很大的壓力。
“大主播上線的時間基本上沒有什么規律。如果我們預留的資源少了,流量大時,系統可能會出問題,如果我們預留多了,就會造成很大的資源浪費。”馬昭表示。
而且,用戶訂閱主播的情況分布不均,有的小主播只有幾十個粉絲,有的大主播可能有上百萬粉絲,這對Nimo TV的存儲也帶來一些挑戰。加上直播的實時性很高,如果主播開播了,粉絲在很長時間后才收到開播推送,就很容易錯過精彩時刻。
所以虎牙設計了一套架構來做全球主播的推送,并選擇用Amazon DynamoDB來應對流量突增。
據馬昭介紹,Amazon DynamoDB有幾個好處:首先可以做到自動擴容,虎牙不需要預留很多機器來應對流量突增帶來的成本浪費。其次,它的計費方式非常友好,業務量低的時候,費用也低;業務量突然上漲的時候,只需要為高峰流量付費。第三,Amazon DynamoDB屬于無服務器架構,不需要關心它的底層如何存儲、服務器如何部署、硬盤壞掉、突然宕機等問題,也不需要投入專門的人力去做這塊工作,節省了人力。
利用Amazon ElastiCache for Redis 實現內存數據全球化
全球同步功能對于虎牙的全球化業務也很重要。隨著虎牙的業務擴展到各個大洲,用戶之間的距離越來越遠,經常需要跨洲訪問,因此必須解決降低物理延時的問題,提升用戶體驗。
于是虎牙開啟了內存數據庫全球化的進程,使用Amazon ElastiCache for Redis版本來存儲數據:一種是傳統的數據緩存,另外一種是用戶和主播的狀態,如主播是否在線,主播的粉絲有多少人在線等等,因為延遲要求很低,這塊數據同步比較麻煩,虎牙使用亞馬遜云科技的Global Datastore實現了低延遲的數據本地讀取。
使用Amazon Neptune 標定直播欺詐行為
由于傳統的關系型數據庫很難滿足多度關系的查找,所以虎牙使用圖數據庫Amazon Neptune來存儲和搜索多度關系,讓查找變得非常方便。
而且,虎牙還可以使用Amazon Neptune來標定欺詐主播和欺詐用戶。比如已經認定某個主播有欺詐行為,如果還想及時找到利益鏈條上的所有人,就要去數據庫里搜索該主播的所有關聯人,這個搜索量是非常大的,而且是多度關系的搜索。
馬昭告訴記者:“Amazon Neptune給我們提供了一個很方便的方式,就是在圖中搜索。只需要用一條簡單的Amazon Neptune語句,就可以把整個關聯關系搜索出來,把這個利益鏈條上的所有主播和用戶全部找到,然后做更深入的分析,看其他用戶是不是欺詐用戶。這樣有利于對平臺風險進行整體把控。”
談到對未來的展望時,馬昭表示,虎牙會在云游戲領域繼續探索,嘗試不同的數據存儲和同步方式對云游戲的支持,同時會做一些計算和存儲的數據分離工作來支撐服務。其次,虎牙將打造更加靈活的數據庫彈性方式,以應對各種流量突增?;⒀烙媱澰跀祿斓膹椥灾袘肁I技術,來預測主播和用戶上線的時間、流量的變化等等;此外,虎牙還嘗試一些無服務器化的數據庫應用,來實現降本增效;使用一些數據庫自帶的機器學習工具,來實現各種推薦以及欺詐檢測等功能。“總的來說,還是要結合我們自己的業務,再結合亞馬遜云科技的技術去做一些創新。這樣會走得更快、更遠一點。”
虎牙海外業務平臺技術負責人馬昭告訴記者,虎牙在發展過程中一直秉承著“技術驅動娛樂”的理念,在直播領域采用了很多新技術,如實現了行業首個虛實同臺的AR互動直播。
而在深耕國內業務的同時,虎牙也拓展了海外業務。2018年,虎牙正式推出海外直播產品Nimo TV,用兩年時間順利進入了東南亞、拉美、中東等地區,并獲得了一定的市場份額。2020年,Nimo TV的月活用戶已經突破了三千萬。
業務全球化的新要求
據馬昭介紹,虎牙在業務全球化的過程中,對于數據庫產生了新的要求:
第一個要求是成熟穩定,因為數據庫的穩定性直接決定著上云業務的穩定性,一旦數據庫出現問題,影響會很大。
第二,海外業務擴展比較迅速,對數據庫的擴展性也提出了要求,要能跟上Nimo TV的節奏,能進行快速擴展。
第三,數據庫要能夠兼容已有的架構。因為在業務出海之前,虎牙已經有了國內的虎牙直播業務,很多基礎平臺和構件已經可以部署到海外了,基本可以做到無縫上線。
基于這些需求,技術團隊對虎牙的數據庫體系進行了重新審視,并且重新設計了數據庫體系。
馬昭表示,市面上的數據庫種類很多,不過虎牙選擇數據庫的時候還考慮到:供應商是否能對全球化業務進行支持、在某些區域里會不會更有優勢、能不能很好的自動擴容、最終的吞吐量是多少,以及成本如何優化等因素,并最終選擇了亞馬遜云科技的數據庫。
用Amazon Aurora實現性能提升
過去,虎牙一直使用關系型數據庫MySQL,但隨著業務量的增加和數據內容的增加,MySQL的性能已經無法滿足需求。經過研究和測試,虎牙用Amazon Aurora替換了傳統的MySQL,達到了性能提升的目的。
虎牙在Amazon Aurora中存儲了交易信息、主題信息、主播的開播記錄以及用戶信息等等。原先存儲在MySQL上的數據都遷移進了Amazon Aurora。
馬昭告訴記者,使用Amazon Aurora給虎牙帶來了四個好處:
首先是性能提升,如果要提升傳統的MySQL的讀寫性能,需要做分庫分表操作。但這會讓聚合查詢變得非常困難,業務需要做很多兼容。而Amazon Aurora省去了大量的分庫分表工作,使研發人員可以更加聚焦在主營業務上。
第二,Amazon Aurora非常容易擴展,因為海外流量變化非常迅速,需要頻繁的擴容與縮容,而MySQL擴縮容需要遷移數據,非常困難。而Aurora屬于計算和存儲分離的架構,擴縮容非常容易?,F在虎牙基本已經實現了Aurora自動擴縮容,使成本下降了50%以上。
第三,是Amazon Aurora的全球同步能力,這對于虎牙的全球化業務非常重要。因為海外用戶與國內用戶有很大不同,海外用戶的距離相對較遠,處于不同的國家,所以用戶之間的訪問延遲比較高。如果要降低延遲,提升用戶體驗,需要能就近訪問數據。但MySQL很難滿足這個要求,Amazon Aurora的物理同步方式能夠很好的支撐虎牙數據的全球化。
第四是維護與遷移的能力,傳統的MySQL維護和遷移都比較麻煩,需要很多DBA人員做復制、備份等工作,而Amazon Aurora的維護簡單得多,基本上可以實現自動化。另外,Amazon Aurora有很多API,可以很方便的接入公司的運維體系,方便做監控和規劃。
此外,Amazon Aurora還能完全兼容MySQL,無需做任何代碼更改就可以上線,研發人員對其也比較熟悉,基本上沒有技術壁壘。
用Amazon DynamoDB應對流量突增
Nimo TV業務還有個特點,就是經常會出現流量突增,低峰與高峰的數值躍動很大,相差幾十倍。因為業務涉及的海外國家很多,虎牙很難去統計每個國家的節日、預測每個國家的大主播什么時候會上線,并為此預留資源。一旦流量突增,就會對Nimo TV造成很大的壓力。
“大主播上線的時間基本上沒有什么規律。如果我們預留的資源少了,流量大時,系統可能會出問題,如果我們預留多了,就會造成很大的資源浪費。”馬昭表示。
而且,用戶訂閱主播的情況分布不均,有的小主播只有幾十個粉絲,有的大主播可能有上百萬粉絲,這對Nimo TV的存儲也帶來一些挑戰。加上直播的實時性很高,如果主播開播了,粉絲在很長時間后才收到開播推送,就很容易錯過精彩時刻。
所以虎牙設計了一套架構來做全球主播的推送,并選擇用Amazon DynamoDB來應對流量突增。
據馬昭介紹,Amazon DynamoDB有幾個好處:首先可以做到自動擴容,虎牙不需要預留很多機器來應對流量突增帶來的成本浪費。其次,它的計費方式非常友好,業務量低的時候,費用也低;業務量突然上漲的時候,只需要為高峰流量付費。第三,Amazon DynamoDB屬于無服務器架構,不需要關心它的底層如何存儲、服務器如何部署、硬盤壞掉、突然宕機等問題,也不需要投入專門的人力去做這塊工作,節省了人力。
利用Amazon ElastiCache for Redis 實現內存數據全球化
全球同步功能對于虎牙的全球化業務也很重要。隨著虎牙的業務擴展到各個大洲,用戶之間的距離越來越遠,經常需要跨洲訪問,因此必須解決降低物理延時的問題,提升用戶體驗。
于是虎牙開啟了內存數據庫全球化的進程,使用Amazon ElastiCache for Redis版本來存儲數據:一種是傳統的數據緩存,另外一種是用戶和主播的狀態,如主播是否在線,主播的粉絲有多少人在線等等,因為延遲要求很低,這塊數據同步比較麻煩,虎牙使用亞馬遜云科技的Global Datastore實現了低延遲的數據本地讀取。
使用Amazon Neptune 標定直播欺詐行為
由于傳統的關系型數據庫很難滿足多度關系的查找,所以虎牙使用圖數據庫Amazon Neptune來存儲和搜索多度關系,讓查找變得非常方便。
而且,虎牙還可以使用Amazon Neptune來標定欺詐主播和欺詐用戶。比如已經認定某個主播有欺詐行為,如果還想及時找到利益鏈條上的所有人,就要去數據庫里搜索該主播的所有關聯人,這個搜索量是非常大的,而且是多度關系的搜索。
馬昭告訴記者:“Amazon Neptune給我們提供了一個很方便的方式,就是在圖中搜索。只需要用一條簡單的Amazon Neptune語句,就可以把整個關聯關系搜索出來,把這個利益鏈條上的所有主播和用戶全部找到,然后做更深入的分析,看其他用戶是不是欺詐用戶。這樣有利于對平臺風險進行整體把控。”
談到對未來的展望時,馬昭表示,虎牙會在云游戲領域繼續探索,嘗試不同的數據存儲和同步方式對云游戲的支持,同時會做一些計算和存儲的數據分離工作來支撐服務。其次,虎牙將打造更加靈活的數據庫彈性方式,以應對各種流量突增?;⒀烙媱澰跀祿斓膹椥灾袘肁I技術,來預測主播和用戶上線的時間、流量的變化等等;此外,虎牙還嘗試一些無服務器化的數據庫應用,來實現降本增效;使用一些數據庫自帶的機器學習工具,來實現各種推薦以及欺詐檢測等功能。“總的來說,還是要結合我們自己的業務,再結合亞馬遜云科技的技術去做一些創新。這樣會走得更快、更遠一點。”
責任編輯:劉沙





