Restful API 和事件驱动的微服务

sea*_*sea 5 rest microservices

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

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

在事件驱动的微服务背景下,restful 的概念还适用吗?当我开始更多地了解事件驱动的微观时,我发现自己对这两者有点混淆,并且不确定我是否正确理解了这个概念。

Cos*_*iță 10

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

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

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

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

通常,使用混合方法:通过 REST API 与某些微服务进行通信(例如使用身份验证/授权微服务),因为您需要尽快得到它们的响应。与其他事件相比,您可以通过事件进行通信,通常是在发生即发即忘事件时,例如日志记录、指标,也许还有存储。