单个Lagom服务只能有一个实体吗?我找不到在单个服务中使用两种实体类型的示例。
答案 0 :(得分:4)
单个Lagom服务可以拥有任意数量的实体,没有限制,只需为每个实体调用PersistentEntityRegistry.register
。
也就是说,有一个原因就是没有具有两种实体类型的例子,那就是微服务背后的一般原则是微服务应该做一件事(做得好)。当微服务具有多个实体时,微服务实际上可能不仅仅是一个实体。聚合(实体)通常是一个很好的清晰边界,可以在微服务周围绘制。
但是,这就是说,将每个实体分离成一个单独的微服务会导致复杂性和性能的额外成本。这是一个折衷方案,我认为这不是一个非常值得黑白分明的领域。如果你有两个非常密切相关的实体,你确信这些实体的服务只会由一个开发团队,并将始终具有相同的扩展和失败要求,然后将它们放在同一服务中可能不会有什么坏处。请记住,事后分开服务通常比预先分开更困难 - 而且,通过在不同的问题之间设置硬性服务边界,您通常会得到更好的设计,因为您必须付出更多的努力来思考关于组件在不同服务中的接口与在同一服务中的组件之间的接口。