學習筆記:NATS--自適應邊緣和分散式系統的連線技術。(更新中)

ガヴリール發表於2024-03-29

目錄
  • 1. NATS: 自適應邊緣和分散式系統 的連線技術
    • nats可以做什麼:
    • 為什麼需要NATS技術:
    • NATS連線技術的特性:
  • 2. 什麼是NATS:面向訊息的中介軟體
    • nats用來做什麼:
    • NATS 服務基礎設施是什麼?
    • NATS 客戶端如何連線到 NATS 伺服器?
    • NATS是如何設計訊息傳遞的?
    • 該設計的好處
  • 3. 基於主題的訊息傳遞
    • 主題
    • 主題字串的萬用字元
  • 4. 核心NATS
    • 核心NATS是什麼?
    • 1、釋出和訂閱
      • NATS如何釋出和訂閱?
      • NATS的訊息組成:
    • 分散式系統中的請求-響應模式:
    • 2、請求和響應
      • NATS如何實現請求-響應模式?
      • 無響應者的情況:

1. NATS: 自適應邊緣和分散式系統 的連線技術

nats可以做什麼:

負責定址,發現和交換訊息,這些訊息提供給分散式系統,用來驅動常見的模式:詢問和回答(微服務)、建立和處理(增刪改)、流處理(訊息加工)

為什麼需要NATS技術:

隨著微服務、功能函式和流處理被要求轉移到邊緣,現有(用於連線移動前端和靜態後端的1:1通訊模式,如HTTPorGRPC)技術受到了挑戰。

NATS連線技術的特性:

  1. M:N連線:NATS根據主題而不是主機名和埠來管理定址和發現。

  2. 在任何地方部署安全混合部署

  3. 可擴充套件的部署:NATS基礎設施和客戶端實時溝通所有拓撲變化。即當NATS部署發生變化時,NATS客戶端不需要改變

  4. 適應性:nats支援更多元件的利用和更多資料的處理。nats支援M:N的通訊模式。nats提供的定址和發現功能與DNS所繫結。以上特性決定了nats對新系統和新需求的適應性。

2. 什麼是NATS:面向訊息的中介軟體

nats用來做什麼:

  1. 構建分散式和可擴充的C/S應用;

  2. 一般方式實時儲存和分發資料。(相容各自環境和語言)

NATS 服務基礎設施是什麼?

NATS 服務由一個或多個 NATS 伺服器程序提供,這些程序配置相互互連,提供NATS 服務基礎架構。(叢集,具有可擴充性)

NATS 客戶端如何連線到 NATS 伺服器?

  1. URL: 一個 'NATS URL'。這是一個字串(以 URL 格式),指定可以訪問 NATS 伺服器的 IP 地址和埠,以及要建立的連線型別(普通 TCP、TLS 或 Websocket)。

  2. 認證(如需登入):認證 前端傳來的資訊,用於向 NATS 伺服器標識自己。 NATS 支援多種身份驗證方案(使用者名稱/密碼、去中心化 JWT、令牌、TLS 證書和帶挑戰的 Nkey)。

NATS是如何設計訊息傳遞的?

  1. 釋出者:對資料進行編碼、框架化為訊息,最後發出。

  2. 訊息的定址和標識過程:依賴主題字串,而非網路位置(域名,IP,Port)。

  3. 訂閱者:接收訊息,解碼並處理訊息。

該設計的好處

  1. 各程式可共享通用的訊息處理程式碼(複用)
  2. 各程式之間隔離了資源和相互依賴關係(解耦)
  3. 可透過增加訊息處理方法進行擴充套件。

3. 基於主題的訊息傳遞

主題

是形成名稱(用於查詢物件)的字串。建議使用ASCII字元。NATS的釋出和監聽訊息嚴重依賴_Subjects_。

主題層次結構

主題字串的萬用字元

  1. 匹配單個標記:第一個萬用字元是 *,它將匹配單個標記。(可在同一主題重複出現)

  1. 匹配多個標記:第二個萬用字元是>,它將匹配一個或多個標記,並且只能出現在主題的末尾。(分接頭:為 > 建立一個訂閱者,可監控NATS叢集上的所有訊息)

4. 核心NATS

核心NATS是什麼?

核心NATS是NATS服務基礎設施提供的基本功能和服務質量(QoS)集。其功能是釋出/訂閱,具有基於主題的定址和佇列,以及“最多一次”服務質量。(不包括nats-server啟用JetStream後提供的功能和服務)

1、釋出和訂閱

NATS如何釋出和訂閱?

NATS實現了1:N通訊的訊息分發模型。在此模型中,訂閱者從特定主題中持續監聽訊息,而釋出者隨時向特定主題傳送訊息。訂閱者可以透過主題字串萬用字元 註冊一系列的主題(即監聽多個群聊)。此1:N的通訊模式可被稱為分發

NATS的訊息組成:

  1. 主題
  2. 以二進位制陣列形式載荷的內容
  3. 頭部header
  4. 可選項:回覆地址

訊息的預設最大載荷為1M,可自行增加至64M

分散式系統中的請求-響應模式:

即,程序傳送請求後,或是以非同步方式接收響應,或是超時等待。

此模式需要具備以下特性:位置透明性,可擴充套件性,可觀測性。

2、請求和響應

NATS如何實現請求-響應模式?

  • 使用NATS核心的通訊機制:釋出-訂閱。訂閱者隨時用自己的收件箱 將請求傳送到特定主題中。持續監聽特定主題的釋出者用發來的收件箱將響應回覆給訂閱者。
  • 多個NATS響應者會自動地形成動態佇列組。因此,手動去新增或移除訂閱者,影響不了響應者佇列對訊息的傳送行為。
  • NATS程式在連線斷開前會排空緩衝,以減小程序規模。
  • 基於釋出-訂閱機制,NATS程式可以檢視請求和響應,以測量延遲、監視異常、直接可擴充套件性等。
  • NATS允許多個響應者,其中第一個送達的響應被利用,額外的響應被丟棄。這可以減少響應的延遲和抖動

無響應者的情況:

當請求被髮送到一個沒有訂閱者的主題時,如果客戶端設定了訊息的可選項:no_responder messages ,那麼則會立刻收到一個狀態碼為503,沒有body的回覆。

相關文章