海量數(shù)據(jù)運(yùn)維要給力,華為云GaussDB(for Cassandra)來助力
應(yīng)用運(yùn)維管理平臺(tái)(AOM)和Cassandra是兩個(gè)不可分割的組成部分,它們共同構(gòu)成了一個(gè)高效的解決方案,可以幫助企業(yè)在應(yīng)用運(yùn)維業(yè)務(wù)上取得巨大的優(yōu)勢。在這篇文章中,我們將介紹AOM和Cassandra的優(yōu)勢和特點(diǎn),揭曉它們?nèi)绾螢槠髽I(yè)保持市場競爭力的秘密。
導(dǎo)讀
隨著容器技術(shù)的普及,越來越多的企業(yè)通過微服務(wù)框架開發(fā)應(yīng)用,業(yè)務(wù)逐漸轉(zhuǎn)變?yōu)樵粕蠈?shí)現(xiàn)服務(wù),運(yùn)維也逐漸轉(zhuǎn)向云上運(yùn)維服務(wù)。在此環(huán)境下,云上應(yīng)用的運(yùn)維也遭遇了新的挑戰(zhàn):
1. 運(yùn)維人員技能要求高,需要同時(shí)維護(hù)多套系統(tǒng),配置繁雜。分布式追蹤系統(tǒng)的學(xué)習(xí)和使用成本高,穩(wěn)定性差,性價(jià)比低。
2. 云化場景下的分布式應(yīng)用問題分析困難,主要表現(xiàn)在如何可視化微服務(wù)間的依賴關(guān)系,如何提高應(yīng)用性能體驗(yàn),如何將散落的日志進(jìn)行關(guān)聯(lián)分析,以及如何快速追蹤問題。
針對以上挑戰(zhàn),AOM應(yīng)運(yùn)而生。
AOM是什么
AOM是由華為云研發(fā)的云上應(yīng)用一站式立體化運(yùn)維管理平臺(tái),由應(yīng)用資源管理、監(jiān)控中心(可觀測性分析)、自動(dòng)化運(yùn)維、采集管理四個(gè)子服務(wù)構(gòu)成,提供一站式可觀測性分析和自動(dòng)化運(yùn)維方案,支持快速從云端和本地采集指標(biāo)、日志和性能等數(shù)據(jù),幫助用戶及時(shí)發(fā)現(xiàn)故障,全面掌握應(yīng)用、資源及業(yè)務(wù)的實(shí)時(shí)運(yùn)行狀況,提升企業(yè)海量數(shù)據(jù)運(yùn)維的自動(dòng)化能力和效率。
AOM優(yōu)勢眾多,功能強(qiáng)大,其背后離不開支撐其海量數(shù)據(jù)運(yùn)轉(zhuǎn)的智能數(shù)據(jù)底座——華為云GaussDB(for Cassandra)。
為什么選擇GaussDB(for Cassandra)?
華為云GaussDB(for Cassandra)是一款兼容Cassandra生態(tài)的云原生NoSQL數(shù)據(jù)庫,支持類SQL語法CQL。在華為云高性能、高可用、高可靠、高安全、可彈性伸縮的基礎(chǔ)上,提供了一鍵部署、快速備份恢復(fù)、計(jì)算存儲(chǔ)獨(dú)立擴(kuò)容、監(jiān)控告警等服務(wù)能力,尤其適用于各種海量數(shù)據(jù)處理和高并發(fā)業(yè)務(wù)場景。
l出現(xiàn)數(shù)據(jù)熱點(diǎn)的業(yè)務(wù)。例如:某新聞時(shí)事APP需要管理大量新聞時(shí)事數(shù)據(jù),當(dāng)出現(xiàn)社會(huì)熱點(diǎn)事件時(shí),相關(guān)新聞數(shù)據(jù)請求量急劇升高,此時(shí)需要保障APP正常運(yùn)作,以及保持請求成功率穩(wěn)定。
l需要對時(shí)序數(shù)據(jù)建模的業(yè)務(wù)。例如:某氣象站需要每分鐘采集一次溫度,并存儲(chǔ)該次采集結(jié)果,同時(shí)需要保障數(shù)據(jù)的時(shí)效性,自動(dòng)刪除過期數(shù)據(jù)。
l需要對會(huì)話消息數(shù)據(jù)建模的業(yè)務(wù)。例如:某社交APP需要存儲(chǔ)大量的用戶及會(huì)話消息,需要保障用戶在不同會(huì)話消息間切換時(shí)耗時(shí)低、成功率高、響應(yīng)時(shí)間短。
l需要高速處理數(shù)據(jù)的業(yè)務(wù)。例如:某業(yè)務(wù)需要迅速處理來自不同設(shè)備或傳感器的數(shù)據(jù)。
l需要實(shí)時(shí)監(jiān)測數(shù)據(jù)的業(yè)務(wù)。例如:某運(yùn)維平臺(tái)需要實(shí)時(shí)監(jiān)測不同維度的數(shù)據(jù),準(zhǔn)確采集指標(biāo),快速完成運(yùn)維。
l需要使用社交媒體分析和推薦引擎的業(yè)務(wù)。例如:某電商APP需要分析用戶喜好商品,基于用戶喜好實(shí)現(xiàn)商品推薦,提升用戶體驗(yàn)和產(chǎn)品競爭力。
l……
此外,華為云GaussDB(for Cassandra)特性豐富,適用于廣泛業(yè)務(wù)場景。
l大數(shù)據(jù)應(yīng)用:GaussDB(for Cassandra)可以處理海量數(shù)據(jù),支持高吞吐量和低延遲的讀寫操作,因此適合大數(shù)據(jù)應(yīng)用場景。
l互聯(lián)網(wǎng)應(yīng)用:GaussDB(for Cassandra)可以處理高并發(fā)的讀寫請求,支持多數(shù)據(jù)中心部署,因此適合互聯(lián)網(wǎng)應(yīng)用場景。
l時(shí)間序列數(shù)據(jù):GaussDB(for Cassandra)支持時(shí)間序列數(shù)據(jù)的存儲(chǔ)和查詢,因此適合需要存儲(chǔ)和查詢時(shí)間序列數(shù)據(jù)的應(yīng)用場景,如物聯(lián)網(wǎng)、日志分析等。
l高可用性業(yè)務(wù)。GaussDB(for Cassandra)采用多副本復(fù)制的方式來保證數(shù)據(jù)的可用性和可靠性。當(dāng)一個(gè)節(jié)點(diǎn)出現(xiàn)故障時(shí),系統(tǒng)可以自動(dòng)將數(shù)據(jù)從其他節(jié)點(diǎn)中恢復(fù),從而保證數(shù)據(jù)的完整性和一致性。
l可伸縮性業(yè)務(wù)。GaussDB(for Cassandra)可以輕松地?cái)U(kuò)展到數(shù)百個(gè)節(jié)點(diǎn),處理PB級別的數(shù)據(jù)集,同時(shí)還支持動(dòng)態(tài)添加和刪除節(jié)點(diǎn),可以根據(jù)實(shí)際需求靈活地調(diào)整系統(tǒng)的規(guī)模和性能。
l分布式存儲(chǔ)應(yīng)用。GaussDB(for Cassandra)采用分布式存儲(chǔ)的方式,將數(shù)據(jù)分散存儲(chǔ)在多個(gè)節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)都可以獨(dú)立地處理讀寫請求。這種方式可以有效地提高數(shù)據(jù)的可用性和可靠性,同時(shí)也可以提高系統(tǒng)的吞吐量和擴(kuò)展性。
l分布式查詢應(yīng)用:GaussDB(for Cassandra)支持分布式查詢,可以將查詢請求分發(fā)到多個(gè)節(jié)點(diǎn)上并行處理,從而提高查詢的效率和響應(yīng)速度。
l……
綜上所述,GaussDB(for Cassandra)非常適合大數(shù)據(jù)分析、實(shí)時(shí)數(shù)據(jù)處理、社交網(wǎng)絡(luò)、物聯(lián)網(wǎng)、分布式存儲(chǔ)和查詢等應(yīng)用場景。
真實(shí)場景解讀——數(shù)據(jù)熱點(diǎn)問題
AOM功能強(qiáng)大,涉及多種典型業(yè)務(wù)場景,如數(shù)據(jù)熱點(diǎn)、時(shí)序數(shù)據(jù)、實(shí)時(shí)監(jiān)測等,因此選擇GaussDB(for Cassandra)作為底層數(shù)據(jù)支撐引擎。接下來就數(shù)據(jù)熱點(diǎn)問題作為切入點(diǎn),揭秘GaussDB(for Cassandra)如何保障AOM在發(fā)生數(shù)據(jù)熱點(diǎn)時(shí)穩(wěn)定運(yùn)行。
場景復(fù)現(xiàn):
監(jiān)控運(yùn)維海量數(shù)據(jù)時(shí),表中特定數(shù)據(jù)訪問頻率驟升,部分分區(qū)產(chǎn)生熱點(diǎn)流量。表中主鍵設(shè)置不合理,某個(gè)分區(qū)下的業(yè)務(wù)量驟增,流量沖擊會(huì)集中在一個(gè)分區(qū)上,導(dǎo)致該分區(qū)對應(yīng)的token所在節(jié)點(diǎn)的CPU持續(xù)居高不下。
問題根因:
GaussDB(for Cassandra)是一個(gè)面向大數(shù)據(jù)場景的高度可擴(kuò)展的高性能分布式數(shù)據(jù)庫,可用于管理海量的結(jié)構(gòu)化數(shù)據(jù)。在業(yè)務(wù)使用的過程中,隨著業(yè)務(wù)量和數(shù)據(jù)流量的持續(xù)增長,一些業(yè)務(wù)的設(shè)計(jì)弊端逐漸暴露出來,降低了集群的穩(wěn)定性和可用性。例如主鍵設(shè)計(jì)不合理、單個(gè)分區(qū)的記錄數(shù)或數(shù)據(jù)量過大、出現(xiàn)超大分區(qū)鍵等問題,導(dǎo)致了節(jié)點(diǎn)負(fù)載不均衡、集群穩(wěn)定性下降等現(xiàn)象,這一類問題統(tǒng)稱為大key問題。產(chǎn)生大key的最主要原因是主鍵設(shè)計(jì)不合理,導(dǎo)致單個(gè)分區(qū)的記錄數(shù)或數(shù)據(jù)量過大。一旦某個(gè)分區(qū)存在海量數(shù)據(jù)時(shí),對該分區(qū)的訪問會(huì)導(dǎo)致分區(qū)所在server的負(fù)載變高,嚴(yán)重時(shí)甚至會(huì)導(dǎo)致節(jié)點(diǎn)OOM等后果。
在日常生活中,經(jīng)常會(huì)發(fā)生各種熱門事件,例如應(yīng)用中對某熱點(diǎn)新聞進(jìn)行上萬次的點(diǎn)擊瀏覽和評論時(shí),會(huì)形成一個(gè)較大的請求量,這種情況下會(huì)在短時(shí)間內(nèi)對同一個(gè)key頻繁操作,導(dǎo)致該key所在節(jié)點(diǎn)的CPU負(fù)載飆高,從而影響該節(jié)點(diǎn)上的其他請求,導(dǎo)致業(yè)務(wù)成功率下降。諸如此類的還有熱門商品促銷,網(wǎng)紅直播等場景,這些典型的讀多寫少的場景也會(huì)產(chǎn)生數(shù)據(jù)熱點(diǎn)問題。當(dāng)某個(gè)key的請求在某一主機(jī)上的訪問超過server極限時(shí),會(huì)導(dǎo)致熱key問題的產(chǎn)生。大key往往是熱key問題的間接原因。熱key會(huì)造成以下危害:流量集中,達(dá)到物理網(wǎng)卡上限;請求過多,緩存分片服務(wù)被擊垮;數(shù)據(jù)庫擊穿,引起業(yè)務(wù)雪崩等。
在上述場景中,主要是表中主鍵結(jié)構(gòu)不合理,從而導(dǎo)致大key和熱key的產(chǎn)生,表結(jié)構(gòu)如下所示。movie表保存了短視頻的相關(guān)信息,分區(qū)鍵為movieid,并且保存了用戶信息(uid)。如果movieid對應(yīng)的視頻是一個(gè)熱門短視頻,有幾千萬甚至上億用戶點(diǎn)贊此短視頻,則該熱門短視頻所在的分區(qū)非常大。
CREATE TABLE movie (
movieid text,
appid int,
uid bigint,
accessstring text,
moviename text,
access_time timestamp,
PRIMARY KEY (movieid, appid, uid, accessstring, moviename)
)
解決方案:
l調(diào)整表結(jié)構(gòu)。GaussDB(for Cassandra)與其他數(shù)據(jù)庫相比,具有更加靈活的數(shù)據(jù)結(jié)構(gòu),支持主鍵和分區(qū)鍵的靈活設(shè)置,通過合理設(shè)置主鍵和分區(qū)鍵,調(diào)整表結(jié)構(gòu)與查詢語句,對表中數(shù)據(jù)進(jìn)行劃分,能夠有效優(yōu)化查詢速度,提升運(yùn)維效率。在上述場景中,movie表的主鍵設(shè)置不合理,查詢數(shù)據(jù)量十分龐大,耗時(shí)久。創(chuàng)建新表為如下所示表結(jié)構(gòu)時(shí),表中數(shù)據(jù)量顯著減少。新表用于保存熱門短視頻信息,只保留短視頻公共信息,不包含用戶信息,確保該表不會(huì)產(chǎn)生大的分區(qū)鍵。
CREATE TABLE hotmovieaccess (
movieid text,
appid int,
accessstring text,
access time timestamp,
PRIMARY KEY (movieid, appid)
)
l使用緩存。緩存可以提高讀操作的響應(yīng)性,需要使用額外的內(nèi)存來存儲(chǔ)數(shù)據(jù),從而盡可能減少必須完成的磁盤讀。隨著緩存大小的增加,可以從內(nèi)存提供服務(wù)的“命中”數(shù)也會(huì)增加。GaussDB(for Cassandra)內(nèi)置的緩存包括鍵緩存和行緩存等類型。鍵緩存存儲(chǔ)了分區(qū)鍵與行索引之間的一個(gè)映射,以便于更快地訪問存儲(chǔ)在磁盤上的SSTable;行緩存可以為每個(gè)分區(qū)緩存一定的行,提高頻繁訪問的行的讀取速度。
在上述場景中,可以使用緩存來緩解流量沖擊。業(yè)務(wù)應(yīng)用先從緩存中讀取熱點(diǎn)信息,沒有查詢到則從數(shù)據(jù)庫中查詢,減少數(shù)據(jù)庫查詢次數(shù)。整體邏輯流程如下所示。
數(shù)據(jù)熱點(diǎn)檢測工具:
數(shù)據(jù)熱點(diǎn)會(huì)給業(yè)務(wù)帶來壓力,影響業(yè)務(wù)正常運(yùn)行。出現(xiàn)數(shù)據(jù)熱點(diǎn)后再去解決為時(shí)已晚,因此需要預(yù)知數(shù)據(jù)熱點(diǎn)問題,提前設(shè)計(jì)解決方法,保證業(yè)務(wù)正常運(yùn)行。為此,GaussDB(for Cassandra)為業(yè)務(wù)提供了大key和熱key的檢測和預(yù)警工具。
l大key檢測。通過大規(guī)模業(yè)務(wù)觀察學(xué)習(xí),GaussDB(for Cassandra)定義超過以下任意閾值的key即為大key:1. 單個(gè)分區(qū)鍵的行數(shù)不能超過10萬行;2. 單個(gè)分區(qū)的大小不超過100MB。
l熱key檢測。通過大規(guī)模業(yè)務(wù)觀察學(xué)習(xí),GaussDB(for Cassandra)定義訪問頻率大于100000次/min的key即為熱key。
GaussDB(for Cassandra)支持大key和熱key的檢測和告警工具,客戶可根據(jù)實(shí)際業(yè)務(wù)需求,在產(chǎn)品界面配置實(shí)例的大key和熱key告警。同時(shí),在發(fā)生大key和熱key事件時(shí),系統(tǒng)會(huì)第一時(shí)間發(fā)送預(yù)警通知,客戶可在產(chǎn)品界面查看監(jiān)控事件數(shù)據(jù),及時(shí)處理相關(guān)告警,避免業(yè)務(wù)波動(dòng)。
總結(jié):
針對數(shù)據(jù)熱點(diǎn)問題,GaussDB(for Cassandra) 提供了大key和熱key的實(shí)時(shí)檢測,以幫助業(yè)務(wù)進(jìn)行合理的方案設(shè)計(jì),規(guī)避業(yè)務(wù)穩(wěn)定性風(fēng)險(xiǎn);提供了大key和熱key的實(shí)時(shí)監(jiān)控,確保第一時(shí)間感知業(yè)務(wù)風(fēng)險(xiǎn);提供了大key和熱key的解決方案,在面對大數(shù)據(jù)量洪峰場景時(shí),增強(qiáng)了集群的穩(wěn)定性與可用性,為客戶業(yè)務(wù)持續(xù)穩(wěn)定運(yùn)行保駕護(hù)航。
綜上所述,在線業(yè)務(wù)在使用GaussDB(for Cassandra)時(shí),必須執(zhí)行相關(guān)的開發(fā)規(guī)則和使用規(guī)范,在開發(fā)設(shè)計(jì)階段就降低使用風(fēng)險(xiǎn)。一般按照“制定規(guī)范”→“接入評審”→“定期巡檢”→“優(yōu)化規(guī)則”的治理流程進(jìn)行。合理的設(shè)計(jì)一般會(huì)降低大部分風(fēng)險(xiǎn)發(fā)生的概率,對于業(yè)務(wù)來說,任何表的設(shè)計(jì)都要考慮是否會(huì)導(dǎo)致大key和熱key的產(chǎn)生、是否會(huì)造成負(fù)載傾斜的問題。另外需要建立數(shù)據(jù)老化機(jī)制,表中的數(shù)據(jù)不能無限制的增長而不刪除或者老化。針對讀多寫少的場景,要增加緩存機(jī)制,來應(yīng)對讀熱點(diǎn)問題,提升查詢性能;針對每個(gè)分區(qū)鍵以及每行數(shù)據(jù),要控制其大小,超出限制后要及時(shí)優(yōu)化,否則將影響性能和穩(wěn)定性。
結(jié)論
AOM和GaussDB(for Cassandra)的組合成功打造了一套高效、可擴(kuò)展、高性能、靈活和可定制的海量數(shù)據(jù)監(jiān)控運(yùn)維平臺(tái),可以幫助企業(yè)更好地管理和利用監(jiān)控?cái)?shù)據(jù),提高運(yùn)維效率,助力企業(yè)在不斷變化的市場環(huán)境中保持競爭優(yōu)勢。