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