成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章帶你了解高可用架構分析

開發 架構
消息中間件也可以稱消息隊列(Message Queue / MQ),互聯網場景中經常使用消息中間件進行消息路由、訂閱發布、異步處理等操作,來緩解系統的壓力。

1、介紹

消息中間件是指在分布式系統中完成消息的發送和接收的基礎軟件。
消息中間件也可以稱消息隊列(Message Queue / MQ),互聯網場景中經常使用消息中間件進行消息路由、訂閱發布、異步處理等操作,來緩解系統的壓力。
引入消息隊列主要是為了解決如下問題的:

  • 解耦 :如訂單系統,可以通過消息隊列把削減庫存的工作交給庫存系統去處理,而不用等實時響應。
  • 執行有序性:先進先出原理,按照進入消息隊列的順序處理業務事件。
  • 消息路由 :按照不同的規則,將隊列中消息發送到不同的業務服務中。
  • 異步處理 :將一些無需實時響應結果的計算放到異步中,提升系統的吞吐率。
  • 削峰 :將峰值期間的操作削減,比如整個操作流程包含12個步驟,后11個步驟非強關注結果的數據,可以放在消息隊列中。


既然本身就是為了解決大流量場面而設計的,那他自身的穩定性、健壯性就顯的無比重要,下面我們來看看消息隊列怎么去保證可用性的。

2、消息隊列的基本構成

分析高可用特性前先復習下消息隊列的基本組件,無論是哪一種類型的消息隊列,基本都包含以下構成:

  • Broker:消息服務器,以服務的形式運行在server端,給各個業務系統提供核心消息數據的中轉服務。
  • Producer:消息生產者,業務的發起方,負責生產消息傳輸給broker。
  • Consumer:消息消費者,業務的處理方,負責從broker獲取消息并進行業務邏輯處理
  • Topic:主題模塊,發布/訂閱模式下的消息統一匯集地,不同生產者向topic發送消息,由MQ服務器分發到不同的訂閱者,實現消息的廣播
  • Queue:隊列,PTP模式下,特定生產者向特定queue發送消息,消費者訂閱特定的queue完成指定消息的接收。
  • Message:消息體,根據不同通信協議定義的固定格式進行編碼的數據包,來封裝業務數據,實現消息的傳輸。

上圖中以kafka為例子,這是典型的集群模式,Kafka通過Zookeeper管理集群配置,選舉leader,以及在Consumer Group發生變化時進行rebalance。Producer使用push模式將消息發布到broker,Consumer使用pull模式從broker訂閱并消費消息

  • producer 負責生產消息
  • consumer 負責消費消息
  • broker 消息服務器,提供消息核心的處理工作
  • zookeeper 用于生產者和消費者的注冊與發現

3 高可用性架構保證

了解了一個消息隊列的構成之后,我們來看看這種結構是怎么保障高可用性的。
首先,高可用是指系統的出錯概率和無故障運行時長,從消息隊列角度出發,至少要保證一下幾點:

  • 低消息丟失率:消息可靠性也是衡量消息中間件好壞的一個關鍵因素,尤其是在金融支付領域,消息可靠性尤為重要。
  • 低故障率:消息中間件的可用性是指無故障運行的時間百分比,通常用幾個 9 來衡量,如 99.99% 就是一個不錯的指標。
  • 多副本容錯能力:一般會要求多副本及強一致性,多副本可以保證在 master 節點宕機異常之后可以提升 slave 作為新的 master 而繼續提供服務來保障可用性。

3.1 RocketMQ

以為RocketMQ為例,集群模式如下:

  • 多master 模式
  • 多master多slave異步復制模式-
  • 多 master多slave同步雙寫模式。
  • Name Service 集群: RocketMQ 的 "中央大腦 " , RocketMQ 的服務注冊中心,集群模式確保它的可用性。
  • Produer 集群
  • Consumer 集群:避免單例的消費服務故障導致消息堆積。
    多master 多slave模式部署架構圖:

Producer 與 NameServer集群中的其中一個節點(隨機或者RR選擇)建立長連接,定期從 NameServer 獲取 Topic 路由信息,既可以從 Broker Master 訂閱消息,也可以從 Broker Slave 訂閱消息。

3.2 Kafka

Kafka集群中包含如下組成部分:

  • 幾個消息生產者Producer(可以是業務的Web程序、定時任務服務,其他下游服務的請求等)
  • 一個broker組(Kafka支持橫向擴展,一般來說broker數量越多,集群吞吐率越高)
  • 一個消費組 Consumer Group,在資源充足的情況下,消費者越多,消費效率越高,性能也就越好
  • 一個Zookeeper集群:保證消費者和生產者的注冊和訂閱,避免業務之間的耦合,也提高了可用性。
    兩個關鍵點:

Kafka通過Zookeeper管理集群配置,選舉leader,以及在Consumer Group發生變化時進行rebalance。

Producer使用push模式將消息發布到broker,Consumer使用pull模式從broker訂閱并消費消息。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2023-05-12 08:19:12

Netty程序框架

2021-06-30 00:20:12

Hangfire.NET平臺

2020-11-10 10:48:10

JavaScript屬性對象

2021-06-04 09:56:01

JavaScript 前端switch

2021-01-29 18:41:16

JavaScript函數語法

2021-02-02 18:39:05

JavaScript

2023-09-06 14:57:46

JavaScript編程語言

2020-12-08 08:09:49

SVG圖標Web

2021-05-18 08:30:42

JavaScript 前端JavaScript時

2021-06-24 09:05:08

JavaScript日期前端

2021-09-27 09:18:30

ListIterato接口方法

2021-01-26 23:46:32

JavaScript數據結構前端

2021-03-05 18:04:15

JavaScript循環代碼

2021-03-09 14:04:01

JavaScriptCookie數據

2024-04-19 14:23:52

SwitchJavaScript開發

2023-07-30 15:18:54

JavaScript屬性

2021-02-26 20:01:57

SVG濾鏡元素

2023-05-08 08:21:15

JavaNIO編程

2024-01-30 13:47:45

2021-11-26 11:10:07

JavaScript 節點導航
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人99久久亚洲综合精品 | 久久久久久久久久性 | 日韩精品免费视频 | 日本免费一区二区三区 | 狠狠的操 | 日韩成人在线播放 | 国产精品成人一区 | 国产日产久久高清欧美一区 | 四虎永久在线精品免费一区二 | 色毛片 | 亚洲精品中文字幕中文字幕 | 成人教育av | 亚洲国产成人精品女人久久久 | 久久中文免费视频 | 精品国产一区二区三区久久 | 九九国产 | 伊人春色在线观看 | 波多野吉衣久久 | 日韩精品人成在线播放 | 九九久久国产精品 | 久久精品亚洲精品 | 欧美激情久久久久久 | 亚洲性网 | 夜夜精品浪潮av一区二区三区 | 二区在线观看 | 91久久精品国产91久久 | av中文字幕在线 | 亚洲高清一区二区三区 | 国产一级视频在线播放 | 黄色毛片免费视频 | 在线播放国产一区二区三区 | 久久99国产精品 | 久久久高清 | 一区二区国产精品 | 亚洲国产一区二区视频 | 福利片在线观看 | 成人在线视频免费观看 | 国产一区二区三区免费 | 天天曰夜夜操 | 91精品国产91久久综合桃花 | 殴美成人在线视频 |