【发布时间】:2018-04-04 04:48:00
【问题描述】:
目前我正在努力将单体 REST api 拆分为微服务。我要介绍Domain Driven Design(正在学习中)。我目前最关心的是实现Repository。
域 UBIQUITOUS LANGUAGE 定义 Profile 实体(社交媒体资料,例如 Twitter 资料)。我正在考虑提取Profile 以分离微服务。要查询个人资料,我会介绍ProfileRepository。
包括 API 网关在内的其他微服务有自己的 Profile 搜索模式。我应该如何设计存储库以满足所有这些搜索模式。我应该为每个查询创建find 方法吗?我应该引入某种动态查询语言吗?
在单体架构中,我可以创建多个存储库。每个用例一个。在微服务架构中,每次其他微服务需要新查询时,我都需要更改负责 Profile 的微服务。
【问题讨论】:
-
没有什么是完美的。如果您的查询机制过于抽象,它将是灵活的,但很难优化性能。另一方面,如果您的查询都非常明确,那么微服务之间的耦合可能太强了。我认为您可以考虑的一种方法是使用基于消息的基础架构来复制在所有其他微服务中处理查询所需的信息。如果这不合适,那么您将不得不尝试在灵活性、性能和明确性之间取得良好的平衡。
标签: domain-driven-design microservices