《分散式技術原理與演算法解析》學習筆記Day02

来源:https://www.cnblogs.com/wing011203/archive/2023/02/05/17094007.html
-Advertisement-
Play Games

這篇文章主要描述分散式系統的發展歷程和分散式系統的衡量指標。發展歷程包括了單機模式、數據並行模式和任務並行模式。分散式系統的衡量指標包括性能、資源占用、可用性和可擴展性。 ...


分散式系統發展歷程

分散式的發展過程經歷了三個階段:

  • 單機模式(單兵模式)
  • 數據並行或者數據分散式(游擊隊模式)
  • 任務並行或者任務分散式(集團軍模式)

什麼是單機模式,它的優缺點是什麼?

單機模式是指所有應用程式和數據均步數在同一臺電腦或者伺服器上,由一臺電腦完成所有的處理。

它的好處是功能、代碼和數據集中,便於維護、管理和執行。

它的主要問題是性能受限、存在單點失敗的問題。

什麼是數據分散式模式,它的優缺點是什麼?

它是指採用消息共用模式使用多台電腦並行運行或者執行多任務,核心原理是每台電腦上執行相同的程式,將數據進行拆分放到不同的電腦上進行計算。它強調對數據進行拆分,任務程式在每台機器上運行。

將程式從單機模式進化到數據分散式模式,需要兩個步驟:

  1. 將應用和數據分離,分別部署到不同的伺服器上。
  2. 對數據進行拆分,將同一類型的數據拆分到兩個甚至更多的資料庫中,這樣應用伺服器上的任務就可以針對不同數據並行執行了。

這種模式的好處在於可以利用多台電腦並行處理多個請求,使得我們可以在相同的時間內完成更多的請求處理,解決了單機模式的計算效率瓶頸問題。

這種模式的主要問題是對提升單個任務的執行性能及降低時延無效。

什麼是任務分散式模式,它的優缺點是什麼?

它是指將單個複雜的任務拆分為多個子任務,從而使得多個子任務可以在不同的電腦上並行執行。

任務並行模式完成一項複雜任務包括兩個核心步驟:

  1. 將單任務拆分成多個子任務。
  2. 讓多個子任務並行執行。

這種模式的好處在於提升了性能、擴展性和可維護性,它的主要問題是帶來了設計上的複雜性。

什麼是分散式?

分散式指將相同或者相關的程式運行在多台電腦上,從而實現特定目標的一種計算方式。

數據並行和任務並行都算是分散式的一種形態。

如何選擇數據並行還是任務並行呢?一個簡單的原則:任務執行時間短,數據規模大,類型相同且無依賴,則採用數據並行;任務複雜,執行時間長,任務可拆分,則可以考慮任務並行。在實際項目中,我們往往會兩種模式並用。

分散式系統的衡量標準

分散式的目的是用更多的機器,處理更多的數據和更複雜的任務。

性能、資源、可用性和可擴展性是分散式系統的重要指標。

性能指標主要用來衡量一個系統處理各種任務的能力。常見的性能指標包括吞吐量、響應時間和完成時間

吞吐量指系統在一定時間內可以處理的任務數。常見的吞吐量包括QPS、TPS和BPS:

  • QPS,即查詢數每秒,用於衡量一個系統每秒處理的查詢數,通常用於讀操作,越高說明對讀操作的支持越好。
  • TPS,即事務數每秒,用於衡量一個系統每秒處理的事務數,通常用於寫操作,越高說明對寫操作的支持越好。
  • BPS,即比特數每秒,用於衡量一個系統每秒處理的數據量。

響應時間是指系統響應一個請求或輸入需要花費的時間。它直接影響用戶體驗,對於時延敏感的業務非常重要。

完成時間是指系統真正完成一個請求或處理需要花費的時間。

資源占用是指一個系統提供正常能力需要占用的硬體資源,例如CPU、記憶體、硬碟等。

有兩個資源占用情況需要註意:

  • 空載資源占用,一個系統再沒有任何負載時的資源占用。
  • 滿載資源占用,一個系統滿負荷時的資源占用。

