问题 微服务:REST与消息传递


我听说亚马逊使用HTTP作为基于微服务的架构。另一种方法是使用RabbitMQ或Solace系统之类的消息传递系统。我个人有基于Solace的微服务架构的经验,但从未使用过REST。
知道像亚马逊,Netflix,英国Gov等各种大联盟实施使用的是什么?
其他方面是,在微服务中,需要以下事项(除了其他事项):
* 模式匹配
*异步消息传递..接收系统可能已关闭
*发布订阅
*缓存加载事件..即在启动时,服务可能需要加载来自其他几个服务的所有数据,并且应该在数据完全加载时得到通知,以便它可以“知道”它现在可以服务了要求
这些方面通过消息而不是REST自然完成。为什么要使用REST(公共API除外)。谢谢。


2980
2017-12-07 05:49


起源

HTTP,REST是规范。 RabbitMQ / Solace是消息代理。您的问题是“基于HTTP / REST的服务的应用是什么”? - k1133
嗯,也许使用REST应该使用的情况和使用消息的地方,或者组合......为什么这样而不是那种 - Apurva Singh


答案:


我过去遵循的一个标准是当关键要求是速度(并且数据丢失并不重要)时使用Web服务,而当关键要求是可靠性时使用消息传递。就像你说的那样,如果接收系统关闭,一条消息将排在队列中,直到系统重新启动来处理它。如果它是一个REST端点而且它已经关闭,那么请求就会失败。


13
2017-12-07 06:17



+1,您可能想要考虑同步通信(REST)的耦合含义,如果一个失败,其所有依赖都将失败,因此除了丢失数据之外,它还会导致连锁反应,从而导致整个系统崩溃。 - Sean Farmar
@SeanFarmar这就是我所说的Domino效应。一个相关的问题是Ripple Effect,其中一个服务的变化可能需要改变下游服务。 - MattDavey
有时你可能想要这种行为。例如,如果您期望快速同步响应并且出现超时或其他服务器错误,则可以相应地处理它。有些流程不能容忍等待。我确信还有其他类似的用例。 - Bill Rosmus


REST API假定仅使用HTTP。它是相当石器时代的技术,不接受异步。消息。要在那里插入消息,我会考虑WebSockets网关 - 最终虚拟陈述


-3
2017-07-03 07:11