在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于分布式系統的幾個問題

華為開發者社區 ? 來源:華為云社區 ? 作者:華為云社區 ? 2020-09-23 16:28 ? 次閱讀

本文摘自:華為云社區

作者:華為加拿大研究院軟件專家 Jet老師

小引

分布式系統是一個古老而寬泛的話題,而近幾年因為 “大數據” 概念的興起,又煥發出了新的青春與活力。本文將會通過對如下幾個問題展開談一下分布式系統:

什么是分布式系統?

為什么要用分布式系統?

分布式系統設計推演

CAP定理是什么?

分布式系統如何進行分布?

分布式應用通常使用的架構類型哪些?

分布式系統的優缺點有哪些?

1. 什么是分布式系統?

簡單的來說,一個分布式系統是一組計算機系統一起工作,在終端用戶看來,就像一臺計算機在工作一樣。

這組一起工作的計算機,擁有共享的狀態,他們同時運行,獨立機器的故障不會影響整個系統的正常運行。

我們現在舉個例子,傳統的數據庫是存儲在一臺機器的文件系統上的。每當我們取出或者插入信息的時候,我們直接和那臺機器進行交互。那么現在我們把這個傳統的數據庫設計成分布式數據庫。假設我們使用了三臺機器來構建這臺分布式數據庫,我們追求的結果是,在機器1上插入一條記錄,需要在機器3上可以返回那條記錄,當然了,機器1和2也要能夠返回這條記錄。

2. 為什么要用分布式系統?

管理分布式系統是一個非常復雜的話題,里面充滿了陷阱和地雷。部署維護和調試分布式系統也是非常頭疼的一件事情,那為什么還要去做呢?

分布式系統最大的好處就是能夠讓你橫向的擴展系統。

以前面提到的單一數據庫為例,能夠處理更多流量的唯一方式就是升級數據庫運行的硬件,這就是縱向擴展。而縱向擴展的是有局限性的。當到了一定程度以后,我們會發現即使最好的硬件,也不能夠滿足當前流量的需求。 橫向擴展是指通過增加更多的機器來提升整個系統的性能,而不是靠升級單臺計算機的硬件。從價格上來說,橫向擴展相比縱向擴展更容易控制。 最根本的問題是縱向擴展有很強的局限性,達到最新硬件的能力以后,還是無法滿足中等或者大型工作負載的技術要求。橫向擴展則沒有這個限制,它沒有上限,每當性能下降的時候,你就需要增加一臺機器,這樣理論上講可以達到無限大的工作負載支持。 除此之外,在容錯和低延遲上也有很多優勢。容錯性是指你的分布式系統的某個節點出現錯誤以后,并不會導致整個系統的癱瘓。而單機系統出錯以后,可能會導致整個系統的崩潰。低延遲是通過在不同的物理位置部署不同的機器,通過就近獲取的原則降低訪問的延遲時間。

上面討論了分布式系統的種種好處,但是我們必須要清楚設計和運行分布式系統并非易事。

3. 分布式系統設計推演

我們先講一個場景,我們現有的網絡應用變得越來越流行,服務的人數也越來越多,導致我們的應用程序每秒收到的請求,遠遠超過能夠正常處理的數量。這會導致應用程序性能下降明顯,用戶也會注意到這一點。

那我們下面就來擴展一下我們的應用程序來滿足更高的要求。一般來說我們讀取信息的頻率要遠遠超過插入或者修改的頻率。

下面我們使用主從復制策略來實現擴展系統。我們可以創建兩個新的數據庫服務器,他們與主服務器同步。用戶業務對這兩個新的數據庫只能讀取。每次當向主數據庫插入和修改信息時,都會異步的通知副本數據庫進行更新變化。

在這一步上我們已經有了三倍于原來系統讀取數據的性能支持。但是這里有一個問題,在數據庫事務的設計當中,我們遵循ACID原則。但是在我們同時對其他兩個數據庫進行數據更新的時候,我們有一個時間窗口失去了一致性原則。如果在這個時間窗口內對兩個新的數據庫進行查詢,可能查不到數據。這個時候如果同步這三個數據庫的數據,就會影響寫操作的性能。這是我們在設計分布式系統的時候,不得不承受的一些代價。

上面的主從復制策略解決了用戶讀取性能方面的需求,但是當數據量達到一定程度,一臺機子上無法存放的時候,我們需要擴展寫操作性能。要解決這樣的問題,我們可以使用分區技術。分區技術是指根據特定的算法,比如用戶名a到z作為不同的分區,分別指向不同的數據庫寫入,每個寫入數據庫會有若干讀取的從數據庫進行同步提升讀取性能。

