Domain driven design DDD、微服务和数据方向

Domain driven design DDD、微服务和数据方向,domain-driven-design,microservices,Domain Driven Design,Microservices,让我们假设我有身份管理有界上下文和讨论有界上下文。每一项都是独立的微服务 身份有用户,讨论有主持人 如果我在身份绑定上下文中更新名字和姓氏,我的计划是向Amazon SQS发布一条消息,让讨论绑定上下文侦听队列中的任何更改,并通过反腐败层更新讨论上下文中的名字和姓氏 我的问题是,如果我决定在讨论中改变名字和姓氏,会怎么样?我的身份证B是否也应该注意这种变化,或者双向沟通被认为不是一种好的做法,我应该始终更新身份证B中的信息?人们如何更改自己的姓名 我会尝试在一个地方允许这样做,并让该上下文拥有数

让我们假设我有身份管理有界上下文和讨论有界上下文。每一项都是独立的微服务

身份有用户,讨论有主持人

如果我在身份绑定上下文中更新名字和姓氏,我的计划是向Amazon SQS发布一条消息,让讨论绑定上下文侦听队列中的任何更改,并通过反腐败层更新讨论上下文中的名字和姓氏


我的问题是,如果我决定在讨论中改变名字和姓氏,会怎么样?我的身份证B是否也应该注意这种变化,或者双向沟通被认为不是一种好的做法,我应该始终更新身份证B中的信息?

人们如何更改自己的姓名

我会尝试在一个地方允许这样做,并让该上下文拥有数据。然后,其他上下文可以订阅更改并相应地采取行动

我的身份证是否也应该注意这种变化,或者双向沟通不被认为是一种好的做法

我不认为双向沟通一定是这里的问题。我担心的是,你似乎有两个不同的BC作为身份的“记录簿”

在《圣经》中,埃文斯写到有界语境是由意义定义的;当您从一个上下文切换到另一个上下文时,您可能需要改变您对通用术语所理解内容的理解:这并不一定意味着一个上下文(用户?)中的聚合规则与另一个上下文(用户?)中的聚合规则相同

给定的例子User可能会更紧张,因为现实世界而不是模型可能是记录簿,“聚合”实际上只是一个愚蠢的数据包

如果我只使用引用id,这难道不意味着讨论BC在其域中没有必要的数据吗

需要什么?讨论记录簿中的更改是否取决于身份记录簿中存储的数据


例如,在身份上下文中,我有一个用户名、名字和姓氏等的用户,但在讨论上下文中,我可能有同一个用户,但表示为版主或海报,只有该BC的必要属性。如果名称在标识上下文中发生更改,则应将该更改传播到讨论中

听起来好像你是在说这是你阅读的必要条件;好像您有一个讨论视图,其中包含参与者的表示,其中包括他们的角色(存在于讨论BC中)及其身份

阅读往往不是一个非常有趣的用例,因为阅读不会改变记录簿。正如Udi所暗示的,要构建视图,基本上需要一个引用id,可以使用该id从某个键值存储中提取所需的数据。是否有任何理由认为KV存储是BC的一部分,而不是BC的一部分

消费者可能是第三方公司和我们公司


直接连接到微服务,或者使用作为支持微服务门面的api?

因此,如果管理员决定添加新的主持人,他将首先在Identity BC中创建,而discussion BC将复制所需数据以创建主持人。更新也一样吗?始终通过身份BC端点执行此操作?如果不更好地了解域,则很难提供准确答案。对我来说,在一个地方管理用户似乎更简单。如果您的其他上下文订阅了更改,您可以在其中执行您想要的操作。身份上下文是否需要知道某人何时成为主持人,或者这只是BC讨论的一个问题?您认为在一个BC中完全拥有名称,而另一个BC只有“参考ID”,然后让复合UI一起显示所有内容如何?目前只规划服务体系结构,没有任何UI。消费者可能是第三方公司和我们公司。如果我只使用引用id,这是否意味着讨论BC在其域中没有必要的数据,并且在身份BC上非常可靠?讨论BC中的哪些功能需要id引用的数据?例如,在身份上下文中,我有用户名、名和姓等的用户,但在讨论环境中,我可能有同一个用户,但代表为主持人或海报,只有该BC的必要属性。如果名称在标识上下文中发生更改,则应将该更改传播到讨论中。我们仍在讨论是否允许直接访问,还是应该将其放在前面。