【发布时间】:2015-03-03 15:53:43
【问题描述】:
在使用基于 Spring Data Rest 或 HATEOAS 的基于超媒体的微服务时,尝试找出如何处理关系的模式。
如果您有服务 A(讲师)和服务 B(课程),每个都作为独立的应用程序存在。
在两个服务之间建立关系的首选方法是什么。以一种不需要外部服务 ID 列的方式。每个服务可能有许多其他服务需要在同一个庄园中进行通信。
可能的解决方案(不确定路径是否正确)
每个服务都有一个带有 OneToMany 的第二个表,其中包含服务内的主要实体。该表将包含以下字段:
ID、entityID、rel、relatedID
然后在使用 Spring Data Rest 的相反服务中设置一个 find 查询连接表以查找匹配的记录。
我想要实现的主要目标是任何服务都可以与任何数量的其他服务建立关系,而无需了解其他服务。
【问题讨论】:
-
我认为,一旦您拥有每个 API 的不同版本,就会对每个 API 产生一些依赖性。也就是说,通过保存 API 引用并使用 SDR 使用这些引用 ID 构造指向其他 API 的链接来连接 API 并不是一个坏主意。
-
@Stackee007 我可能想错了,我的意图并不是真正需要 API 的版本。由于它的核心是 HATEOAS,因此客户将通过任何更改了解它需要什么。当然在合理范围内。至于关于保存参考的评论。你觉得有第二个表来保存 rel 是可以的吗?
标签: spring-data-rest hateoas spring-cloud microservices