Restful API和事件驱动的微服务

5
在事件驱动的微服务系统中,微服务也是restful API通常是一种惯例或最佳实践吗?
在事件驱动的微服务中,通常描述为某些事件被触发,其他一些微服务响应这些事件并执行某些操作。在这种情况下,似乎没有"资源"的概念,就像restful API中那样。如果使用restful API构建系统,那么这个系统可以被称为微服务系统吗?
在事件驱动的微服务背景下,restful的概念是否仍然适用?当我开始学习事件驱动的微服务时,我对这两个概念感到有些混淆,不确定自己是否正确掌握了概念。
2个回答

9
在事件驱动的架构中,微服务不通过REST API进行通信,而是通过消息传递框架(如RabbitMQ、Kafka等)进行通信。正如您所指出的那样,微服务会对其监听的特定主题/频道上接收到的消息做出反应。
如果微服务关闭,则消息会在消息总线中累积,并且会由相同的微服务(当其重新启动时)或其他微服务进行处理。
如果它们通过REST API进行通信并且某个微服务关闭,则需要使用指数退避策略重试请求并处理许多其他事项。文章很好地解释了区别。
微服务系统可以完全使用REST微服务构建。它只是不遵循事件驱动的方法,而更像是同步(请求/响应)模型。您的微服务系统设计应该与应用程序的要求直接相关。
通常会采用混合方法:您通过REST API与某些微服务进行通信(例如,通过身份验证/授权微服务),因为您需要尽快从它们那里获得响应。对于其他微服务,您可以通过事件进行通信,通常是在出现类似记录、指标、存储等快速处理事件时。

-1
事件驱动和Restful API是两个不同的概念。Restful API主要用于同步通信,而事件驱动则是异步通信的模式。一个微服务可以是事件驱动的,也可以支持Restful API,但两者的目标不同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接