首頁 >後端開發 >Golang >是否可以在 Go 中建立一個既使用訊息流(來自 Kafka)又讀取 REST API 請求的服務?

是否可以在 Go 中建立一個既使用訊息流(來自 Kafka)又讀取 REST API 請求的服務?

王林
王林轉載
2024-02-12 18:06:05897瀏覽

是否可以在 Go 中创建一个既使用消息流(来自 Kafka)又读取 REST API 请求的服务?

問題內容

我最近讀了一篇文章《大規模微服務之間共享資料》

這張圖片是關於非同步連結的。

如果我沒記錯的話,這張圖中的訂單頁面服務似乎能夠讀取來自 Kafka 的訊息流,並且還可以讀取來自前端應用程式的 REST API 請求。

所以,我想知道是否可以寫一個可以同時完成這兩個任務的服務:

  • 讀取來自 Kafka 的訊息流
  • 讀取 REST API 請求

僅在 1 個服務中,例如在 Go 中。

這是否是個好主意?

解決方法

是的,您絕對可以編寫一個從 Kafka 消費並公開 REST 端點的 Go 服務。然而,這不是一個理想的設計決策。

基於Kafka的串流媒體系統允許生產者和消費者之間進行非同步通訊。然而,基於REST API的系統在呼叫者和被呼叫者之間進行同步通訊。

同步和同步模式通訊之間的可用性保證是不同的。基於 Kafka 流的系統將具有與 REST API 不同的可用性保證。在串流系統中,我們關注的是訊息處理的吞吐量,而在端對端的同步通訊中,延遲是主要關注點(你不想讓呼叫者等待很長時間才能得到結果) .

如果我們將這兩種類型的系統放在一個服務中,就很難了解該服務的可用性。此外,服務的非同步部分或同步部分可能會在另一方的嘈雜鄰居中發揮作用,從而使服務不可用。

因此,一般來說,建議將基於 REST 的 API 和 Kafka 流作為兩個獨立的服務。

以上是是否可以在 Go 中建立一個既使用訊息流(來自 Kafka)又讀取 REST API 請求的服務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除