回覆列表
  • 1 # 此生唯一

    什麼是分散式?相對於以前單一系統,所有的功能,服務都部署在一臺伺服器上,一掛全掛!分散式採用了把系統提供的服務分佈在不同的伺服器上的策略,這樣的架構就叫做分散式架構!

    分散式架構有什麼好處呢?

    1,單個服務宕機不影響別的服務正常執行!

    2,單個節點所有的負載分佈均衡到了多臺伺服器上!

    3,各服務之間相互透明,實現解耦!

    現在的使用者流量越來越大,所以分散式基本是以後架構發展必須的一個趨勢!

    分佈之後問題來了,以前的單一系統,所有服務都在同一個同一個機器,在同一個記憶體裡面,直接呼叫即可,但是現在分佈在不同的jvm中,怎麼呼叫呢?或者說資料怎麼傳輸?

    訊息中介軟體應運而生!

    目前我用過的訊息中介軟體有activemq,ons,kafka,其實所有的訊息中介軟體本質都一樣,

    1,生產者和消費者之間透過某種方式(點對點或者訂閱)實現"繫結"!

    2,生產者生產資料,併發送到訊息中介軟體,訊息中介軟體進行落庫處理!

    3,訂閱了訊息的消費者透過監聽器監聽訊息中介軟體,如果有屬於自己的訊息,進行消費!

    當然整個過程中間會有資料一致性問題,怎麼解決呢?

    只要保證生產訊息到訊息中介軟體的時候進行返回值確認保證這一步的資料一致,然後在訊息到消費者的時候保證返回正確結果即可,如果中間出現異常可進行重試,或者發郵件等!

    到此,分散式系統的資料傳遞透過訊息中介軟體解決了!

    但是分散式還有比如session,日誌處理,單點登入等各伺服器需要相同的資料的問題,可透過接到同一個redis快取進行處理!

    分散式服務的配置檔案可以透過統一的檔案配置中心統一處理!

    新增服務註冊和發現,還有服務宕機的監控處理!

    分散式在現如今資料量暴增,服務全面化的年代有著越來越重要的作用,也是一個不可避免的趨勢!

    學好分散式,工資暴增日!

    關於分散式還有更多的細節諸如資料安全,資料一致性,重複呼叫,冪等性等等的問題,來來來,我們一塊研究!

  • 2 # 會點程式碼的大叔

    分散式

    一個業務被拆成多個子業務,部署在多臺伺服器上,這個就叫做分散式。

    我有一個系統A,提供一個很簡單的介面,根據員工編號查詢員工姓名和他的考勤記錄。

    我拆開兩個系統:人員管理系統B和考勤系統C,分別部署在兩臺伺服器上。

    這個需求,需要呼叫一下系統B,再呼叫一下系統C,最後得到需要的結果。

    這個就是分散式。

    中介軟體

    將具體業務和底層邏輯解耦的軟體。

    舉個例子:

    我要開一家炸雞店(業務端),需要雞肉,有很多養雞場(底層),我需要一個一個比較價錢,然後找一家價效比高的養雞場合作(適配不同底層邏輯)。可能一段時間後,我需要重新選一家養雞場合作,進貨方式、交易方式等要重新制定(重新適配)。

    這一套事情太複雜了,於是我找到了一個專門整合養雞場的第三方代理(中介軟體),跟他談好價格和質量後(統一介面),以後我就只需要給代理錢,然後拿肉就行。具體這個第三方代理怎麼操作,我不用管。

    訊息佇列

    訊息佇列可以看做記憶體中的佇列,有人往裡放訊息,有人從裡取訊息。

    Producer:訊息生產者。Broker:訊息處理中心,負責訊息儲存、確認、重試等。Consumer:訊息消費者。

    訊息佇列的特點是:非同步、解耦、可靠性(訊息佇列一般會把接收到的訊息持久化到本地硬碟上)

    用較多的訊息佇列有ActiveMQ,RabbitMQ,Kafka,RocketMQ,它們又可以被稱作是訊息中介軟體,訊息中介軟體解決的就是分散式系統之間訊息傳遞的問題。

    舉個例子:

    比如我是做網上商城的,有一個簡訊系統,當客戶下了一個訂單之後,通知客戶你下單成功。

    當訂單量比較小的時候,只需要呼叫傳送簡訊的介面就可以了。

    但是如果訂單量大了之後呢,並且簡訊傳送晚個一兩分鐘也沒有什麼問題,那麼就可以使用訊息中介軟體:把待發送的簡訊傳送到訊息佇列裡面,簡訊系統從訊息佇列中取出簡訊進行傳送就可以了。

    而且還有一個好處:如果簡訊系統掛掉了,簡訊訊息儲存在訊息中介軟體裡面不會丟失,等簡訊系統恢復了之後,繼續簡訊傳送即可。

  • 3 # 全民學程式設計

    分散式:

    用於實現任務的分擔,比如之前有一個辦業務的視窗,隨著客流量多,多開幾個辦理業務視窗,這樣多個視窗,同時工作,分擔任務。

    這時會出現問題了,那麼多個視窗,客戶來了該去那個視窗,這個時候會讓客戶去取號機,取號,其實取號機就是中介軟體的角色,只是類似訊息佇列的中介軟體。

    分散式要解決的問題很多,其中兩個最重要的是:分散式鎖和分散式事務。可以參考我發的文章。

    中介軟體:

    簡單來說就是一座橋,是連線各方的中樞。

    上面的例子中,如果多個視窗內部中間需要協作,一般是找個中間人,俗話說就是跑腿的,在各個視窗之間來回折騰,這樣每個視窗的業務員不用動,只需要告訴中間人就行了,然後繼續辦理其他客戶的業務。

    有時候訊息佇列也是實現中介軟體的一直方式。

    訊息佇列

    其實就是一個排隊的機制,然後實現通知機制。

    訊息佇列一般用於:

    1.日誌記錄

    2.流量削峰

    3.通訊

    4.系統解耦(中介軟體)

    5.實現分散式事務的最終一致性

    6.等等

  • 4 # Java猿

    分散式就是不部署在一個程序中,比如多臺機器,甚至同臺機器的不同程序中。

    中介軟體除了自己寫的程式碼和一些工具類庫都可以叫中介軟體,比如資料庫,開發框架,快取,佇列等

    訊息佇列就是一箇中間件,有生產的有消費的還有個訊息暫存的,比如超市貨架,超市往貨架放東西,顧客取東西,貨架就是暫存貨物。

  • 中秋節和大豐收的關聯?
  • 豆腐餛飩的做法步驟圖,豆腐餛飩怎麼做好吃?