在神策 2021 數(shù)據(jù)驅(qū)動(dòng)大會(huì)北京場(chǎng)技術(shù)論壇上,神策數(shù)據(jù)首席架構(gòu)師張鐸發(fā)表了主題為《神策私有化部署的架構(gòu)演進(jìn)》的演講,本文為精選內(nèi)容。主要包括:
私有化部署的意義
神策私有化部署的演進(jìn)及技術(shù)挑戰(zhàn)
SaaS 化部署的意義及技術(shù)挑戰(zhàn)
SaaS 化的分析云
神策部署模式的未來(lái)
在開始演講前先問(wèn)大家一個(gè)問(wèn)題,作為技術(shù)人員,你愿意選擇幾個(gè)大的 SaaS 集群還是選擇上千個(gè)私有化部署的小集群來(lái)實(shí)現(xiàn)技術(shù)指標(biāo)?
如果是我的話,我會(huì)愿意選大集群,因?yàn)樘魬?zhàn)高并發(fā)、巨大數(shù)據(jù)量會(huì)更有成就感;如果選小集群的話,可能會(huì)遇到很多比大集群更麻煩、更意想不到的問(wèn)題。神策數(shù)據(jù)選擇的就是充滿挑戰(zhàn)的私有化部署。截止目前,神策數(shù)據(jù)每天幫助客戶處理超過(guò) 2500 億行數(shù)據(jù)的導(dǎo)入,數(shù)百萬(wàn)次 SQL 的查詢。
關(guān)注神策數(shù)據(jù)公眾號(hào),回復(fù)“2021演講PPT”即可下載完整版演講PPT。
一、私有化部署的意義
為什么選擇私有化部署?其實(shí)這不是一個(gè)技術(shù)決策,而是業(yè)務(wù)決策。首先,在神策數(shù)據(jù)創(chuàng)業(yè)初期,因企業(yè)知名度及客戶忠誠(chéng)度有待提升,部分客戶對(duì)神策數(shù)據(jù)的 SaaS 模式慎之又慎。因此,私有化部署成為神策數(shù)據(jù)業(yè)務(wù)拓展的必然選擇。其次,私有化部署是符合中國(guó)國(guó)情的選擇。在國(guó)內(nèi)市場(chǎng),部分行業(yè)管制嚴(yán)格,比如以證券、保險(xiǎn)、銀行為代表的金融業(yè),他們的業(yè)務(wù)數(shù)據(jù)幾乎不會(huì)上云。基于以上兩點(diǎn)考量,神策數(shù)據(jù)選擇了私有化部署。
二、神策私有化部署的演進(jìn)及技術(shù)挑戰(zhàn)
神策私有化部署的演進(jìn),總共分為三個(gè)階段。
第一階段:2015-2018 年,單一產(chǎn)品線時(shí)代
這個(gè)階段神策數(shù)據(jù)會(huì)通過(guò)私有化部署來(lái)爭(zhēng)取更多客戶,具體表現(xiàn)為:根據(jù)客戶的現(xiàn)有資源和業(yè)務(wù)需求,針對(duì)性提供產(chǎn)品與服務(wù)支持,對(duì)于一些特定場(chǎng)景的訴求會(huì)盡力去滿足??偨Y(jié)起來(lái),這個(gè)階段雖然我們?cè)跇I(yè)務(wù)上很成功,但在技術(shù)上并非無(wú)可挑剔。
第二階段:2018-2019 年,產(chǎn)品矩陣時(shí)代
隨著業(yè)務(wù)的逐步發(fā)展,神策數(shù)據(jù)的客戶越來(lái)越多,客戶需求也越來(lái)越復(fù)雜,單靠神策分析一個(gè)產(chǎn)品已經(jīng)無(wú)法滿足客戶的所有需求,因此,我們開始打造神策產(chǎn)品矩陣。在私有化部署這件事兒上,我們開始嘗試標(biāo)準(zhǔn)化,也就是將客戶環(huán)境標(biāo)準(zhǔn)化。但在實(shí)際落地時(shí)卻發(fā)現(xiàn)困難重重,客戶環(huán)境不是標(biāo)準(zhǔn)化也很難實(shí)現(xiàn)標(biāo)準(zhǔn)化。為了能夠盡快推動(dòng)交付不影響客戶的業(yè)務(wù)進(jìn)度,我們會(huì)通過(guò)多方案針對(duì)性解決問(wèn)題,但這不可避免地會(huì)增加交付和技術(shù)團(tuán)隊(duì)的工作量。
第三階段:2020 年至今,云操作系統(tǒng)時(shí)代
在吸取了之前的經(jīng)驗(yàn)教訓(xùn)之后,我們總結(jié),標(biāo)準(zhǔn)化是必須要做的,但不能只局限于機(jī)器環(huán)境——在應(yīng)用服務(wù)化方面,通過(guò)抽象的 API 接口,把服務(wù)之間相互依賴的部分標(biāo)準(zhǔn)化。
同時(shí),神策數(shù)據(jù)秉承聲明式的設(shè)計(jì)理念,通過(guò)聲明式資源定義,將外部依賴的資源也進(jìn)行標(biāo)準(zhǔn)化。作為平臺(tái)提供方,神策數(shù)據(jù)讓業(yè)務(wù)線只需要關(guān)心或聲明想要達(dá)到的狀態(tài),而不需要關(guān)心怎么達(dá)到這個(gè)狀態(tài)。
此外,我們把有狀態(tài)服務(wù)和無(wú)狀態(tài)服務(wù)進(jìn)行拆分,用不同的管理系統(tǒng)進(jìn)行分別管理。針對(duì)無(wú)狀態(tài)服務(wù),我們會(huì)進(jìn)行容器化,或者用 K8s 進(jìn)行管理。這個(gè)階段我們需要做到全面標(biāo)準(zhǔn)化,但又要足夠靈活。最終達(dá)到的目的是絕大部分客戶的環(huán)境都成為了“標(biāo)準(zhǔn)”環(huán)境。目前來(lái)看這一套標(biāo)準(zhǔn)化的方案進(jìn)展正常,這為我們后續(xù)服務(wù)更多客戶打下了堅(jiān)實(shí)的基礎(chǔ)。在以上三個(gè)階段的演進(jìn)過(guò)程中,我們也面臨著如下挑戰(zhàn):
挑戰(zhàn)一:支持各種模式的混合部署
針對(duì)客戶的版本、業(yè)務(wù)需求等提供個(gè)性化支持以及各種模式的混合部署。
挑戰(zhàn)二:歷史版本收斂
為避免線上并行多個(gè)版本導(dǎo)致維護(hù)成本急劇增加,需要針對(duì)私有化部署的客戶進(jìn)行歷史版本收斂。神策數(shù)據(jù)通過(guò)訂閱制的付費(fèi)模式,在版本更新后主動(dòng)為客戶進(jìn)行升級(jí)。
挑戰(zhàn)三:小集群 K8s 化的難點(diǎn)
K8s 是業(yè)界通用的資源抽象模式,但是其搭建成本較高,比如控制面至少需要三臺(tái)機(jī)器等。對(duì)此,我們嘗試通過(guò) K3s 來(lái)解決這個(gè)問(wèn)題。對(duì)于已經(jīng)在云上的小規(guī)??蛻?后續(xù)可能采用直接云上托管 K8s 服務(wù)。
挑戰(zhàn)四:內(nèi)存不夠
隨著產(chǎn)品組件越來(lái)越多,功能越來(lái)越復(fù)雜,客戶私有化集群的資源量卻是不變的,因此,內(nèi)存成了私有化部署演進(jìn)過(guò)程中不可忽視的問(wèn)題。針對(duì) Java 程序本身內(nèi)存漲上去難以下降的問(wèn)題,我們自行編譯了 JDK,引入了新的 GC 算法,讓 Java 程序的堆內(nèi)存占用可以在低峰期收縮。
挑戰(zhàn)五:資源受限的情況下查詢優(yōu)化
在資源受限的情況下,如何進(jìn)行查詢優(yōu)化?
首先,我們針對(duì)用戶行為分析場(chǎng)景進(jìn)行定向優(yōu)化。
(1)用戶行為分析數(shù)據(jù)本身是有序的,通過(guò)重寫 SQL,我們將 join 全排序變?yōu)闅w并排序,這是我們做的第一個(gè)優(yōu)化。
(2)為了避免某些場(chǎng)景中的無(wú)效用戶量增加,我們采用兩種解決方案,一是客戶在數(shù)據(jù)治理上清理重復(fù)數(shù)據(jù);二是在查詢方面記錄用戶最后的活躍時(shí)間,直接過(guò)濾掉不活躍用戶,避免過(guò)多數(shù)據(jù)的干擾。
(3)外連接消除。當(dāng)用戶上報(bào)和增加限制條件后的實(shí)際連接不一致時(shí),我們會(huì)依據(jù)實(shí)際連接進(jìn)行計(jì)算,有效節(jié)省資源。
(4)高基數(shù)分組優(yōu)化。對(duì)于數(shù)據(jù)量級(jí)較大但看數(shù)需求穩(wěn)定在 Top1000左右的客戶,我們會(huì)將提取 Top1000 的操作放到內(nèi)層,提前把不需要的數(shù)據(jù)過(guò)濾掉。其次,我們還會(huì)做查詢資源預(yù)估。在資源不夠時(shí),針對(duì)并行的多個(gè)查詢?nèi)蝿?wù),將其按照順序依次進(jìn)行;同時(shí)基于歷史資源消耗進(jìn)行預(yù)估,客戶使用頻次越高,估算越準(zhǔn)確。最后,我們還做了神策數(shù)倉(cāng)負(fù)載管理平臺(tái),幫助客戶清楚地了解內(nèi)部資源是如何消耗的,查詢使用是否合理等。
挑戰(zhàn)六:各種意想不到的問(wèn)題
在私有化部署過(guò)程中,還會(huì)遇到各種意想不到的問(wèn)題。比如遇到客戶機(jī)房著火導(dǎo)致機(jī)房中大部分機(jī)器物理?yè)p壞,我們需要從僅有的一臺(tái)機(jī)器上搶救數(shù)據(jù);或者遇到客戶機(jī)房所有機(jī)器一起瞬間斷電,導(dǎo)致數(shù)據(jù)損壞丟失等。諸如此類的問(wèn)題,都需要我們?cè)谧鱿到y(tǒng)時(shí)考慮到。
關(guān)注神策數(shù)據(jù)公眾號(hào),回復(fù)“2021演講PPT”即可下載完整版演講PPT。
三、SaaS 部署的意義及技術(shù)挑戰(zhàn)
私有化部署的主要局限點(diǎn)在于 SLA 無(wú)法做到很高。因?yàn)樗接谢渴鸬臋C(jī)器都部署在客戶環(huán)境中,系統(tǒng)一旦出現(xiàn)問(wèn)題,光是連接到客戶的環(huán)境都需要耗費(fèi)不少時(shí)間,再加上諸如安全性等種種限制,排查問(wèn)題耗時(shí)較久。另外,因?yàn)榭蛻舡h(huán)境本身是物理斷網(wǎng)的,必須派人去現(xiàn)場(chǎng)勘察,恢復(fù)時(shí)間較長(zhǎng),如此種種原因?qū)е?SLA 不能達(dá)到特別高。
那為什么神策分析云使用私有化部署時(shí)能夠成功,客戶能夠接受?這是因?yàn)樯癫叻治鲈剖且粋€(gè)旁路系統(tǒng),且是離線場(chǎng)景,不會(huì)直接影響到客戶的業(yè)務(wù)。而神策營(yíng)銷云則不同,營(yíng)銷云是一個(gè)業(yè)務(wù)系統(tǒng),這意味著對(duì) SLA 要求很高,一旦營(yíng)銷活動(dòng)出現(xiàn)問(wèn)題將會(huì)直接影響客戶經(jīng)營(yíng),這種情況下 SaaS 化就成了神策營(yíng)銷云的優(yōu)先選擇。同樣地,SaaS 化部署也會(huì)迎來(lái)新的技術(shù)挑戰(zhàn)。除了大家比較常見的 SaaS 集群要多租戶之類,還面臨著兩個(gè)特殊的挑戰(zhàn):第一個(gè)就是營(yíng)銷云 SaaS 化,但分析云依然是私有化部署,而營(yíng)銷云需要用到分析云里面的數(shù)據(jù),這時(shí)該如何做?針對(duì)這個(gè)問(wèn)題,神策數(shù)據(jù)開發(fā)了一條私有端到 SaaS 端的數(shù)據(jù)通路,保證營(yíng)銷云可以利用分析云的數(shù)據(jù)進(jìn)行營(yíng)銷觸達(dá)。關(guān)于安全性我們也有特別的考慮:一方面,這個(gè)通道是加密的,保證安全不會(huì)泄露;另一方面,該通道具體傳了什么樣的數(shù)據(jù)都是可以追蹤的。此外,即便是結(jié)果數(shù)據(jù),也只是暫存而不是長(zhǎng)期儲(chǔ)存在 SaaS 端。
第二個(gè)挑戰(zhàn)是對(duì)于那些因?yàn)檎甙踩仍?仍然會(huì)選擇私有化部署營(yíng)銷云的客戶,這種情況如何處理呢?我們采用了一套代碼和架構(gòu),多種部署模式的思路,也就是將神策數(shù)據(jù)整個(gè)通用的部署架構(gòu)抽象成各種各樣的組件,有的是私有化部署和 SaaS 共享的組件,有的則是兩者分別特有的。
關(guān)注神策數(shù)據(jù)公眾號(hào),回復(fù)“2021演講PPT”即可下載完整版演講PPT。
四、SaaS 化的分析云
我們可以看到,相較于私有化部署,SaaS 化有以下優(yōu)勢(shì):
1、通過(guò)固定的機(jī)器進(jìn)行成本分?jǐn)?對(duì)于中小客戶來(lái)說(shuō)成本將顯著降低。
2、利用云上的分層存儲(chǔ),只緩存熱數(shù)據(jù),可以降低存儲(chǔ)成本。
3、SaaS 理論上可以保證更高的 SLA,前面也提到,這也是為什么營(yíng)銷云必須要 SaaS 化。
五、神策部署模式的未來(lái)
關(guān)于神策部署模式的未來(lái),主要有以下四點(diǎn):
第一,神策數(shù)據(jù)未來(lái)的部署模式將是私有化和 SaaS 并存的狀態(tài)。
第二,為了降低維護(hù)成本,我們將堅(jiān)持一套代碼和架構(gòu)、多種部署實(shí)現(xiàn)的方式。
第三,我們會(huì)從客戶實(shí)際需求出發(fā),根據(jù)客戶的實(shí)際情況選擇最適合的部署方式。
第四,回到神策數(shù)據(jù)的價(jià)值觀——為客戶帶來(lái)價(jià)值,不管技術(shù)上進(jìn)行什么樣的突破和改變,我們最終都是為了更好地為客戶帶來(lái)價(jià)值。
關(guān)注神策數(shù)據(jù)公眾號(hào),回復(fù)“2021演講PPT”即可下載完整版演講PPT。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )