Asp.net core 微服务web api应用程序域驱动设计:有大量重复数据正常吗?
所以我正试图掌握微服务。据我所知,每一项服务都应该是独立的。 在我的示例中,我有一个Asp.net core 微服务web api应用程序域驱动设计:有大量重复数据正常吗?,asp.net-core,microservices,asp.net-core-webapi,Asp.net Core,Microservices,Asp.net Core Webapi,所以我正试图掌握微服务。据我所知,每一项服务都应该是独立的。 在我的示例中,我有一个Unit.API和一个batch.API。Unit.API db包含大约1000000个不同的单元 现在,如果我想在Combat.API中计算/创建combatLog,我需要知道哪些用户使用了哪些单位 方法0:据我所知是错误的方法: 在控制器的post方法中,我获取所有UnitID作为参数,然后调用Unit.API,以获取单位 方法1:正确的方法?: 我在我的batch.API中有一个unit.API中每个单位的
Unit.API
和一个batch.API
。Unit.API db
包含大约1000000个不同的单元
现在,如果我想在Combat.API
中计算/创建combatLog,我需要知道哪些用户使用了哪些单位
方法0:据我所知是错误的方法:在控制器的post方法中,我获取所有UnitID作为参数,然后调用
Unit.API
,以获取单位
方法1:正确的方法?:我在我的
batch.API
中有一个unit.API
中每个单位的副本。在控制器的post方法中,我获取所有单元作为参数,并从batch.API db
获取作战单元的“副本”。每当一个单位发生变化时,我必须将一个事件从unit.API
发送到batch.API
,在那里进行同样的变化
方法2:也错了吗?:在控制器的post方法中,我通过参数直接获得所有单元
我认为方法1实际上是正确的,但对我来说它感觉是错误的。每分钟可能会有数千个单位的变化,我必须发送数千个事件来保持另一个数据库的更新。这里什么是正确的?方法0:这似乎是最轻量级的解决方案,但在这里您将面临某种“基础架构耦合”。这是什么意思?这意味着,当Unit.Api出现故障或崩溃时,Combat.Api也将无法工作,因为它依赖于单位服务 方法1:这是一种“按部就班”的解决方案。您可以复制数据,但正因为如此,您才有了独立的服务 方法2:对我来说似乎是一种解决方法:) 首先,如果您要进入微服务体系结构,您应该以拥有独立服务为目标。但在某些情况下,它们之间丰富的通信也可能成为瓶颈,难以维护 到目前为止,我遇到了不同的方法,与你提到的完全相同。在你选择最好的一个之前,你应该考虑风险和复杂性,更取决于你同意哪一个选择,并意识到缺点
此外,我认为你应该再次看看你的架构。。。我不知道Unit.API的用途和用途是什么,但如果它只被Combat.API使用,也许它应该是一个microservice/boundedcontext?谢谢。Unit.API还用于培训/购买/销售单元。所以这里有很多独立的功能。