2017-05-10 113 views
0

考慮一個「dockerized」應用程序,它會消耗一個單獨的 kafka主題,並且會在其他應用程序使用的許多kafka主題上生成,我們稱之爲這些服務。如何在消費相同的kafka主題時複製微服務?

應用程序通過在其唯一的消費者主題中生成消息來查詢服務。

查詢消息由頭部和有效載荷組成。除此之外,標題包含應該生成響應的主題信息。

服務產生一個響應並將其發送給完成請求週期的應用程序使用者主題。

消費者和生產者在啓動時設置併發送「ping」消息來初始化/授權主題生產者。

所有的作品都非常適合單個docker實例。

現在我想擴大雙方,並能夠運行應用程序和服務的幾個碼頭實例。

考慮到響應必須始終到達負責請求的應用程序實例,主題名稱和分區複製方面的最佳方法是什麼?

回答

0

我不會在這裏討論分區問題,因爲這歸結於您自己對排序​​的要求,我無法真正推斷出足夠的信息來進行任何有教育意義的猜測。

關於水平縮放您的消費者/生產者,我希望可以提供幫助。

簡單的方法: 你提到你的郵件上有一個標題,我會包含額外的元數據,比如「SENDER」。將所有消息發佈到單個主題,但將每個服務註冊爲使用者組 - 使用服務名稱。

如果您的服務收到一條不適合它的消息(正在檢查SENDER,請確認)。否則,處理該消息。

+0

感謝您的回答。所以每個消費者都會有一個ID,並檢查是否爲他們提供了答覆。但在這種情況下,我們是不是在消耗n(實例數)次?這會有效嗎?你提到的很簡單,什麼是更難的方法? :D謝謝 – brunofitas

+0

您可以使用Docker容器的ID並創建一個新的主題,以便在每次擴展時接收......然後您永遠不會碰到任何衝突。你需要找到清除冗餘主題的方法。 – Rawkode

相關問題