當然,這樣使得整套系統變得更加復雜。最重要的難點是分區算法。你們試想一下,如果c開頭的用戶名比其他開頭的用戶名要多很多,這會導致c區的數據量非常龐大,相應地,對于c區的請求也會遠遠大于其他區。此時c區成為熱點。要避免熱點,需要對c區進行拆分。此時要進行共享數據就會變得非常昂貴,甚至可能導致停機。

如果一切都很理想,那我們就擁有了 n倍的寫入流量,n是分區的數目。

當然這里也存在一個陷阱,我們進行數據分區以后,導致除了分區鍵以外的查詢都變得非常低效,尤其是對于sql語句如join查詢就變得非常之糟糕,導致一些復雜的查詢根本無法使用。

這里有一個思考題:如何選擇更好的分區策略算法?

4. CAP定理是什么?

這個定理是指一個分布式系統不能同時具有一致性,可用性和分區容忍性。

一致性Consistency:依次讀寫的是什么就是什么。

可用性Availability:整個系統不會崩潰, 每個非故障節點總會有一個相應。

分區容忍Partition tolerant:盡管有分區,系統仍能繼續運行并保持其一致性和可用性。

對于任何分布式系統來說,分區容忍是一個給定的條件,如果沒有這一點,就不可能做到一致性和可用性。試想如果兩個節點鏈接斷掉了,他們如何能夠做到既可用又一致?

最后你只能選擇在網絡分區情況下,你的系統要么強一致,要么高可用。

實踐表明大多數應用程序更看重可用性。這個考量的主要原因是在不得不同步機器里實現強于一致性是時,網絡延遲會成為一個問題。這類因素使得應用程序通常會選擇提供高可用性的解決方案。

此時采用的是最弱的一致性模型來解決的,這種模型保證了如果沒有對某個項目進行新的更新,最終對該項目的所有訪問都會返回最新的值。這些系統提供了BASE屬性,這是相對于傳統數據庫的ACID來講的。

也就是( Basically available)基本上是可用的,系統總會返回一個響應。

( Soft state)軟狀態, 系統可以隨著時間的推移而變化,甚至在沒有輸入的情況下也可以變化, 如保持最終的一致性的同步。 ( Eventual consistency)最終的一致性, 在沒有輸入的情況下,數據遲早會傳播到每一個節點上,從而變得一致。

追求高可用的分布式數據庫例子有Cassandra;看重強一致性的數據庫,有HBase, Redis, Zookeeper。

5. 分布式系統如何進行分布?

我們來看一下分布系統進行分布的常用方式:

5.1哈希

以哈希方式把不同的值進行哈希運算,映射到不同的機器或者節點上。這種方式在擴展的時候比較困難,因為數據分散在多個機器上很容易出現分布不均的情況,常見的哈希對象有ip,url,id等。

5.2 數據范圍

按數據范圍分布,比如ID在1~100的在機器a上,ID在100~200的在機器b上,諸如此類。這種分布方法數據比較均勻。如果某個節點處理能力有限,可以直接分裂這個節點。維護數據分布的這些原數據,如果量非常大的話,可能會出現單點瓶頸。因此一定要嚴格控制元數據量。

5.3 數據量

按數據量來分布數據,是以較為固定的大小將數據劃分為若干的數據塊,再把不同的數據塊分布到不同的服務器上。以數據量來進行分布的這些數據,也需要被記錄下來作為元數據來管理。當集群規模很大時,元數據的量也會變大。

5.4副本與數據分布

這種方式是指把數據給分散到多個服務器上。如果其中一臺出現問題,請求就會被轉到其他服務器上。其原理是多個機器互為副本,這是比較理想的實現負載分壓的方式。

5.5一致性哈希

一致性哈希。通過哈希域構造哈希環,在增加機器時,變動的是其附近的節點,分攤的是附近節點的壓力,其元數據的維護和按數量分布的維護方式一致。

我們現在來看一下使用以上方式進行分布的例子:GFS, HDFS:按數據量分布。 Map reduce:按GFS數據分布做本地化。 BigTable, HBase按數據范圍分布。 Pnuts:按哈希方式或者數據范圍分布。 Dynamo, Cassndra:按一致性哈希分布。 Mola, Armor, BigPipe:按哈希方式分布。 Doris:按哈希方式和按數據量分布進行組合。

6. 分布式應用通常使用的架構類型哪些?

6.1 客戶端服務器

在這個類型中,分布式系統架構有一個服務器作為共享資源。比如打印機數據庫或者網絡服務器。它有多個客戶機,這些客戶機決定何時使用共享資源,如何使用和顯示改變數據,并將其送回服務器,像git這樣的代碼倉,這是一個很好的例子。

