【问题标题】:How to push the result of an asynchronous REST call to the client using REST and Kafka如何使用 REST 和 Kafka 将异步 REST 调用的结果推送到客户端
【发布时间】:2017-01-21 23:36:54
【问题描述】:

我想部署一组可扩展的微服务。每个服务都应该通过 REST 相互通信。我还需要请求第三方服务,这些服务会很慢而且不稳定。 所以我想出了让它事件驱动并使用 apache kafka 的想法。

类似:

WebClient_X--request--->LoadBalancer--forward-->A-Service_1--request--->ThirdPartyService

A_Service_1 需要轮询 ThirdPartyService 以获取结果并将其写入 kafka。

A_Service_1--->卡夫卡

现在呢?

如何将存储在 kafka 主题中的结果发送回请求的 WebClient_X。 记住: - A-Service 在 LB 后面部署了 N 次。 - A-Service_1 实例返回一个 Response.created(uuid) 给 WebClient

解决方案是让 WebClient 使用 kafka 主题。但这似乎是一个愚蠢的想法。

【问题讨论】:

    标签: java rest apache-kafka microservices


    【解决方案1】:

    经过深思熟虑,我想到了以下想法:

    a_service 的所有实例均等地使用 Kafka 主题(不平衡)

    结果存储在缓存中(本地)

    webclient 需要使用 UUID 轮询结果。

    以后我会用redis集群或者集群memcache来代替缓存。

    轮询的替代方案是 websockets。但这似乎有一些缩小。

    【讨论】:

      猜你喜欢
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      相关资源
      最近更新 更多