分散式系統基礎

来源: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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...