6.2 三層架構

這種架構把系統分為表現層,邏輯層和數據層,這簡化了應用程序的部署,大部分早期的網絡應用都是三層的。

6.3 多層架構

上面的三層架構是多層架構的一種特殊形式。一般會把上面的三層進行更詳細的劃分,比如說以業務的形式進行分層。

6.4 點對點架構

在這種架構中,沒有專門的機器提供服務或管理網絡資源。而是將責任統一分配給所有的機器,成為對等機,對等機既可以作為客戶機,也可以作為服務器。這種架構的例子,包括bittorrent和區塊鏈

6.5 以數據庫為中心

這種架構是指用一個共享的數據庫,使分布式的各個節點在不需要任何形式直接通信的情況下,進行協同工作的架構。

7. 分布式系統的優缺點有哪些?

7.1分布式系統的優點

1. 分布式系統中的所有節點都是相互連接的。所以節點可以很容易地與其他節點共享數據。 2. 更多的節點可以很容易地添加到分布式系統中,即可以根據需要進行擴展。 3. 一個節點的故障不會導致整個分布式系統的失敗。其他節點仍然可以相互通信。 4. 硬件資源可以與多個節點共享,而不是只限于一個節點。

7.2分布式系統的缺點

1. 在分布式系統中很難提供足夠的安全,因為節點以及連接都需要安全。 2. 一些消息和數據在從一個節點轉移到另一個節點時,可能會在網絡中丟失。 3. 與單用戶系統相比,連接到分布式系統的數據庫是相當復雜和難以處理的。 4. 如果分布式系統的所有節點都試圖同時發送數據,網絡中可能會出現過載現象。

小結

最后談一下分布式系統與集群的關聯。我的觀點是這兩者并不是對立的。因為分布式系統是通過多個節點的集群來完成一個任務,讓外界看起來是跟一套系統作為一個整體打交道。

一套分布式系統可以有多個集群,這些集群可以業務進行劃分,也可以物理區域進行劃分。每一個集群可以作為這個分布式系統的一個節點。這些集群節點組成的分布式系統,又可以作為單個的節點與其他的節點組成一個集群。

原文標題:開發分布式系統,這7個要點你掌握了嗎?

文章出處:【微信公眾號:華為開發者社區】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 分布式系統
    +關注

    關注

    0

    文章

    146

    瀏覽量

    19280

原文標題:開發分布式系統,這7個要點你掌握了嗎?

