日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

分布式:分布式系统的设计

發(fā)布時間:2023/12/2 windows 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式:分布式系统的设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#整理了一些博文作為分布式相關(guān)理論的學(xué)習(xí)筆記,同時加上了一些個人的理解,尊重原創(chuàng)者,文章屬性就設(shè)為轉(zhuǎn)載吧,參考博文的鏈接已附在最后。

分布式

  • 概要,與集群的區(qū)別
  • 分布式系統(tǒng)的設(shè)計
  • CAP 和 BASE 理論


一、分布式系統(tǒng)

在計算機(jī)領(lǐng)域,當(dāng)單機(jī)性能達(dá)到瓶頸時,一般有兩種方式解決性能問題:

  • 堆硬件,進(jìn)一步提升配置;
  • 分布式設(shè)計,如水平拆分、垂直拆分。
    分布式系統(tǒng)有很多種:分布式文件系統(tǒng)、分布式數(shù)據(jù)庫、分布式 WebService、分布式計算等等,面向的情景不同,但分布式的思路大致相同,萬法歸一。

而分布式系統(tǒng)的設(shè)計說白了就是: 如何合理將一個系統(tǒng)拆分成多個子系統(tǒng)部署到不同機(jī)器上。
講設(shè)計方法前,先介紹分布式系統(tǒng)的特性:

1. 分布式系統(tǒng)的特性

(1)分布性

空間中隨機(jī)分布。這些計算機(jī)可以分布在不同的機(jī)房,不同的城市,甚至不同的國家。

(2)對等性

分布式系統(tǒng)中的計算機(jī)沒有主/從之分,組成分布式系統(tǒng)的所有節(jié)點都是對等的。在分布式系統(tǒng)最常見的概念之一是副本–數(shù)據(jù)副本和服務(wù)副本。數(shù)據(jù)副本是指在不同的節(jié)點上持久化同一份數(shù)據(jù),當(dāng)某一個節(jié)點上存儲的 數(shù)據(jù)丟失時,可以從副本上讀取到該數(shù)據(jù),這是解決分布式系統(tǒng)數(shù)據(jù)丟失問題最為有效的手段。服務(wù)副本,指多個節(jié)點提供同樣的服務(wù),每個節(jié)點都有 能力接收來自外部的請求并進(jìn)行相應(yīng)的處理。

(3)并發(fā)性

同一個分布式系統(tǒng)的多個節(jié)點,可能會并發(fā)地操作一些共享的資源,諸如數(shù)據(jù)庫或分布式存儲。

(4)缺乏全局時鐘

既然各個計算機(jī)之間是依賴于交換信息來進(jìn)行相互通信,很難定義兩件事件的先后順序,缺乏全局始終控制序列。

(5)故障總會發(fā)生

組成分布式的計算機(jī),都有可能在某一時刻突然間崩掉。分的計算機(jī)越多,可能崩掉一個的幾率就越大。如果再考慮到設(shè)計程序時的異常故障,也會加大故障的概率。

(6)處理單點故障

單點 SPoF(Single Point of Failure):某個角色或者功能只有某一臺計算機(jī)在支撐,在這臺計算機(jī)上出現(xiàn)的故障是單點故障。當(dāng)然處理方式可以是采用上面所講的:集群。

2. 分布式系統(tǒng)的設(shè)計

將系統(tǒng)拆分成多個子系統(tǒng),這就意味著拆分后的系統(tǒng)必然需要通過網(wǎng)絡(luò)進(jìn)行互相通信聯(lián)系。所以通信中的穩(wěn)定和安全也顯得尤為重要。隨著業(yè)務(wù)慢慢的增長,擴(kuò)展性、可靠性、數(shù)據(jù)一致性都需要進(jìn)行考慮。

(1)系統(tǒng)拆分成子系統(tǒng)。這個需要設(shè)計師好好設(shè)計,將一個大系統(tǒng)拆分成多個小系統(tǒng),分層次來維護(hù)。

(2)設(shè)計系統(tǒng)間的通信。在這兒我們可以使用消息中間件,開源框架幫我們解決了這個問題。如Apache ActiveMQ、RabbitMQ、Apache RocketMQ、Apache Kafka等。

(3)設(shè)計分布式計算。開源框架有 apReduce、Apache Hadoop、Apache Spark 等。

(4)大數(shù)據(jù)和分布式存儲。有 Apache HBase、Apache Cassandra、Memcached、Redis、MongoDB等。

(5)分布式監(jiān)控控制。常用的技術(shù)包括Nagios、Zabbix、Consul、ZooKeeper等。

2.1 水平拆分和垂直拆分

水平拆分:

以購物平臺為例:
水平拆分是指按照 業(yè)務(wù) 對系統(tǒng)進(jìn)行劃分 。比如原來的系統(tǒng)中包括了交易,運(yùn)營兩大類,按照水平拆分的原則進(jìn)行拆分,系統(tǒng)可以拆分成 交易系統(tǒng) 和 運(yùn)營系統(tǒng)。
優(yōu)點:不同業(yè)務(wù),往往性能要求,以及請求量是不一樣的。拆分后保證業(yè)務(wù)之間的可用性影響最小化。
缺點:拆分過程中,多個系統(tǒng)中可能存在重復(fù)的輪子,難于維護(hù)。

