BI系统的分布式部署原理和技术实现
1.什么是分布式
關(guān)于“分布式系統(tǒng)”的定義,我們先看下書中是怎么說的。《分布式系統(tǒng)原理和范型》一書中是這樣定義分布式系統(tǒng)的:“分布式系統(tǒng)是若干獨立計算機的集合,這些計算機對于用戶來說就像是單個相關(guān)系統(tǒng)”。
關(guān)于這個定義,我們直觀的感受就是:
首先,這種系統(tǒng)相對來說很厲害,由好幾臺主機組成。以谷歌、亞馬遜等服務(wù)商而言,他們的數(shù)據(jù)中心都由上萬臺主機支撐起來的。
其次,雖然很它很厲害,但對于外人來說,是感覺不到這些主機的存在。也就是說,我們只看到是一個系統(tǒng)在運作。以最近的“亞馬遜 S3 宕機事件”為例,平時,我們壓根不知道亞馬遜所提供的服務(wù)背后是由多少臺主機組成,但是等到 S3 宕機才知道,這貨已經(jīng)是占了互聯(lián)網(wǎng)世界的半壁江山了。
從進(jìn)程角度看,兩個程序分別運行在兩個臺主機的進(jìn)程上,它們相互協(xié)作最終完成同一個服務(wù)(或者功能),那么理論上這兩個程序所組成的系統(tǒng),也可以稱作是“分布式系統(tǒng)”。
當(dāng)然,這個兩個程序可以是不同的程序,也可以是相同的程序。如果是相同的程序,我們又可以稱之為“集群”。所謂集群,就是將相同的程序,通過不斷橫向擴(kuò)展,來提高服務(wù)能力的方式。
舉一個生活中的例子來說明:
小飯店原來只有一個廚師,切菜洗菜備料炒菜全干。后來客人多了,廚房一個廚師忙不過來,又請了個廚師,兩個廚師都能炒一樣的菜,兩個廚師的關(guān)系是集群。
為了讓廚師專心炒菜,把菜做到極致,再請了個配菜師負(fù)責(zé)切菜,備菜,備料 … , 廚師和配菜師的關(guān)系是分布式。
一個配菜師也忙不過來了,又請了個配菜師,兩個配菜師關(guān)系是集群。
一個配菜師因故請假了,但是其余的配菜師還是該啥就干啥,只是沒請假的配菜師任務(wù)均勻的加量了,但他們的任務(wù)和職責(zé)是不變的,這是集群。
店里生意很好,當(dāng)?shù)觊L接到訂單后,看哪個廚師活兒不重,就將新的訂單分給誰,這就是負(fù)載均衡。
集群:多個人在一起做同樣的事 。
分布式 :多個人在一起做不同的事 。
負(fù)載均衡:決定將任務(wù)以某種規(guī)則分給誰做。
2.為什么使用分布式部署
了解了什么是分布式之后,為什么要使用分布部署呢;
首先分布式部署優(yōu)點很明顯,主要體現(xiàn)在下面4個方面:
系統(tǒng)可用性提升
傳統(tǒng)的集中式計算或集中式存儲在遇見單點故障時很容易造成整個服務(wù)不可用,分布式下的服務(wù)體系,單臺機器有故障,不致于造成整個服務(wù)不可用。
系統(tǒng)并發(fā)能力提升
比如雙 11 活動,平時訂單少 50 臺機器就夠了,到了 11 訂單量劇增,服務(wù)器增加到 100 臺,每臺機器之間相互獨立,互不影響。
系統(tǒng)容錯能力提升
同一組服務(wù)分別部署在北京上海杭州,杭州的機房突發(fā)斷電或者火災(zāi),杭州機房的流量會被自動分發(fā)到北京和上海的機房,不影響用戶使用。
低延遲
參考上一個圖,北京的用戶請求自動分發(fā)到北京,上海的用戶請求被分發(fā)到上海,服務(wù)器會根據(jù)用戶的 IP 選擇距離自己最近的機房,降低網(wǎng)絡(luò)延遲。
同樣分布式部署帶來好處的同時也會有一些缺點,只要是下面3個方面:
分布式服務(wù)依賴網(wǎng)絡(luò)
服務(wù)器間通訊依賴網(wǎng)絡(luò),不可靠網(wǎng)絡(luò)包括網(wǎng)絡(luò)延時,丟包、中斷、異步,一個完整的服務(wù)請求依賴一連串服務(wù)調(diào)用,任意一個服務(wù)節(jié)點網(wǎng)絡(luò)出現(xiàn)問題,都可能造成本次請求失敗。
維護(hù)成本高
傳統(tǒng)單體式服務(wù)只需要維護(hù)一個站點就可以。
分布式服務(wù)系統(tǒng)被拆分成若干個小服務(wù),服務(wù)從 1 變?yōu)閹资畟€上百個服務(wù)后,增加運維成本。
一致性,可用性,分區(qū)容錯性無法同時滿足
這個是最主要的,這三種特性就是平時說的 CAP 定理,在分布式系統(tǒng)中,這三種特性最多只能滿足兩種,無法同時滿足,需要根據(jù)實際情況去調(diào)整犧牲掉其中哪個。
3.BI系統(tǒng)的分布式部署原理和技術(shù)實現(xiàn)
隨著數(shù)據(jù)的爆炸性增長,BI系統(tǒng)需要處理的數(shù)據(jù)越來越多,動輒TB級,甚至PB級,于是服務(wù)器宕機,反應(yīng)遲鈍,查詢緩慢等各種性能問題接踵而來,BI系統(tǒng)的用戶,心里簡直又苦又難~~~
各路BI廠商也意識到這些問題,紛紛推出各種解決方案。
這里提供一種使用分布式部署解決方案。
架構(gòu)圖如下:
那么分布式部署呢,主要是對ReportWorker,CotWorker,DashboardWorker組件進(jìn)行橫向擴(kuò)展,這幾個組件主要是負(fù)責(zé)儀表板和報表運算的組件,可以部署多個以提供系統(tǒng)的計算性能。
為了降低用戶部署成本,提供了在線的遠(yuǎn)程部署方式,UI界面化操作,可以在線添加節(jié)點,遠(yuǎn)程為每個節(jié)點部署需要的組件,以及對節(jié)點組件進(jìn)行在線啟停,進(jìn)一步降低用戶部署成本。
同時也可以在線的運維管理和系統(tǒng)診斷功能,可以查看系統(tǒng)資源消耗,系統(tǒng)日志下載,方便對BI系統(tǒng)進(jìn)行運維管理,降低用戶的運維成本。
大家如果感興趣歡迎訪問各種在線demo,體會BI工具為數(shù)據(jù)可視化帶來的便利:https://www.grapecity.com.cn/solutions/wyn/demo00
總結(jié)
以上是生活随笔為你收集整理的BI系统的分布式部署原理和技术实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django项目--首页静态化
- 下一篇: 关于财务BI系统-报表分析(全)