繼“一部手機游云南”后,抗疫時期,云南在全省范圍內的公共場所推廣由騰訊云提供技術支持的“云南抗疫情”掃碼系統,實現全體民眾出行掃碼,全面分析預測確診者、疑似者、密切接觸者等重點人群流動情況。
截至2月24日,云南省累計有1.65億人次掃碼登記“云南抗疫情”微信小程序,用戶數1325.81萬人(數據來自昆明信息港)。市民使用起來也極其便捷,在進入公眾場所前用微信掃描“入”二維碼,離開時再掃描“出”二維碼,這兩張二維碼就是云南打贏新冠肺炎疫情防控阻擊戰的兩桿槍。
如此“簡單”的操作背后下的功夫可不“簡單”。
PartⅠ 高效處理急速爆發的億級流量
如果把每天新增億級數據存放在普通單機數據庫里,數據庫的查詢性能會急劇下降,甚至分析能力也會受影響。同時,急速的增長量受空間限制無法長期存儲,即使通過大批量擴容滿足了性能要求,隨之而來的是極高的成本投入。最重要的是,普通單機數據庫數億數據的查詢性能無法滿足秒級返回的需求。
因此業務方迫切需要一款支持PB級,且可以應對高速聯機分析和高并發的事務處理的云上可伸縮的HTAP分布式數據庫系統,經過了微信支付這樣嚴苛業務考驗的騰訊自研國產分布式數據庫——TBase,可以全方位滿足需求。
TBase是騰訊自研的分布式數據庫,可以輕松應對億級數據的存儲、分析和查詢。集高擴展性、高SQL兼容度、完整的分布式事務支持、多級容災能力以及多維度資源隔離等能力于一身,采用無共享的集群架構,適用于PB級海量 HTAP 場景。
騰訊云TBase集群架構圖
上圖是TBase的集群架構圖:
Coordinator:協調節點(簡稱CN),對外提供接口,負責數據的分發和查詢規劃,多個節點位置對等,每個節點都提供相同的數據庫視圖;在功能上CN上只存儲系統的全局元數據,并不存儲實際的業務數據。
Datanode:處理存儲本節點相關的元數據,每個節點還存儲業務數據的分片,簡稱DN。在功能上,DN節點負責完成執行協調節點分發的執行請求。
GTM:全局事務管理器(Global Transaction Manager),負責管理集群事務信息,同時管理集群的全局對象,比如序列等。
在這個架構下,TBase集群具有下面幾個能力:
多活/多主:每個coordinator提供相同的集群視圖,可以從任何一個CN進行寫入,業務無需感知集群拓撲;
讀/寫擴展:數據被分片存儲在了不同的DN,集群的讀/寫能力,隨著集群規模的擴大做而得到提升;
集群寫一致:業務在一個CN節點發生的寫事務會一致性的呈現在其他的CN節點,就像這些事務是本CN節點發生的一樣;
集群結構透明:數據位于不同的數據庫節點中,當查詢數據時,不必關心數據位于具體的節點。
在云南抗疫小程序中,為滿足業務高并發的入庫和業務分析查詢,TBase使用高性能分區表功能,根據數據量的大小將人群流動數據按照天或者間隔幾天進行分區存放,解決了業務分庫分表的痛點,并且可以進行冷熱數據分離,為海量數據的處理提供了高效的方案。同時,利用TBase智能掃描快速定位數據的位置,減少人群范圍,實現快速定位。另外,TBase采用分布式架構,可根據業務壓力大小靈活擴展計算和存儲資源,在節省成本的同時幫助業務高效穩定運行。
在數據的讀取上,TBase將查詢下推,并行執行用戶SQL,分布式join執行示例如下:
要實現億級數據的秒級返回,最重要的是提高數據節點執行效率,這里就需要提到數據重分布技術。
大家都知道,在分布式執行中通用的技術是數據重分布,數據重分布時容易導致數據節點內部資源使用不平衡,從而影響效率。TBase的數據重分布模型進行了業界獨一無二的優化,該優化利用了CPU多核并行計算能力,增強了對復雜SQL的執行優化,可以減輕生產者負擔,從而大大提高數據重分布時的執行效率和分布式系統中關聯和聚合的效率,輕松實現小程序查詢業務中億級數據的秒級返回。
通過TBase的shard算法可以將數據快速均勻的分布到各個數據節點中,提升檢索效率的同時也解決了單庫的存儲壓力瓶頸問題。
Part Ⅱ 海量數據智能處理分析與建模