【问题标题】:Restful API and Event Driven microservicesRestful API 和事件驱动微服务
【发布时间】:2021-04-17 04:03:49
【问题描述】:

在事件驱动的微服务系统中,微服务也是 RESTful API 是通常还是最佳实践?

在事件驱动的微服务中,它通常被描述为引发一些事件和一些其他微服务来响应这些事件并执行一些操作。在这种情况下,似乎没有RESTful API中的“资源”概念。如果一个系统是用restful API搭建的,这个系统可以称为微服务系统吗?

在事件驱动的微服务上下文中,restful 的概念是否仍然适用?当我开始更多地了解事件驱动的微观并且不确定我是否掌握了正确的概念时,我发现自己对这两个有点混淆了。

【问题讨论】:

    标签: rest microservices


    【解决方案1】:

    事件驱动和 Restful API 是两个不同的概念。 Restful API 多采用同步通信,事件驱动是异步通信方式。微服务可以是事件驱动的,也可以支持 Restful API,但两者都服务于不同的预期。

    【讨论】:

      【解决方案2】:

      在事件驱动架构中,微服务不通过 REST API 进行通信,而是通过消息传递框架(RabbitMQ、Kafka 等)进行通信。正如您正确指出的那样,微服务会对在他们收听的特定主题/频道上收到的消息做出反应。

      如果微服务关闭,消息会在消息总线中累积,并由同一个微服务(当它恢复时)或由另一个微服务处理。

      如果他们要通过 REST API 进行通信并且微服务已关闭,您需要使用指数退避策略重试请求并处理许多其他事情。 This 文章很好地解释了差异。

      可以完全使用 REST 微服务构建微服务系统。它只是不遵循事件驱动的方法,而更像是一个同步(请求/响应)模型。您的微服务系统的设计应该与您的应用程序的需求直接相关。

      通常会使用混合方法:您通过 REST API 与一些微服务进行通信(例如使用认证/自动化微服务),因为您需要尽快得到它们的响应。对于其他事件,您可以通过事件进行通信,通常是当您有即发即弃的事件时,例如日志记录、指标,也许还有存储。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-18
        • 2018-02-15
        • 1970-01-01
        • 2020-04-27
        • 2021-02-03
        • 1970-01-01
        • 2019-11-26
        • 2017-09-03
        相关资源
        最近更新 更多