假設(shè)我們有一臺服務(wù)器,它可以承擔(dān) 1 百萬/秒的請求,這個請求可以的是:通過 http 訪問網(wǎng)頁、通過 tcp 下載文件、jdbc 執(zhí)行 sql、RPC 調(diào)用接口等等方式,現(xiàn)在我們有一條數(shù)據(jù)的請求是 2 百萬/秒,很顯然服務(wù)器很難hold 住,會各種拒絕訪問,甚至宕機(jī),怎么辦呢?

一臺機(jī)器解決不了的問題,那就兩臺。所以我們加一臺機(jī)器,每臺承擔(dān) 1 百萬。如果請求繼續(xù)增加呢,兩臺解決不了的問題,那就三臺唄。這種方式我們稱之為水平拆分,如果實現(xiàn)請求的平均分配便是負(fù)載均衡了。

垂直拆分:

垂而直拆分是將同樣的系統(tǒng)按照應(yīng)用場景(調(diào)用方)進(jìn)行拆分
比如交易系統(tǒng)的支付模塊,上游有用戶支付和商家支付兩個調(diào)用流程。按照垂直拆分的規(guī)則就可以將支付模塊拆分為用戶支付和商家支付。
優(yōu)點:按需配給(預(yù)估調(diào)用方的流量,配置對應(yīng)的機(jī)器數(shù)),各個垂直調(diào)用之間相互不影響,通過配置可以進(jìn)行上游調(diào)用降級。
缺點:幾乎完全重復(fù)的輪子。

在如,我們現(xiàn)在有兩個數(shù)據(jù)請求,數(shù)據(jù)1有 190 萬,數(shù)據(jù)2有 280 萬,上面那臺機(jī)器也 hold 不住,我們加一臺機(jī)器來負(fù)載均衡一下,每臺機(jī)器處理 45 萬數(shù)據(jù)1和 40 萬數(shù)據(jù)2,但是平分太麻煩,不如一臺處理數(shù)據(jù)1,一臺處理數(shù)據(jù)2,同樣能解決問題,這種方式我們稱之為垂直拆分。

垂直拆分更多是用在數(shù)據(jù)庫的拆分,如將某一張列很多的數(shù)據(jù)表拆分成多張數(shù)據(jù)表。

水平拆分和垂直拆分是分布式架構(gòu)的兩種思路,但并不是一個二選一的問題,更多的是兼并合用。

注意:要將分布式設(shè)計中的水平拆分、垂直拆分與高并發(fā)中的水平擴(kuò)展、垂直擴(kuò)展區(qū)分開來。

2.2 負(fù)載均衡

前面我們談到了分布式來解決性能問題,但其附帶的問題是怎么分布,即如何負(fù)載均衡。這里要解決的問題是當(dāng)客戶端發(fā)出請求時,應(yīng)該讓哪一臺服務(wù)器對該請求進(jìn)行處理,通常的做法是通過一臺中間服務(wù)器來給客戶端分配目標(biāo)服務(wù)器。
常見如 zookeeper 是分布式系統(tǒng)中一個負(fù)載均衡框架,它是 google 的 chubby 的一個開源實現(xiàn),是 Hadoop 和 Hbase 的重要組件。
同樣的在 http 中,常聽說的 nginx 也是一個負(fù)載均衡服務(wù)器,它面向的是分布式 web 服務(wù)器。

2.3 同步問題

分布式系統(tǒng)中,解決了負(fù)載均衡的問題后,另外一個問題就是數(shù)據(jù)的一致性了,這個就需要通過同步來保障。根據(jù)不同的場景和需求,同步的方式也是有選擇的。

在分布式文件系統(tǒng)中,比如商品頁面的圖片,如果進(jìn)行了修改,同步要求并不高,就算有數(shù)秒甚至數(shù)分鐘的延遲都是可以接受的,因為一般不會產(chǎn)生損失性的影響,因此可以簡單的通過文件修改的時間戳,隔一定時間掃描同步一次,可以犧牲一致性來提高效率。

但銀行中的分布式數(shù)據(jù)庫就不一樣了,一丁點不同步就是無法接受的,甚至可以通過加鎖等犧牲性能的方式來保障完全的一致。

在一致性算法中 paxos 算法是公認(rèn)的最好的算法,chubby、zookeeper 中 paxos 是它保證一致性的核心。

二、分布式架構(gòu)下的高可用設(shè)計

  • 避免單點故障
    ○ 負(fù)載均衡技術(shù)(failover ,選址,硬件負(fù)載,軟件負(fù)載,去中心化負(fù)載(gossip(redis-cluster));
    ○ 熱備 linux HA;
    ○ 多機(jī)房(同城災(zāi)備,異地災(zāi)備);

  • 應(yīng)用的高可用
    ○ 故障監(jiān)控(系統(tǒng)監(jiān)控(cpu,內(nèi)存)、鏈路監(jiān)控、日志監(jiān)控)自動預(yù)警;
    ○ 應(yīng)用的容錯設(shè)計 (服務(wù)降級,限流) 自我保護(hù)能力;
    ○ 數(shù)據(jù)量 (數(shù)據(jù)分片,讀寫分離)。
    (待補(bǔ)充)




  • ————————————————
    參考鏈接:
    https://blog.csdn.net/cutesource/article/details/5811914
    https://blog.csdn.net/mcb520wf/article/details/82456456
    https://my.oschina.net/niepanLs/blog/875578
    https://blog.csdn.net/yuhaiyang_1/article/details/80892492

    總結(jié)

    以上是生活随笔為你收集整理的分布式:分布式系统的设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。