我是 nginx 新手,想知道它是否可以幫助我解決我們遇到的用例。
我有 n 個節點,它們從具有相同組 id 的 kafka 主題中讀取,這意味著每個節點都有不相交的資料,由某個鍵磁區。
Nginx 無法先驗地知道哪個節點具有對應于哪些鍵的資料。但是我們可以構建一個 API 或擁有一個 redis 實體,它可以告訴我們給定密鑰的節點。
有沒有辦法 nginx 可以合并這種第三方資訊來路由請求?
我也歡迎任何答案,即使它不涉及 nginx。
uj5u.com熱心網友回復:
Nginx 無法先驗知道哪個節點有資料對應哪個鍵
Nginx 不需要知道。您需要在 Kafka Streams RPC 層中使用Interactive Queries執行此操作。(Spring-Kafka 有一個InteractiveQueryService介面,順便說一句,可以從 Spring Web 中使用)。
如果您想為用戶提供 KStreams HTTP/RPC 端點的單個地址,那么這將是反向代理的標準Nginxupstream定義,它將路由到任何后端服務器,這些服務器反過來與自己通信以獲取必要的鍵/值,并將回應回傳給客戶端。
我不知道 Kafka 是如何磁區的
您可以查看源代碼并看到它使用了一個murmur2哈希,它在 Lua 中可用,并且可以在 Nginx 中使用。
但同樣,這是一個你應該避免的兔子洞。
其他選項,使用 Kafka Connect 將資料轉儲到 Redis(或您想要的任何資料庫)。然后撰寫一個非常相似的 HTTP API 服務,然后(可選地)指向 Nginx。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/498026.html
標籤:nginx 阿帕奇卡夫卡 url路由 nginx-反向代理
