什么是分布式系統(tǒng)“分布式系統(tǒng)就是若干的獨(dú)立的計(jì)算機(jī)的集合,而這些計(jì)算機(jī)對(duì)于用戶來講就是單個(gè)計(jì)算機(jī)系統(tǒng)” 這其中有兩個(gè)比較關(guān)鍵的點(diǎn) 那么什么是硬件獨(dú)立呢?硬件獨(dú)立是指機(jī)器本身的獨(dú)立。一個(gè)大型的分布式系統(tǒng),是由若干的計(jì)算機(jī)組成。而軟件統(tǒng)一,是指對(duì)于用戶來講,在面對(duì)這些機(jī)器的時(shí)候就像是面對(duì)著一個(gè)系統(tǒng)一樣。就好比我們現(xiàn)在經(jīng)常用到的各地的健康碼系統(tǒng),對(duì)于每個(gè)人來講,健康碼系統(tǒng)就是一個(gè)系統(tǒng),至于它背后是如何運(yùn)作的、部署了幾臺(tái)服務(wù)器、每臺(tái)服務(wù)器都是干什么的,這些對(duì)于用戶來講都是不需要關(guān)心的。用戶只關(guān)心健康碼能不能用。 另外,軟件的統(tǒng)一是指分布式系統(tǒng)的擴(kuò)展和升級(jí)都比較容易,分布式系統(tǒng)中的某些節(jié)點(diǎn)發(fā)生故障的時(shí)候并不會(huì)影響整體系統(tǒng)的可用性。用戶和應(yīng)用程序交互的時(shí)候,用戶會(huì)感覺到某個(gè)節(jié)點(diǎn)的錯(cuò)誤。 集中式系統(tǒng)與分布式系統(tǒng)集中式系統(tǒng)主要是指一些部署在HP、IBM等小型機(jī)器上的服務(wù)器中的系統(tǒng)。其將所有的功能都部署到一個(gè)主服務(wù)器上。這個(gè)系統(tǒng)有一個(gè)特點(diǎn)就是宕機(jī)率很低。這種系統(tǒng)主要用在一些政府類、企業(yè)類部門。 這種集中式系統(tǒng)主要流行于20世紀(jì),現(xiàn)在有些企業(yè)或者是政府部門使用的這種系統(tǒng)都是沿用原來的軟件。這種系統(tǒng)最大的特點(diǎn)就是便于維護(hù)、操作簡單。但這種系統(tǒng)有個(gè)最大的問題就是不出問題還好,一出問題就會(huì)造成很大的故障。所有的功能都不能用了。另外這種集中式的系統(tǒng)相關(guān)的技術(shù)體系都是被少數(shù)廠商掌握在手中。這或許也是阿里為什么要去IOE的原因,就是不想依賴與HP、IBM等一些國外的企業(yè)。 分布式系統(tǒng)則通過中間件技術(shù)對(duì)現(xiàn)有的計(jì)算機(jī)的硬件能力和軟件能力進(jìn)行重新的資源整合。是一種多處理器的計(jì)算機(jī)系統(tǒng),各處理器通過網(wǎng)絡(luò)構(gòu)成了統(tǒng)一的系統(tǒng)。系統(tǒng)采用分布式計(jì)算架構(gòu)。將原來的中央處理器處理的任務(wù)分給各個(gè)對(duì)應(yīng)的處理器進(jìn)行處理。實(shí)現(xiàn)不同功能不同的處理器處理,這些處理器之間相互協(xié)調(diào),共享系統(tǒng)資源,加快了系統(tǒng)的處理時(shí)間和處理速度,同樣簡化了主機(jī)的處理邏輯。如圖所示。 如何設(shè)計(jì)分布式系統(tǒng)?設(shè)計(jì)分布式系統(tǒng),其本質(zhì)工作就是以一種合理的方式將大的系統(tǒng)拆分成小的系統(tǒng),并且部署到不同的機(jī)器上。所以這樣做第一個(gè)需要解決的問題就是如何進(jìn)行系統(tǒng)拆分。因?yàn)槭菍⒁粋€(gè)大系統(tǒng)進(jìn)行拆分,所以說各個(gè)子系統(tǒng)是不可能獨(dú)立存在的,勢必要通過網(wǎng)絡(luò)的方式進(jìn)行交互。所以這些系統(tǒng)之間的交互就變得尤為重要。既然要進(jìn)行子系統(tǒng)的交互那么就需要這些子系統(tǒng)之間能相互識(shí)別。這樣可以防止信息被攔截,信息被篡改等問題。既然需要進(jìn)行系統(tǒng)拆分,那么不得不考慮的一點(diǎn)就是系統(tǒng)的擴(kuò)展性問題。概括起來就是如下一些問題。 - 如何將系統(tǒng)拆分成子系統(tǒng)?
- 如何規(guī)劃子系統(tǒng)之間的通信?
- 如何考慮通信過程中的安全問題?
- 如何進(jìn)行系統(tǒng)擴(kuò)展
- 如何高正高可用?
- 如何保證數(shù)據(jù)一致性?
分布式系統(tǒng)面臨的挑戰(zhàn)分布式系統(tǒng)最難的點(diǎn)就是如何進(jìn)行設(shè)計(jì)?設(shè)計(jì)好之后如何進(jìn)行實(shí)施?實(shí)施之后如何進(jìn)行管理。因?yàn)橐氡姸鄼C(jī)器,所以造成的系統(tǒng)復(fù)雜性提升。使得遇到一個(gè)問題之后,問題的查找就成了最大的問題。另外就是如何保證高可用? - 差異性:由于分布式系統(tǒng)是基于不同的OS環(huán)境、不同的網(wǎng)絡(luò)環(huán)境、不同的編程語言所構(gòu)建的,所以就必須用一種統(tǒng)一的協(xié)議將其聯(lián)通起來,不然做分布式系統(tǒng)也就沒有意義了。一般就通過中間件技術(shù)來處理系統(tǒng)差異。
- 一致性:在分布式系統(tǒng)中,數(shù)據(jù)被拆分到不同的機(jī)器上進(jìn)行處理,那么如何保證各個(gè)機(jī)器之間的數(shù)據(jù)一致性就成了分布式系統(tǒng)最大的問題。
- 故障的獨(dú)立性:這個(gè)有點(diǎn)類似于分區(qū)容錯(cuò),在整個(gè)的分布式系統(tǒng)的所有部分都有可能發(fā)生故障,一般來講,分布式系統(tǒng)是允許出現(xiàn)故障的,但是出現(xiàn)故障之后不能影響整個(gè)系統(tǒng)的正常使用。
- 并發(fā)問題:由于分布式系統(tǒng)各個(gè)系統(tǒng)之間的資源是共享的,所以說每個(gè)系統(tǒng)的資源都必須在并發(fā)環(huán)境下是安全的。不會(huì)出現(xiàn)線程安全問題。
- 不可見性:分布式系統(tǒng)中任何組件的故障、或者是升級(jí)操作,對(duì)于用戶來講都是不可見的。
- 開放性:由于分布式系統(tǒng)是由不同的程序員來開發(fā),組件最終要集成到一個(gè)大的系統(tǒng)中,所以組件的發(fā)布規(guī)范、接口規(guī)范都必須是相互之間能夠被理解的。
- 安全性:對(duì)于共享資源進(jìn)行加密保護(hù),在網(wǎng)絡(luò)之間傳遞的信息都需要進(jìn)行加密保護(hù)。
- 可擴(kuò)展性:分布式系統(tǒng)的設(shè)計(jì)要預(yù)留對(duì)于功能、業(yè)務(wù)邏輯的擴(kuò)展內(nèi)容。
|