一、分布式系統(tǒng)
隨著互聯(lián)網(wǎng)的高速發(fā)展,業(yè)務規(guī)模和數(shù)據(jù)量的不斷增大鉴分,系統(tǒng)架構也在不斷的演變腿堤。從單機集中式架構到集群部署架構,再到分布式架構,乃至分布式集群。
分布式和集群既能放在一起講,也可以相互獨立砌庄,它們的含義卻是不同。
- 分布式
把一個大任務拆分成多個小的任務(或者說業(yè)務),部署在不同的物理機或者不同的服務娄昆。 - 集群
同一個業(yè)務佩微,部署在不同的服務器上。
比如:一個工作任務需要8個小時才能完成萌焰。
分布式:8臺機器哺眯,把任務分隔,同時跑起來扒俯,1個小時就能完成奶卓。
集群:8臺機器,每個機器都跑相同的任務撼玄,最后完成還是需要8小時夺姑。
下面我們以JavaWeb系統(tǒng)為例,來搭建一個電商平臺系統(tǒng)掌猛,隨著業(yè)務的快速發(fā)展盏浙,以這個系統(tǒng)來更加清晰的觀察系統(tǒng)架構的演變。
假設我們的系統(tǒng)分為下面幾個模塊:
序號 | 模塊 | 功能 |
---|---|---|
1 | 用戶模塊 | 用戶注冊和信息管理 |
2 | 商品模塊 | 商品展示和信息管理 |
3 | 交易模塊 | 交易以及支付結算 |
1荔茬、單機集中式
項目前期废膘,產(chǎn)品知名度不高,訪問量較小的情況下慕蔚,通常會花錢買一臺相對性能不錯的服務器丐黄,將所有的軟件和應用都部署在一臺服務器上,這樣就完成了系統(tǒng)的搭建孔飒。
2灌闺、集群
隨著用戶的增多,訪問量的逐步上升十偶,服務器負載會漸漸提高菩鲜。這時候园细,通常先會把數(shù)據(jù)庫和應用分離惦积,釋放單臺服務器的壓力。但是猛频,在形勢大好的情況下狮崩,產(chǎn)品的知名度越來越高,訪問量也越來越大鹿寻,很快也許單臺應用服務器也承受不住壓力睦柴。這時候,我們就要做集群部署毡熏。
3坦敌、分布式
上面是一個很簡單的集群架構,只是把WEB應用獨立部署,但隨著時間的推移狱窘,數(shù)據(jù)庫壓力早晚也遭不住杜顺。那么,數(shù)據(jù)庫的集群也在所難免蘸炸,當然主從模式下的讀寫分離往往是第一選擇躬络。再往下發(fā)展,根據(jù)業(yè)務特點可以考慮緩存搭儒、搜索引擎穷当、分庫分表...
隨著業(yè)務的發(fā)展,應用的壓力越來越大淹禾,代碼量也越來越龐大馁菜。往往一次小的改動,就要集成發(fā)布很久铃岔,相關聯(lián)的覆蓋測試也難以控制火邓。這時候,就考慮將應用拆分德撬,將核心業(yè)務抽取出來铲咨,作為獨立的服務。每個服務都獨立開發(fā)和部署蜓洪,服務之間采用RPC調(diào)用纤勒、消息隊列、數(shù)據(jù)同步等機制傳輸數(shù)據(jù)隆檀。
我們看到摇天,分布式系統(tǒng)就是一個硬件或軟件組件,分布在不同的網(wǎng)絡計算機上恐仑,彼此之間僅僅通過消息傳遞進行通信和協(xié)調(diào)的系統(tǒng)泉坐。它所有的計算和數(shù)據(jù)傳遞都依靠網(wǎng)絡完成,在大型分布式系統(tǒng)中裳仆,如何同步節(jié)點狀態(tài)腕让、如何保證節(jié)點高可用、如何保證數(shù)據(jù)一致性歧斟、通信異常纯丸、網(wǎng)絡分區(qū)等就是亟需解決的問題。
二静袖、方法論
1觉鼻、CAP理論
分布式系統(tǒng)有三個指標,在2000年的分布式計算原則研討會上队橙,由柏克萊加州大學的計算機科學家埃里克·布魯爾提出坠陈。
英文 | 中文 | 含義 |
---|---|---|
Consistency | 一致性 | 數(shù)據(jù)在分布式環(huán)境下的多個副本之間保持一致性 |
Availability | 可用性 | 分布式系統(tǒng)一直處于可用狀態(tài)萨惑,對于請求總是能在有限的時間內(nèi)返回結果 |
Partition tolerance | 分區(qū)容錯性 | 除非整個網(wǎng)絡故障,分布式系統(tǒng)在任何網(wǎng)絡或者單點故障時仇矾,仍能對外提供滿足一致性和可用性的服務 |
CAP理論:一個分布式系統(tǒng)不可能同時滿足一致性咒钟、可用性和分區(qū)容錯性這三個基本需求,最多只能同時滿足其中的兩項若未;
滿足 | 說明 |
---|---|
滿足AC朱嘴,放棄P | 將數(shù)據(jù)和服務都放在同一節(jié)點,避免因網(wǎng)絡故障引起負面影響粗合,可以保證系統(tǒng)的可用性和一致性 |
滿足PC萍嬉,放棄A | 當節(jié)點故障時,受影響的服務需要等待一定的時間隙疚,在此時間內(nèi)壤追,系統(tǒng)無法正常對外提供服務 |
滿足AP,放棄C | 無法保證數(shù)據(jù)的實時一致性供屉,但最終會保持一致性行冰。 |
2、BASE理論
BASE理論是CAP理論的延伸伶丐,它主要是說悼做,如果無法做到數(shù)據(jù)的強一致性,也可以根據(jù)自己的業(yè)務特點哗魂,采用合適的方式使系統(tǒng)達到最終一致性肛走。
Basically Avaliable 基本可用
當分布式系統(tǒng)出現(xiàn)故障時,允許損失部分可用性录别,保證系統(tǒng)的基本可用朽色。比如雙十一期間的,頁面卡頓组题、服務降級等葫男。Soft State 軟狀態(tài)
允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),既系統(tǒng)的不同節(jié)點的數(shù)據(jù)副本之間的數(shù)據(jù)同步過程存在延時崔列,并認為這種延時不會影響系統(tǒng)可用性梢褐。Eventually consistent 最終一致性
所有的數(shù)據(jù)在經(jīng)過一段時間的數(shù)據(jù)同步后,最終能夠達到一致的狀態(tài)峻呕。