使用ConnectableFlux在elasticsearch上進行後臺批處理 - Jeroen van Wilgenburg

banq發表於2020-01-18

我們有一個Project Reactor應用程式,有很多透過id進行的單個get / insert操作,導致Elasticsearch叢集上的負載非常高,根據ID新增批處理讀取是一件非常繁瑣的事情,以至於我正在尋找其他解決方案。我最終想出了一個使用ConnectableFlux的解決方案。
場景是:每條訊息都會從elasticsearch中檢索文件,然後使用這個訊息中的資訊進行更新,然後再插入Elasticsearch中。當訊息在10秒鐘之內得到處理時,延遲不是什麼大問題。不好的是,我們的Elasticsearch叢集承受著壓力。峰值負載下的響應時間超過250毫秒。最終導致訊息處理過程中的幾分鐘延遲。
所有程式碼示例均在github上可用。我在本文中使用的程式碼段是經過簡化的版本(具有更少的日誌記錄和文件),以提高可讀性。源儲存庫還包含用於建立測試資料和執行效能測試的所有指令碼。它基本上是一個標準的Spring Initializr – Spring Boot應用程式。
詳細點選標題見原文。

相關文章