訊息佇列Kafka「檢索元件」重磅上線!

阿里巴巴雲原生 發表於 2022-05-13
Kafka

作者:Kafka&Tablestore團隊

前言

還在為訊息佇列使用時,不能高效排查重複和失敗的訊息而困擾嗎?

還在為訊息佇列使用時,無法準確查詢訊息內容和定位問題而苦惱嗎?

。。。

訊息佇列 Kafka「檢索元件」來幫您~

本文對訊息佇列 Kafka「檢索元件」進行詳細介紹,首先通過對訊息佇列使用過程中的痛點問題進行介紹,然後針對痛點問題提出相應的解決辦法,並對關鍵技術技術進行解讀,旨在幫助大家對訊息佇列 Kafka「檢索元件」的特點及使用方式更加熟悉,以期可以幫助大家更有效的解決在訊息排查過程中遇到的痛點問題。

痛點問題介紹

在訊息佇列的使用過程中,業內預設的是假設訊息進入訊息佇列後,訊息是可靠的,丟失的概率也是低的。但實際應用中會面臨各種各樣的問題:

應用時面臨的痛點問題

  • 由於分散式系統的特性,訊息的失敗、重複是不可避免的,對於失敗和重複的排查,通常是依靠客戶端的日誌來推導,但如果規模龐大,客戶手動做這個事情的難度也會很大,這就會使訊息的可靠性受到挑戰;
  • 此外,較大的專案一般由多人或多團隊協作完成,訊息傳送和消費的程式碼實現方式也各異,這會給訊息最終是否成功完成使命帶來挑戰;
  • 除了對問題結果的排查外,訊息會不會在產生時就不符合預期呢?這同樣也是困擾客戶的難點之一。從目前訊息佇列的體系來看,還無法提供按照內容檢視的方式來排查,導致了業務的正確性排查難度較大。

簡單來說,訊息領域往往每條訊息都能代表具體的含義和動作,一旦出現失敗、丟失和錯誤,在業內現有的訊息佇列現狀下,很難排查具體問題,從而會導致定位整個上下游鏈路的問題難度較大。

技術側面臨的痛點問題

以上是客戶在訊息應用的場景中會面臨的問題。基於應用場景問題,在技術側同樣會面臨不少痛點,在處理訊息問題排查時:

  • 首先需要研發的程式碼投入、部署和運維,同時運維人員需要比較熟悉 Kafka 的使用,需要通過使用 Kafka 客戶端進行消費者消費,然後按照遍歷的方式進行訊息確認,從而確認訊息的存在;
  • 除了需要研發的程式碼投入、部署和運維外,可能還需要引入其他產品,如對接流計算,通過流計算遍歷訊息等。

更為麻煩的是,目前這種排查往往是非常頻繁的,經常以周、甚至以天為單位,會使得研發、部署和運維投入較高的時間成本;同時每次需要確認的元資訊都不一樣,會導致投入較大,而且靈活性也不高。

總結來說,訊息佇列在使用過程中對失敗和重複等問題排查時,一來在沒有較好的工具和方式完成對內容的檢索,排查難度較高,準確性和易用性都不足;二來需要投入較高的時間和人力成本,投入大且不靈活。這些問題都會給使用者在進行訊息問題排查時帶來不少困擾。

Kafka 檢索元件介紹

通過上述痛點問題的介紹可以看到,目前在訊息領域,對訊息排查等存在比較多的痛點問題,為了解決以上問題,阿里雲訊息佇列 Kafka 版重磅推出訊息檢索元件。下面對元件內容進行詳細介紹:

檢索元件簡介

訊息佇列 Kafka「檢索元件」是一個全託管、高彈性、互動式的檢索元件,具備萬億級別訊息內容檢索的秒級響應能力。

  • 主要面向運維人員故障排查和恢復場景,用於訊息相關的全鏈路訊息排查,包括訊息的傳送、重複生產和丟失校驗;主要功能包括支援訊息按 Topic 分割槽、位點範圍和時間範圍檢索,同時支援按訊息 Key 和 Value 關鍵字檢索等;
  • 主要用來解決業內訊息產品不支援檢索訊息內容的難題。

