2

拥有多个公开 REST API 的后端模块,其中一个模块需要通过其 API 调用其他模块并立即响应。

一种解决方案是直接从这个“顶级”模块调用 REST API。问题是它会产生耦合,本身不支持缩放或故障转移。

一种总线(JMS、ESB)允许通过避免需要模块已知的端点来解耦模块。他们只与公共汽车“交谈”。

您将使用什么来通过总线实现快速响应(另一个限制是您没有多播,因为它可以部署在云中)?

仍然依赖 REST api 是否合理还是 JMS 侦听器会更好?我想到了 JMS、Camel、ESB。你知道使用这种架构的公司吗?

ps:例如,一个模块可能是在tomcat 实例上运行的java 战争。

4

1 回答 1

3

如果您的顶级模块“知道”调用其他模块,那么是的,您有一个耦合,这可能是不可取的。相反,如果您的顶级模块通过链接、表单和/或来自中间模块的响应的重定向被定向到其他模块,那么您将拥有与 JMS 解决方案相同数量的耦合。

您需要可伸缩性和故障转移(不是以前)时,添加缓存反向代理,例如F5Varnish。这将比任何基于 JMS 的解决方案更具可扩展性和弹性。

更新

在您想要聚合和/或转换来自其他模块的响应的情况下,您只需创建一个组合服务。顶部模块调用中间模块,中间模块对后端模块进行一次或多次调用,组合结果并发送适当的响应。与基于 JMS 的定制解决方案相比,在每个跃点之间使用 HTTP 缓存(即 Top -> Varnish -> Middle -> Varnish -> Backend)是一种更简单、更有效的数据缓存方式。

于 2012-02-28T22:09:34.210 回答