gpt4 book ai didi

rest - 事件驱动架构的 API 网关

转载 作者:行者123 更新时间:2023-12-03 18:02:52 30 4
gpt4 key购买 nike

我们正在尝试将我们的单体核心拆分为微服务,并添加一些使用消息系统(例如 Kafka)相互连接的新服务。

下一阶段是创建 API 端点,以便通过 Api 网关在移动应用程序和微服务之间进行通信。

开发 API 网关以向/从微服务传输数据的好解决方案是什么?

  • 使用消息系统作为请求-回复之一(转换请求
    API网关进入消息命令,等待消息响应
    具有状态或必要数据的系统)?
  • 在必要的微服务(例如使用 REST.li )上创建 REST 端点以发送或
    通过网关获取数据;使用消息系统来保证数据的一致性
    基于微服务产生的事件?

  • 感谢您的建议和一些想法

    最佳答案

    我想说第二个选项在很多情况下听起来更合理。

    事件驱动解决方案主要适用于有多个后续进程的情况,因此创建实体可以通过Rest端点,而该实体的进程可以通过事件异步。

    为了说明,付款流程可能如下所示:

    1-) API GW -> Payment Rest Controller -> Payment Service - Create Payment
    支付服务创建一个支付实体,然后发布“payment.created”事件。
    2-)队列->支付流 Controller ->服务-更新支付
    Payment Stream Controller 使用“payment.created”事件,然后检查余额,并将支付实体更新为 Confirmed。更新实体后,它可以发送“payment.confirmed”事件。
    ...

    另一方面,我的意思是第一个选项,维护一个非常解耦的系统会非常困难,因为你需要知道所有的交换或队列。

    但是,我认为在某些情况下结合两种解决方案可能会更好。例如,您的 API 被一个流量非常高的客户端公开,并且该 API 的任务非常明确。在这种情况下,使用 MQ 作为此 API 的缓冲区将是完美的。

    关于rest - 事件驱动架构的 API 网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43598939/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com