可用性是指系統在面對各種異常時可以正確提供服務的能力。

可用性有兩種不同的衡量方式:

  1. 系統停止服務時間與總的時間之比
  2. 某功能的失敗次數與總的請求次數之比

可靠性(Reliability)與可用性(Availability)有什麼區別?

  • 可靠性是指一個系統完全不出故障的概率,更多用於硬體領域。
  • 可用性是指在允許部分組件失效的情況下,一個系統對外仍能正常提供服務的概率。

可擴展性是指分散式系統通過擴展集群機器規模提高系統性能(吞吐量、響應時間、完成時間)、存儲容量、計算能力的特征,是分散式系統的特有性質。

衡量可擴展性的常見指標是加速比(Speedup),也就是一個系統進行擴展後相對擴展前的性能提升。

上述這些測量指標,有些指標會彼此約束。不同的分散式系統,針對測量指標,會有不同的側重:

  • 電商系統最看重吞吐量。
  • IoT最看重資源占用指標。
  • 電信業務最看重響應時間、完成時間以及可用性。
  • HPC看到通過水平擴展提供系統的加速比。
  • 大數據最看重可擴展性。
  • 雲計算最看重資源開銷。
  • 區塊鏈最看重吞吐量和完成時間。
    作者:李潘     出處:http://wing011203.cnblogs.com/     本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 以下內容為本人的學習筆記,如需要轉載,請聲明原文鏈接 微信公眾號「ENG八戒」https://mp.weixin.qq.com/s/B1hH5Qzd2RkAiiUId1tLWw 本文大概 2874 個字,閱讀需花 10 分鐘 內容不多,但也花了一些精力 如要交流,歡迎關註我然後評論區留言 謝謝你的點 ...
  • odoo菜單定義和修改學習總結 環境 odoo-14.0.post20221212.tar 定義菜單 方式1: <?xml version="1.0"?> <odoo> <menuitem id="root_menu_id" name="TopMenu" web_icon="estate,stati ...
  • REST和SpringMVC映射請求數據 7.REST-優雅的url請求風格 7.1REST基本介紹 REST風格詳細介紹 REST:即 Representational State Transfer,表述性狀態傳遞。它結構清晰,同時可以隱藏行為。 通過一個url來直觀展示傳統風格與REST風格的區 ...
  • @RequestMapping 1.基本使用 @RequestMapping註解可以指定 控制器(處理器) 的某個方法的請求url 2.@RequestMapping其他使用方式 2.1修飾方法和類 @RequestMapping註解可以修飾方法,還可以修飾類。 當同時修飾類和方法時,請求的url就 ...
  • 面向對象 面向對象:以類的方式組織代碼,以對象組織數據 特性: 封裝 繼承 多態 類:抽象概念 對象:具體事物 面向對象是java學習的重中之重,畢竟java就是一個面向對象的語言~ 類 = 屬性+方法 面向對象的概念適合複雜系統、多人協作 從巨集觀上來說,java是面向對象的,但在微觀上是面向過程的 ...
  • 一、RabbitMQ是什麼 RabbitMQ是一種常用的消息中間件,是基於AMQP協議,採用erlang語言開發的面向消息服務的中間件,是一個獨立的系統應用程式,可以管理伺服器計算資源和網路通信。一般可作為同構或異構系統間的數據交換平臺,由於erlang語言的高併發特性,使得RabbitMQ的性能較 ...
  • ​ ​編輯 列表和元組 list 是一種有序、可變的數據類型,可添加刪除其中的元素。 len()函數:可以獲取列表元素的個數 classmates = ['Micheal' , 'Bob' , 'James'] print(classmates) print(len(classmates)) Ter ...
  • 突發奇想,爬取p站圖片做個壁紙圖庫(bukemiaoshu),當然這裡有許多的門檻,但是為了實現理想,暫時沒想那麼多了,直接開乾(不是專業做測試和自動化的,如有大佬請評論指教!!!) 1.進入登錄頁由於p站是需要登錄的,聽說p站反爬,requests應該不是那麼好使,於是使用selenium模擬人工 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...