分佈式系統基礎

一: 什麼是分佈式系統程序員

《分佈式系統原理與範型》一書中這樣定義分佈式系統:「 分佈式系統是若干獨立計算機的集合,這些計算機對於用戶來講就像是單個相關係統」。編程

概括來講就是 : 硬件獨立,軟件統一 。安全

什麼是硬件獨立 ?服務器

所謂硬件獨立,是指計算機機器自己是獨立的,一個大型的分佈式系統,會由若干臺計算機來組成系統的基礎設施。網絡

軟件統一:併發

對於用戶來講,用戶就像是跟單個系統打交道,就比如咱們天天上網看視頻,視屏網站就是一個系統軟件,其背後是如何運做的,如何部署的,部署了幾臺服務器,每臺服務器分工是什麼,這些對用戶來講是透明的,不可見的。用戶只關心今天網站提供什麼節目,視屏是否流暢等。異步

二 :如何設計分佈式系統編程語言

設計分佈式系統本質 就是 如何 合理的將一個系統拆分紅多個子系統而且部署到不一樣的機器上。 因此,第一就要考慮 如何合理的將系統拆分,拆分後的各個子系統不可能孤立的存在,必然要經過網絡進行鏈接交互。 因此如何通訊,顯得尤其重要。在通訊中還要識別敵我,防止信息篡改和攔截。這就涉及到安全問題了。分佈式系統要適應不斷增加的業務需求,就須要考慮其擴展性。還要保證可靠性和數據的一致性。分佈式

   歸納的說 有這幾個方面:函數

  1.     如何將系統拆分爲子系統?
  2.     如何規劃子系統間的通訊?
  3.     如何考慮通訊過程當中的安全?
  4.     如何讓子系統擴展?
  5.     如何保證子系統的可靠性?
  6.     如何實現數據的一致性?

   三: 分佈式系統面臨的一些困難挑戰。

 異構性:因爲基於不一樣的網絡,操做系統,計算機硬件和編程語言來構造,必需要考慮一種通用的網絡通訊協議來屏蔽異構系統之間的差別。通常交由中間件來處理。

缺少全球時鐘:交換消息協調動做 須要常常依賴於程序動做發生的時間共識。

一致性:數據被分散或複製到不一樣的機器上,如何保證各臺主機之間的數據一致性。

故障獨立性: 容許出現故障,而不影響整個系統的正常使用。

併發: 每一個資源必須被設計成在併發環境中是安全的。

透明性: 分佈式系統中的任何組件,或者主機的升級,遷移,對於用戶來講都是透明的,不可見的。

開放性: 分佈式系統由不一樣的程序員來編寫不一樣的組件,最終集成爲一個系統,那麼組件所發佈的接口必須遵照必定的規範且可以被互相理解。

安全性:加密和拒絕服務攻擊。

可擴展性: 系統要隨着業務量的增長,相應的系統也必須能擴展來提供對應的服務。

 

線程: 概不贅述。

通訊: 網絡基礎知識。

I/O模型: 

1  同步和異步

同步是指用戶線程發起I/O請求以後須要等待或者輪詢內核I/O 操做完成後才能繼續進行執行。

異步是指用戶發起I/O請求後任然繼續執行,當內核I/O操做完成後悔通知用戶線程或者調用用戶線程註冊的回調函數。

2  阻塞和非阻塞

阻塞是指I/O操做須要完全完成後纔回到用戶空間。

非阻塞是指I/O 操做 被調用後當即返回給用戶一個狀態值,無須等到I/O操做完全完成。

相關文章
相關標籤/搜索