Architecture 微服务-一个域和多个功能,以不同的速度扩展
我是DDD和微服务方面的新手,我想了解一些如何处理这种情况的指导 假设我有一个带有命令的系统。每个订单可以有多个项目。所以我认为这将是一个特定的领域 然后,当我查看更多订单时,我发现我们将提供以下服务:Architecture 微服务-一个域和多个功能,以不同的速度扩展,architecture,domain-driven-design,microservices,Architecture,Domain Driven Design,Microservices,我是DDD和微服务方面的新手,我想了解一些如何处理这种情况的指导 假设我有一个带有命令的系统。每个订单可以有多个项目。所以我认为这将是一个特定的领域 然后,当我查看更多订单时,我发现我们将提供以下服务: 订单中的每个项目都是从不同的仓库收集的,并且每个项目的状态(例如,已准备好、移动到收集点)以及ETA都会显示给客户,供其订购 收集所有物品后,我们会定期更新订单的状态、预计到达时间和gps位置 所以orders有API来下订单并获取订单详细信息。但也订阅了所有其他系统,这些系统发送项目收集和
- 订单中的每个项目都是从不同的仓库收集的,并且每个项目的状态(例如,已准备好、移动到收集点)以及ETA都会显示给客户,供其订购
- 收集所有物品后,我们会定期更新订单的状态、预计到达时间和gps位置
谢谢 你陷入了专注于数据而不是上下文的困境。 数据存储库的重点是序列化上下文,仅此而已。因此,跨上下文是否存在数据复制并不重要,只要复制不是因为上下文定义不好 例如,您的订单上下文可能包含订单描述,而在交付上下文中,邮政标签可能需要该描述。您将在两个位置保存相同的描述,这没关系。您可能会决定在将来向邮政标签添加“delivery Id”,因为您有单独的上下文,所以此添加将是微不足道的,并且不会以任何方式影响您的订单上下文 我不明白你所说的“10个订单api实例或50个通知处理程序”是什么意思。所以我无法解决这个问题 所以orders有API来下订单并获取订单详细信息。但也订阅了所有其他系统,这些系统发送项目收集和订单交付位置和进度的更新 订单上下文不需要处理收集项目、交付或位置。或者他们的事件。您需要一个
交付上下文
,也可能需要一个收集上下文
总之,在不同的上下文中保存相同的数据是可以的,只要它在普遍存在的语言中是有意义的。另外,根据系统中的主要功能(订单、收集和交付)设计上下文