【发布时间】:2018-02-15 23:18:08
【问题描述】:
我是微服务的新手。我正在尝试创建一个微服务架构,其中有一个 API 网关应该只接收请求并相应地创建一个事件。然后该事件将被一个微服务拦截,该微服务将所需的数据存储到数据库中。
也许我在设计上犯了一个错误,但我希望在客户端调用 API 网关后,请求会异步进行,并且无法保证数据的一致性。
那么客户端如何知道资源是否已创建以及它的 id 呢?
客户端也应该监听事件吗?
这是正确的架构还是我走错了路?
提前感谢您的 cmets!
注意:我没有使用任何结构化框架。我喜欢它们,但这主要是一个实验,我想保持一切简单。无论如何,如果您的建议涉及 spring 或任何 java 框架,我很乐意。
(编辑)
另一个有趣的点。假设 API 响应是异步的,如果客户端需要插入两个资源(由它们自己的 id 标识)组成的聚合数据,如何通过事件驱动的架构来实现?
【问题讨论】:
-
我发现了两个与我的问题相关的有趣话题:microservices async operations 和 Acknowledgement to clients on asynchronous microservice
-
您可以从两个不同的 PoV 中看到它。要么您的客户端监听事件,但您有点失去异步部分的好处,或者您让您的客户端请求您的网关了解状态和 ID
-
感谢@DamCx。我也在想,如果我的数据可以聚合,例如: * POST /user * POST /group * POST /usergroup 在第三次调用中,客户端必须指定用户 ID 和组 ID。客户端如何知道 id?
标签: java microservices