訊息佇列 Kafka「訊息檢索」藉助 Kafka Connect 功能及表格儲存(Tablestore)實現,通過 Connector 對 Topic 中的訊息進行轉儲,然後傳送到表格儲存中的資料表中,最後通過表格儲存索引功能提供訊息檢索的能力。

其核心是提供了完備的訊息內容檢索能力,可以快速定位問題,同時便捷操作、節省人力;當使用者使用時,在完成訊息佇列 Kafka 例項建立後,僅需簡單五步即可實現對 Kafka 檢索元件的應用:

 title=

下面簡要對訊息佇列 Kafka 版訊息檢索的操作步驟進行介紹。

檢索元件操作介紹

1)開通訊息檢索

首先開通某個例項下 Topic 的訊息檢索功能,以便根據需要對其 Topic 中的訊息進行檢索。步驟如下:

  • 登入訊息佇列 Kafka 版控制檯;
  • 在概覽頁面的資源分佈區域,選擇地域;
  • 在左側導航欄,單擊訊息檢索;
  • 在訊息檢索頁面,從選擇例項的下拉選單選擇需檢索 Topic 訊息所屬的例項,然後單擊開通訊息檢索;
  • 開通訊息檢索皮膚,填寫開通引數,然後單擊確定。

 title=

2)測試傳送訊息

開通訊息檢索後,可以向訊息佇列 Kafka 版的資料來源 Topic 傳送訊息,以此來排程任務和測試訊息檢索是否建立成功。

  • 在訊息檢索頁面,找到需要測試的目標 Topic,根據任務狀態在對應位置操作;
  • 在快速體驗訊息收發皮膚中傳送測試訊息。

 title=

3)搜尋訊息

  • 在訊息檢索頁面,找到目標 Topic,在其操作列,單擊搜尋;
  • 在搜尋皮膚,設定搜尋條件,在搜尋項下拉選單中選擇需要新增的搜尋項,單擊新增搜尋項,新增搜尋項並在值列設定搜尋資訊,然後單擊確定即可。

 title=

 title=

4)檢視訊息檢索任務詳情

  • 開通訊息檢索後,即可檢視自動建立的 Topic、Group、表格儲存例項名稱、表格儲存資料表表名等詳細資訊,也可以在詳情中直接進入表格儲存資料表;
  • 在訊息檢索頁面,找到目標 Topic,在其操作列,單擊詳情;
  • 在任務詳情頁面可以檢視到目標 Topic 相關訊息檢索的詳細資訊;也可以在基礎資訊區域的目標服務欄,單擊表格儲存,即可進入資料表詳情頁面檢視。

 title=

5)檢視消費詳情

支援檢視訂閱當前 Topic 的線上 Group 在 Topic 各個分割槽的消費進度,瞭解訊息的消費和堆積情況。

  • 在訊息檢索頁面,找到需要檢視消費進度的目標 Topic,在其操作列,單擊消費進度;
  • 如下圖,在消費詳情頁面,可以檢視 Topic 各分割槽的消費情況:

 title=

除以上功能外,在執行訊息檢索功能時,還可以實現暫停訊息檢索任務、啟用訊息檢索任務和刪除訊息檢索任務等操作。

Kafka 檢索元件技術解讀

之前訊息佇列 Kafka 版的訊息檢索方式僅支援根據消費位點或建立時間的兩種範圍來查詢,依靠 Kafka 系統本身無法很好的支援使用者對於通過關鍵字檢索訊息的需求。

為了更好的解決這個問題,Kafka 與 Tablestore 強強聯合,將 Kafka 訊息通過 Connector 匯入 Tablestore 的資料表中,利用 Tablestore 的能力實現關鍵字檢索。

 title=

下面對關鍵技術進行解讀:

Kafka Connect

Kafka Connect 的核心是為解決異構資料的同步問題。解決的思路是在各個資料來源之間加一層訊息中介軟體,所有的資料都經過訊息中介軟體進行儲存和分發。

 title=

這樣做的好處有以下兩點:

1)通過訊息中介軟體做非同步解耦,所有系統只和訊息中介軟體通訊;