文章出處:【微信號:Huawei_Developer,微信公眾號:華為開發者社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    分布式云化數據庫有哪些類型

    分布式云化數據庫有哪些類型?分布式云化數據庫主要類型包括:關系型分布式數據庫、非關系型分布式數據庫、新SQL分布式數據庫、以列方式存儲數據、
    的頭像 發表于 01-15 09:43 ?50次閱讀

    基于ptp的分布式系統設計

    。 PTP概述 PTP是一種網絡時間同步協議,它允許網絡中的設備同步它們的時鐘。PTP基于IEEE 1588標準,旨在提供亞微秒級別的時間同步精度。PTP通過在網絡中傳播時間信息,并使用這些信息來校正本地時鐘,從而實現精確的時間同步。 系統架構 基于PTP的分布式
    的頭像 發表于 12-29 10:09 ?136次閱讀

    分布式輸電線路故障定位中的分布式是指什么

    所謂分布式指的是產品的部署方式,是相對于集中式而言的。 一、部署方式 分散安裝:分布式輸電線路故障定位系統中的采集裝置需要安裝在輸電線路的多個位置,通常是每隔一定距離設置一個監測點,以確保對整條線路
    的頭像 發表于 10-16 11:39 ?311次閱讀
    <b class='flag-5'>分布式</b>輸電線路故障定位中的<b class='flag-5'>分布式</b>是指什么

    安科瑞分布式光伏系統在某重工企業18MW分布式光伏中應用

    2024年7月16日,江蘇省發改委發布《關于高質量做好全省分布式光伏接網消納的通知(征求意見稿)》,計劃大力支持分布式光伏的發展! 1、未來分布式光伏規模規劃 根據規劃,2024、20
    的頭像 發表于 07-19 11:30 ?537次閱讀
    安科瑞<b class='flag-5'>分布式</b>光伏<b class='flag-5'>系統</b>在某重工企業18MW<b class='flag-5'>分布式</b>光伏中應用

    分布式光纖測溫系統DTS

    隨著城市用電量的持續增長,電纜負荷日益加重,電纜故障頻發成為一個不容忽視的問題。傳統的電纜監測手段已經無法滿足對電纜狀態實時、精準監控的需求,因此部分供電公司采用鼎信分布式光纖測溫系統(DTS)來
    的頭像 發表于 06-27 17:18 ?596次閱讀

    分布式SCADA系統的特點的組成

    在工業自動化和能源管理領域,SCADA(Supervisory Control And Data Acquisition)系統扮演著至關重要的角色。其中,分布式SCADA系統憑借其獨特的結構和功能
    的頭像 發表于 06-07 14:43 ?573次閱讀

    分布式能源是什么意思?分布式能源有什么優勢?

    分布式能源指的是在用戶端或靠近用戶端的小型能源供應系統,它能夠直接滿足用戶的多種能源需求,如電力、熱能和冷能。
    的頭像 發表于 04-29 17:26 ?2414次閱讀

    分布式光伏監控系統解決方案

    分布式光伏發電系統的發電量,提高分布式光伏發電系統的利用率。發展分布式光伏發電對優化能源結構、實現“雙碳目標”、推動節能減排、實現經濟可持續
    的頭像 發表于 04-22 15:56 ?1036次閱讀
    <b class='flag-5'>分布式</b>光伏監控<b class='flag-5'>系統</b>解決方案

    HarmonyOS實戰案例:【分布式賬本】

    Demo基于Open Harmony系統使用ETS語言進行編寫,本Demo主要通過設備認證、分布式拉起、分布式數據管理等功能來實現。
    的頭像 發表于 04-12 16:40 ?1359次閱讀
    HarmonyOS實戰案例:【<b class='flag-5'>分布式</b>賬本】

    分布式控制系統的七個功能和應用

    分布式控制系統的七個功能和應用? 分布式控制系統是一種由多個獨立的控制單元組成的系統,每個控制單元負責系統中的一部分功能。它具有分散的、自治的特性,可以提高
    的頭像 發表于 02-01 10:51 ?1487次閱讀

    分布式大屏控制系統對網絡環境的要求

    分布式大屏控制系統對網絡環境的要求較高,主要是因為該系統需要實時傳輸大量的視頻信號數據,以保證多個顯示屏幕的同步顯示。以下是幾個關鍵的網絡環境要求: 高帶寬:
    的頭像 發表于 01-29 14:52 ?605次閱讀

    分布式大屏控制系統的可擴展性設計

    分布式大屏控制系統的可擴展性設計是確保系統能夠適應不斷增長的需求和未來發展的關鍵因素。以下是可擴展性設計的幾個方面: 模塊化設計:將系統劃分
    的頭像 發表于 01-29 14:46 ?626次閱讀

    分布式大屏控制系統的應用場景

    分布式大屏控制系統具有廣泛的應用場景,主要涉及以下幾個方面: 監控指揮中心:如交通指揮中心、電力調度中心、應急指揮中心等,用于實時監控、調度和指揮,保證系統的安全、穩定、高效運行。 會
    的頭像 發表于 01-29 14:25 ?789次閱讀

    分布式大屏控制系統的工作原理

    分布式大屏控制系統是一種基于分布式計算、云計算和大數據技術的控制系統,具有高效、穩定、靈活的特點。該系統通過將各個子
    的頭像 發表于 01-29 14:24 ?800次閱讀

    設計高效分布式智慧終端系統的關鍵要素

    設計高效分布式智慧終端系統的關鍵要素包括以下幾個方面: 安全性 :安全性是設計分布式智慧終端系統的首要考慮因素。由于終端
    的頭像 發表于 01-24 14:52 ?373次閱讀
    主站蜘蛛池模板: 天堂网在线最新版www中文网| 四虎影院免费在线播放| 亚洲人成一区| 亚洲欧美一区二区三区四区| 色婷婷激情五月| 狠狠色噜噜狠狠狠97影音先锋| 国产在线视欧美亚综合| 一级在线观看| 色天使在线观看| 男女免费在线视频| 国产在线一卡| 夜夜操夜夜| 米奇777四色精品人人爽| 成人窝窝午夜看片| 4438x成人全国| aaaaa国产毛片| 天堂资源吧| 免费播放黄色| 999av视频| 美女被日出白浆| 国产操女人| 在线观看你懂得| 日韩色区| 国产三级香港三级人妇| 午夜寂寞影| 国产成人永久在线播放| 又色又爽的视频| 午夜色网| 久久婷婷六月| 亚洲午夜精品一区二区| 孩交精品xxxx视频视频| 性生交酡| 色九| 国产精品久久久久久久久ktv | 狠狠色噜噜狠狠狠狠2018| 性欧美在线| 久久99免费| 色综合久久98天天综合| 99pao强力打造免费高清色| 性夜影院午夜看片| 激情久久久久久久久久|