1.65亿人次扫码登记的背后,是TBase的秒级返回
本文轉自公眾號:騰訊大數據 繼“一部手機游云南”后,抗疫時期,云南在全省范圍內的公共場所推廣由騰訊云提供技術支持的“云南抗疫情”掃碼系統,實現全體民眾出行掃碼,全面分析預測確診者、疑似者、密切接觸者等重點人群流動情況。
?
截至2月24日,云南省累計有1.65億人次掃碼登記“云南抗疫情”微信小程序,用戶數1325.81萬人。市民使用起來也極其便捷,在進入公眾場所前用微信掃描“入”二維碼,離開時再掃描“出”二維碼,這兩張二維碼就是云南打贏新冠肺炎疫情防控阻擊戰的兩桿槍。
?
如此“簡單”的操作背后下的功夫可不“簡單”。
1. 高效處理急速爆發的億級流量
如果把每天新增億級數據存放在普通單機數據庫里,數據庫的查詢性能會急劇下降,甚至分析能力也會受影響。同時,急速的增長量受空間限制無法長期存儲,即使通過大批量擴容滿足了性能要求,隨之而來的是極高的成本投入。最重要的是,普通單機數據庫數億數據的查詢性能無法滿足秒級返回的需求。
因此業務方迫切需要一款支持PB級,且可以應對高速聯機分析和高并發的事務處理的云上可伸縮的HTAP分布式數據庫系統,經過了微信支付這樣嚴苛業務考驗的騰訊自研國產分布式數據庫——TBase,可以全方位滿足需求。
TBase是騰訊自研的分布式數據庫,可以輕松應對億級數據的存儲、分析和查詢。集高擴展性、高SQL兼容度、完整的分布式事務支持、多級容災能力以及多維度資源隔離等能力于一身,采用無共享的集群架構,適用于PB級海量 HTAP 場景。
騰訊云TBase集群架構圖
?
在云南抗疫小程序中,為滿足業務高并發的入庫和業務分析查詢,TBase使用高性能分區表功能,根據數據量的大小將人群流動數據按照天或者間隔幾天進行分區存放,解決了業務分庫分表的痛點,并且可以進行冷熱數據分離,為海量數據的處理提供了高效的方案。同時,利用TBase智能掃描快速定位數據的位置,減少人群范圍,實現快速定位。另外,TBase采用分布式架構,可根據業務壓力大小靈活擴展計算和存儲資源,在節省成本的同時幫助業務高效穩定運行。
?
在數據的讀取上,TBase將查詢下推,并行執行用戶SQL,分布式join執行示例如下:
要實現億級數據的秒級返回,最重要的是提高數據節點執行效率,這里就需要提到數據重分布技術。
?
大家都知道,在分布式執行中通用的技術是數據重分布,數據重分布時容易導致數據節點內部資源使用不平衡,從而影響效率。TBase的數據重分布模型進行了業界獨一無二的優化,該優化利用了CPU多核并行計算能力,增強了對復雜SQL的執行優化,可以減輕生產者負擔,從而大大提高數據重分布時的執行效率和分布式系統中關聯和聚合的效率,輕松實現小程序查詢業務中億級數據的秒級返回。
?
通過TBase的shard算法可以將數據快速均勻的分布到各個數據節點中,提升檢索效率的同時也解決了單庫的存儲壓力瓶頸問題。
?
2. 海量數據智能處理分析與建模
通過抗疫小程序,在疫情病患恢復期間,一旦發現確診人員就可以快速回溯病患曾經出入過的場所,從而快速找出可能和他有過接觸的人員并及時通過短信、電話等方式向可能接觸者發出提醒,盡最大可能減少交叉傳播的可能性。特別是復工人潮的沖擊下,為確保市民安全防止病毒擴散,需要不間斷的對人群進行流動和回溯分析。
?
在TBase的智能分析與建模能力下,僅需30秒即可實現億級數據量去重。這樣的秒級響應是怎么實現的呢?TBase利用兩個計算特性對海量數據進行分析和關聯:
分布列下推查詢
?
非分布列join
?
在人流不斷進出公共場所時,由于前端在設計表結構并未增加主鍵,存在業務重復掃碼以及誤操作等情況,這將導致一部分數據是重復,但是這些數據依然是有參考價值的,將這些數據用在后續計算模型豐富,但這無疑給模型帶來了不必要的計算。因此我們需要對業務數據進行數據去重操作。利用TBase獨特的node_id和ctid以及業務主鍵屬性進行快速篩選以及去重處理之后,簡化了后續數據建模中產生的不必要中間結果。
根據掃碼數據以及人群的動態軌跡信息,首先根據業務數據量的一些特征分布列設計。比如一些主屬性的唯一特征,利用分布列進行下推查詢,提升分布式的join計算能力。一些無法下推的查詢,將復雜查詢的各部分數據轉化成重分布查詢,利用CPU內存計算優勢提高計算。通過針對業務主屬性快速的分析,合理進行相關表結構設計,快速的將分析結果提供給前端設備進行預警。
?
另外,TBase的多核計算能力也成功將CPU多核并行計算能力、執行SQL能力實現秒級返回,保障了模型的穩定分析能力。
?
在TBase強悍性能的支持下,“云南防抗疫”小程序從接入數據庫到上線僅用了18個小時,有效運用科技化、信息化、大數據的手段,推動疫情防控工作更加高效和精準,進一步降低疫情防控風險。
總結
以上是生活随笔為你收集整理的1.65亿人次扫码登记的背后,是TBase的秒级返回的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kubernetes Ingress 控
- 下一篇: 如何设计一个高可用、高并发秒杀系统