2)需要開發的解析工具數量,也從原來的 n 平方個,變成線性的 2*n 個;Kafka Connect 則用於連線訊息系統和資料來源,根據資料的流向不同,連線可以分為 Source Connector 和 Sink Connector。

其原理也很簡單,Source Connector 負責解析來源資料,轉換成標準格式的訊息,通過 Kafka Producer 傳送到 Kafka Broker中。同理,Sink Connector 則通過 Kafka Consumer 消費對應的 Topic,然後投遞到目標系統中。在整個過程中,Kafka Connect 統一解決了任務排程、與訊息系統互動、自動擴縮容、容錯以及監控等問題,大大減少了重複勞動。

訊息佇列 Kafka 版提供了全託管、免運維的 Kafka Connect,用於訊息佇列 Kafka 版和其他阿里雲服務之間的資料同步。如下圖所示,可以看到訊息佇列 Kafka 版支援了表格儲存 Tablestore、Mysql Source Connector、OSS Sink Connector、MaxCompute Sink Connector 以及 FC Sink Connector 等主流的 Connector。如果使用者想要使用這些 Connector 進行資料同步,只用在訊息佇列 Kafka 控制檯的圖形介面上做幾個配置,就可以一鍵拉起 Connector 任務。

 title=

表格儲存 Tablestore

表格儲存 Tablestore 是構建在阿里雲飛天分散式系統之上的海量結構化資料儲存服務。基於飛天盤古分散式檔案系統作為儲存底座,採用儲存計算分離架構,彈性共享資源池設計,實現了一個雲原生的 Serverless 儲存產品。內建分散式索引系統,可根據寫入流量自動擴充套件構建索引所需的計算資源,支撐極高的寫入流量。同時優化了索引結構,能夠支援更快速的模糊查詢。存算分離架構、高吞吐實時索引等關鍵能力讓 Tablestore 能夠支撐 Kafka 中海量資料的寫入與高效搜尋,幫助快速有效檢索所需資訊。

 title=

技術領先性

Kafka+Kafka Connect+ 表格儲存 Tablestore 的雲原生資料應用解決方案,通過 Kafka Connect 作為實時處理任務觸發器,能夠實時接收到新傳送到訊息佇列叢集的資料,然後轉發到表格儲存 Tablestore。

作為後續資料流轉中的一環,Kafka Connect 除了保障資料的實時性以外,還解決了任務排程、與訊息系統互動、自動擴縮容、容錯以及監控等問題,大大減少了重複勞動。資料到了表格儲存 Tablestore 以後,藉助表格儲存的分散式儲存和強大的索引引擎,能夠支援 PB 級儲存、千萬 TPS 和毫秒級延遲的服務能力,同時支援全託管、高彈性、互動式的檢索元件,從而可實現秒級響應的萬億級別訊息內容檢索能力。

面向使用者的價值與優勢

Kafka 檢索元件功能不僅具備較強的技術優勢,同時還能為使用者的實際工作帶來更多便利:

1、排查成本低

只需要控制檯的簡單配置就能實現 Kafka 伺服器叢集內所有的訊息的檢視;

2、排查速度快

免開發、免資源評估、免部署、免運維;只要建立好檢索條件,即可實現秒級查詢響應;

3、排查準確性高

該檢索元件功能由訊息商業化團隊和 Tablestore 團隊核心研發聯合打造,依託於阿里云云原生的能力,檢索準確性高,可靠性和可用性可以得到很好的保障。

總結來說,Kafka 檢索元件功能在實際業務中具備如下優勢:

  • 快速定位問題,可實現訊息上下游產品的故障、異常快速恢復,減少業務資損;
  • 節省企業成本,減少運維、研發等人員投入;
  • 降低學習成本,對訊息產品的理解機制要求降低。

 title=

總結

阿里雲訊息佇列 Kafka「檢索元件」是訊息佇列領域內率先支援互動式訊息內容檢索的元件,具備免開發、免運維、高彈性的特點。對於在訊息領域中的中、重度使用者來說,阿里雲訊息佇列 Kafka「檢索元件」是日常排查訊息存在 & 正確性的利器。

 title=

點選此處,前往相關產品文件瞭解詳情!