?
騰訊云TBase集群架構(gòu)圖
上圖是TBase的集群架構(gòu)圖:
Coordinator:協(xié)調(diào)節(jié)點(diǎn)(簡(jiǎn)稱CN),對(duì)外提供接口,負(fù)責(zé)數(shù)據(jù)的分發(fā)和查詢規(guī)劃,多個(gè)節(jié)點(diǎn)位置對(duì)等,每個(gè)節(jié)點(diǎn)都提供相同的數(shù)據(jù)庫(kù)視圖;在功能上CN上只存儲(chǔ)系統(tǒng)的全局元數(shù)據(jù),并不存儲(chǔ)實(shí)際的業(yè)務(wù)數(shù)據(jù)。
Datanode:處理存儲(chǔ)本節(jié)點(diǎn)相關(guān)的元數(shù)據(jù),每個(gè)節(jié)點(diǎn)還存儲(chǔ)業(yè)務(wù)數(shù)據(jù)的分片,簡(jiǎn)稱DN。在功能上,DN節(jié)點(diǎn)負(fù)責(zé)完成執(zhí)行協(xié)調(diào)節(jié)點(diǎn)分發(fā)的執(zhí)行請(qǐng)求。
GTM:全局事務(wù)管理器(Global Transaction Manager),負(fù)責(zé)管理集群事務(wù)信息,同時(shí)管理集群的全局對(duì)象,比如序列等。
在這個(gè)架構(gòu)下,TBase集群具有下面幾個(gè)能力:
多活/多主:每個(gè)coordinator提供相同的集群視圖,可以從任何一個(gè)CN進(jìn)行寫入,業(yè)務(wù)無(wú)需感知集群拓?fù)?
讀/寫擴(kuò)展:數(shù)據(jù)被分片存儲(chǔ)在了不同的DN,集群的讀/寫能力,隨著集群規(guī)模的擴(kuò)大做而得到提升;
集群寫一致:業(yè)務(wù)在一個(gè)CN節(jié)點(diǎn)發(fā)生的寫事務(wù)會(huì)一致性的呈現(xiàn)在其他的CN節(jié)點(diǎn),就像這些事務(wù)是本CN節(jié)點(diǎn)發(fā)生的一樣;
集群結(jié)構(gòu)透明:數(shù)據(jù)位于不同的數(shù)據(jù)庫(kù)節(jié)點(diǎn)中,當(dāng)查詢數(shù)據(jù)時(shí),不必關(guān)心數(shù)據(jù)位于具體的節(jié)點(diǎn)。
在云南抗疫小程序中,為滿足業(yè)務(wù)高并發(fā)的入庫(kù)和業(yè)務(wù)分析查詢,TBase使用高性能分區(qū)表功能,根據(jù)數(shù)據(jù)量的大小將人群流動(dòng)數(shù)據(jù)按照天或者間隔幾天進(jìn)行分區(qū)存放,解決了業(yè)務(wù)分庫(kù)分表的痛點(diǎn),并且可以進(jìn)行冷熱數(shù)據(jù)分離,為海量數(shù)據(jù)的處理提供了高效的方案。同時(shí),利用TBase智能掃描快速定位數(shù)據(jù)的位置,減少人群范圍,實(shí)現(xiàn)快速定位。另外,TBase采用分布式架構(gòu),可根據(jù)業(yè)務(wù)壓力大小靈活擴(kuò)展計(jì)算和存儲(chǔ)資源,在節(jié)省成本的同時(shí)幫助業(yè)務(wù)高效穩(wěn)定運(yùn)行。
在數(shù)據(jù)的讀取上,TBase將查詢下推,并行執(zhí)行用戶SQL,分布式j(luò)oin執(zhí)行示例如下:
要實(shí)現(xiàn)億級(jí)數(shù)據(jù)的秒級(jí)返回,最重要的是提高數(shù)據(jù)節(jié)點(diǎn)執(zhí)行效率,這里就需要提到數(shù)據(jù)重分布技術(shù)。
大家都知道,在分布式執(zhí)行中通用的技術(shù)是數(shù)據(jù)重分布,數(shù)據(jù)重分布時(shí)容易導(dǎo)致數(shù)據(jù)節(jié)點(diǎn)內(nèi)部資源使用不平衡,從而影響效率。TBase的數(shù)據(jù)重分布模型進(jìn)行了業(yè)界獨(dú)一無(wú)二的優(yōu)化,該優(yōu)化利用了CPU多核并行計(jì)算能力,增強(qiáng)了對(duì)復(fù)雜SQL的執(zhí)行優(yōu)化,可以減輕生產(chǎn)者負(fù)擔(dān),從而大大提高數(shù)據(jù)重分布時(shí)的執(zhí)行效率和分布式系統(tǒng)中關(guān)聯(lián)和聚合的效率,輕松實(shí)現(xiàn)小程序查詢業(yè)務(wù)中億級(jí)數(shù)據(jù)的秒級(jí)返回。
通過TBase的shard算法可以將數(shù)據(jù)快速均勻的分布到各個(gè)數(shù)據(jù)節(jié)點(diǎn)中,提升檢索效率的同時(shí)也解決了單庫(kù)的存儲(chǔ)壓力瓶頸問題。
Part Ⅱ 海量數(shù)據(jù)智能處理分析與建模
通過抗疫小程序,在疫情病患恢復(fù)期間,一旦發(fā)現(xiàn)確診人員就可以快速回溯病患曾經(jīng)出入過的場(chǎng)所,從而快速找出可能和他有過接觸的人員并及時(shí)通過短信、電話等方式向可能接觸者發(fā)出提醒,盡最大可能減少交叉?zhèn)鞑サ目赡苄浴L貏e是復(fù)工人潮的沖擊下,為確保市民安全防止病毒擴(kuò)散,需要不間斷的對(duì)人群進(jìn)行流動(dòng)和回溯分析。
在TBase的智能分析與建模能力下,僅需30秒即可實(shí)現(xiàn)億級(jí)數(shù)據(jù)量去重。這樣的秒級(jí)響應(yīng)是怎么實(shí)現(xiàn)的呢?TBase利用兩個(gè)計(jì)算特性對(duì)海量數(shù)據(jù)進(jìn)行分析和關(guān)聯(lián):
分布列下推查詢
非分布列join
在人流不斷進(jìn)出公共場(chǎng)所時(shí),由于前端在設(shè)計(jì)表結(jié)構(gòu)并未增加主鍵,存在業(yè)務(wù)重復(fù)掃碼以及誤操作等情況,這將導(dǎo)致一部分?jǐn)?shù)據(jù)是重復(fù),但是這些數(shù)據(jù)依然是有參考價(jià)值的,將這些數(shù)據(jù)用在后續(xù)計(jì)算模型豐富,但這無(wú)疑給模型帶來了不必要的計(jì)算。因此我們需要對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行數(shù)據(jù)去重操作。利用TBase獨(dú)特的node_id和ctid以及業(yè)務(wù)主鍵屬性進(jìn)行快速篩選以及去重處理之后,簡(jiǎn)化了后續(xù)數(shù)據(jù)建模中產(chǎn)生的不必要中間結(jié)果。
根據(jù)掃碼數(shù)據(jù)以及人群的動(dòng)態(tài)軌跡信息,首先根據(jù)業(yè)務(wù)數(shù)據(jù)量的一些特征分布列設(shè)計(jì)。比如一些主屬性的唯一特征,利用分布列進(jìn)行下推查詢,提升分布式的join計(jì)算能力。一些無(wú)法下推的查詢,將復(fù)雜查詢的各部分?jǐn)?shù)據(jù)轉(zhuǎn)化成重分布查詢,利用CPU內(nèi)存計(jì)算優(yōu)勢(shì)提高計(jì)算。通過針對(duì)業(yè)務(wù)主屬性快速的分析,合理進(jìn)行相關(guān)表結(jié)構(gòu)設(shè)計(jì),快速的將分析結(jié)果提供給前端設(shè)備進(jìn)行預(yù)警。
另外,TBase的多核計(jì)算能力也成功將CPU多核并行計(jì)算能力、執(zhí)行SQL能力實(shí)現(xiàn)秒級(jí)返回,保障了模型的穩(wěn)定分析能力。
在TBase強(qiáng)悍性能的支持下,“云南防抗疫”小程序從接入數(shù)據(jù)庫(kù)到上線僅用了18個(gè)小時(shí),有效運(yùn)用科技化、信息化、大數(shù)據(jù)的手段,推動(dòng)疫情防控工作更加高效和精準(zhǔn),進(jìn)一步降低疫情防控風(fēng)險(xiǎn)。