分散式系統基礎

来源:https://www.cnblogs.com/thelovelybugfly/archive/2018/09/04/9583482.html
-Advertisement-
Play Games

一: 什麼是分散式系統 《分散式系統原理與範型》一書中這樣定義分散式系統:“ 分散式系統是若幹獨立電腦的集合,這些電腦對於用戶來說就像是單個相關係統”。 歸納來說就是 : 硬體獨立,軟體統一 。 什麼是硬體獨立 ? 所謂硬體獨立,是指電腦機器本身是獨立的,一個大型的分散式系統,會由若幹台電腦 ...


一: 什麼是分散式系統

《分散式系統原理與範型》一書中這樣定義分散式系統:“ 分散式系統是若幹獨立電腦的集合,這些電腦對於用戶來說就像是單個相關係統”。

 歸納來說就是 : 硬體獨立,軟體統一 。

什麼是硬體獨立 ?

所謂硬體獨立,是指電腦機器本身是獨立的,一個大型的分散式系統,會由若幹台電腦來組成系統的基礎設施。

軟體統一:

對於用戶來說,用戶就像是跟單個系統打交道,就好比我們每天上網看視頻,視屏網站就是一個系統軟體,其背後是如何運作的,如何部署的,

部署了幾台伺服器,每台伺服器分工是什麼,這些對用戶來說是透明的,不可見的。用戶只關心今天網站提供什麼節目,視屏是否流暢等。

二 :如何設計分散式系統 

設計分散式系統本質 就是 如何 合理的將一個系統拆分成多個子系統並且部署到不同的機器上。 所以,第一就要考慮 如何合理的將系統拆分,

拆分後的各個子系統不可能孤立的存在,必然要通過網路進行連接交互。 所以如何通信,顯得尤為重要。在通信中還要識別敵我,防止信息篡改和攔截。

這就涉及到安全問題了。分散式系統要適應不斷增長的業務需求,就需要考慮其擴展性。還要保證可靠性和數據的一致性。 概括的說 有這幾個方面: 如何將系統拆分為子系統?

如何規划子系統間的通信? 如何考慮通信過程中的安全? 如何讓子系統擴展? 如何保證子系統的可靠性? 如何實現數據的一致性?

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

異構性:由於基於不同的網路,操作系統,電腦硬體和編程語言來構造,必須要考慮一種通用的網路通信協議來屏蔽異構系統之間的差異。一般交由中間件來處理。

缺乏全球時鐘:交換消息協調動作 需要經常依賴於程式動作發生的時間共識。

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

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

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

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

開放性: 分散式系統由不同的程式員來編寫不同的組件,最終集成為一個系統,那麼組件所發佈的介面必須遵守一定的規範且能夠被互相理解。

安全性:加密和拒絕服務攻擊。 可擴展性: 系統要隨著業務量的增加,相應的系統也必須能擴展來提供對應的服務。

線程: 概不贅述。 通信: 網路基礎知識。

I/O模型: 

 同步和非同步

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

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原因:execCommand('insertHTML') IE11 不相容 解決方法: var range = I.window.$.getSelection().getRangeAt(0); range.deleteContents(); range = range.cloneRange(); v ...
  • JS判斷當前設備是 PC IOS Andriod ...
  • auto-workflow 用於快速構建各種關係圖的庫,比如流程圖,可視化執行流等 github地址:https://github.com/auto-workflow/AWorkflow 快速開始 npm install aworkflow 或者引用dist文件夾下的產出文件 訪問demo npm ...
  • function getnextElement(node){ if(node.nodeType==1) {return node;} if(node.nextSibling){return getnextElement(node.nextSibling) } return null;} ...
  • CAP理論 1. Consistency(一致性), 數據一致更新,所有數據變動都是同步的 2. Availability(可用性), 好的響應性能 3. Partition tolerance(分區容錯性) 可靠性 參考資料: "CAP理論" 服務發現比較 | | consul | zookeep ...
  • 距離上次發文,已經過去了三年半,這幾年技術更新節奏異常迅猛,.Net進入了跨平臺時代,前端也被革命性的顛覆。 回顧 2015年,正當我還沉迷於JQuery + EasyUi的封裝時,突然意識到技術已經過時。 JQuery在面對更加複雜的UI需求時顯得力不從心,EasyUi雖然組件比較完善,但界面風格 ...
  • 源碼: https://github.com/tylike/CIIP https://gitee.com/ciip/CIIP 一,CIIP的目標是什麼? 更加簡單,快速的建立信息類管理系統.讓實施人員可能承擔多數工作,降低開發人員的勞動強度. 二,CIIP改動了哪些? 2016年到本次更新之前,CI ...
  • 序言 在 "《代碼失控與狀態機(上)》" 的文末,我們留了一個解析「成員訪問表達式」的“作業”,那麼,通過本文我們一起來完成這個作業。 首先,為什麼要苦哈哈的寫一個這樣看上去沒什麼用的解析器?因為在某些 IoC 或 AOP 容器中 (不幸的是我需要實現一個這樣的 IoC 容器) ,常需要動態求解成員 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...