當前位置:編程學習大全網 - 行動軟體 - 什麽是分布式處理系統

什麽是分布式處理系統

分布式——壹個高大上的名詞,是計算機軟件設計中人民群眾喜聞樂見的“逼格滿滿”、“不明覺厲”的幾個名詞之壹。但很可惜,這玩意兒壹點也不復雜,甚至有些“簡單”。不信?妳只要遵循下述步驟即可將任何壹個軟件拆分為“分布式”的:

將妳的整個軟件視為壹個系統(不管它有多復雜)

將整個系統分割為壹系列的 Process(進程), 每個 Process 完成壹定的功能

將這些 Process 分散到不同的機器上。分散後,選擇若幹種(沒錯壹種可能不夠)通信協議把他們連接起來

蹬蹬蹬蹬~大功告成。哈哈別打我,這真的是很嚴肅的通用型三步驟大殺器,對付任何軟件,是任何軟件都可以的。接下來我當然要解釋清楚為什麽。

二、跳出誤區——分布式不等於並行計算

人們常常把分布式系統自然而然的和並行計算聯系起來。然而這並不正確。實際上,分布式系統並不壹定是並行的,舉個簡單的例子就能理解——

某軟件,功能如下:

提示用戶輸入兩個數 A 和 B

在內部,對 A 和 B 執行某數學運算,獲得 C

輸出 C

很簡單吧?這三個步驟是無法並行的。它們需要被依次執行。但是這個軟件依然可以被改為分布式的,方法就是用前面提到的方法,把步驟 2 的計算過程獨立為壹個 Process 移動到另外壹臺計算機上完成。

如果我們從整個系統流程的觀點來看,並沒有什麽並行。整個過程都是順序執行的。只不過執行時出現了“跨設備”的現象而已。可見,分布式本身就只如其字面意思所指,指的僅僅是從結構角度的分散而已。

當然啊,現實世界中,我們更多的時候鐘情於分布式,還是因為它與並行之間可以相互配合。例如實現既是分布同時也是並行的系統。

好了,理解這壹點之後就不難解釋為什麽我會說前文提到的三步驟是萬用大法了。接下來我們繼續討論分布式本身。

三、拆分+連接是分布式系統的本質

所謂分布式,無非就是”將壹個系統拆分成多個子系統並散布到不同設備“的過程而已。

本質上而言,實現壹個分布式系統,最核心的部分無非有兩點:

如何拆分——可以有很多方式,核心依據壹是業務需求,二是成本限制。這是實踐中構建分布式系統時最主要的設計依據。

如何連接——光把系統拆開成 Process 還不夠,關鍵是拆開後的 Process 之間還要能通信,因此涉及通信協議設計的問題,需要考慮的因素很多,好消息是這部分其實成熟方案很多

四、為什麽妳要使用分布式?

分布式系統並非靈丹妙藥,解決問題的關鍵還是看妳對問題本身的了解。通常我們需要使用分布式的常見理由是:

為了性能擴展——系統負載高,單臺機器無法承載,希望通過使用多臺機器來提高系統的負載能力

為了增強可靠性——軟件不是完美的,網絡不是完美的,甚至機器本身也不可能是完美的,隨時可能會出錯,為了避免故障,需要將業務分散開保留壹定的冗余度

在以提供 Service 為主的服務端軟件開發過程中常常遇到這些問題。

五、壹些分布式方案能解決妳的問題,另壹些卻不能,要學會的其實是選擇

籠統的討論分布式沒有太大的意義,就如我剛才所談的,實際上分布式很容易實現。真正難的地方在於如何選擇正確的分布方案。

例如,當妳想要建立壹個分布式的數據管理系統的時候,妳就必須得面對“壹致性”問題。如果妳對數據壹致性要求很高,妳就不得不容忍壹些缺陷例如規模伸縮困難;而如果妳放棄它,妳可以輕松伸縮規模,但妳必須解決好由此帶來的壹系列數據不壹致導致的問題。(CAP 問題)

於是妳會意識到,有許多種分布方案,為了正確解決妳的問題,妳需要對每壹個方案都進行了解,並評估,選擇不同的方案有時候區別不大,有時候卻會深刻的影響整個系統中其他部分的工作方式,甚至影響用戶界面中用戶操作時的流程。這是我們學習分布式系統的重點所在。

六、分布式學習入門——基礎知識要點

如我前面所講,分布式入門不難。主要包含如下知識點:

Process(進程)。在分布式系統中,進程是基本單元

通信協議。Process 間需要相互配合才能完成工作,因此通信協議是最基本要解決的問題。這部分其實挺復雜,牽涉面光,不過核心還是抓住兩方面,壹是存在哪些需求,二是各個協議如何滿足這些需求

命名法。兩個 Process 要通信,必須相互知道對方的名字,名字可以是數字,也可以是結構化的字符串。例如眾所周知域名系統就是壹種命名方案,但是方案還有很多,各有特點

協作。上面都在談 Process 之間的通信,可是為什麽要通信?因為要協作。協作是個復雜的主題,其中最基本最基本的壹個問題就是同步問題。而聊同步問題必然要聊“鎖”……知識點就這麽展開了

上面幾點是最基礎的知識。了解了這些其實就算入門了。可是如何進階呢?那麽必然要開始學習下面的問題:

壹致性。數據存儲時,最基本的問題。其實也是實際設計系統時常常需要反復考慮的問題

容錯。冗余是容錯的基礎,但並不是全部,分布式本身為實現容錯提供了壹些便利,這也是實際設計系統時常常需要考慮的問題

  • 上一篇:紀念日或者重要節日不知道送什麽禮物,有哪些創意禮物店鋪推薦呢?
  • 下一篇:俄羅斯有哪些城市
  • copyright 2024編程學習大全網