微服务DDD CQRS

时间:2018-03-05 09:49:34

标签: domain-driven-design microservices cqrs aggregateroot bounded-contexts

我一直在阅读DDD和微服务。通过使用CQRS部分的用例开始进行原型设计。该用例是一个体育足球应用程序,具有视频,新闻,分数和主页。在这里,我已经确定了域和有界上下文

  1. 新闻

  2. 得分

  3. 主页

  4. 首先,3个域完全相互独立。

    现在,主页域名要求。 1.分数部分 2.视频部分 3.内容部分

    内容部分:它有自己的数据库

    视频部分:它将进行HTTP呼叫视频服务并获取数据

    分数部分:它将进行HTTP呼叫分数服务并获取数据

    我的问题是主页域名。 我发现它与其他服务高度耦合,并且它不是独立的。

    如何设计主页域名?

1 个答案:

答案 0 :(得分:2)

  

我发现它与其他服务高度耦合,并且它不是独立的。

您可以通过仔细考虑故障模式来提高独立性;当相关数据权限不可用时,UI元素应该如何表现。例如,您可以让主页只显示一个"数据不可用"如果远程管理机构没有及时响应,则会显示消息。或者,您可以让主页显示一些陈旧数据的缓存副本。使用缓存数据始终呈现响应甚至可能是有意义的,并且缓存的更新发生在后台。

您可以使用一些技术来减少服务之间的耦合 Udi Dahan在UI Composition Techniques的保护下描述了一种方法。他的想法是你使用一个元素,比如 widget ,来封装显示逻辑和失败模式。

潜在的机制并非完全不同;小部件具有我们之前在数据不可用时遇到的所有相同问题。但它所做的是将属于不同团队的两个问题(当小部件不可用时,你做什么,当数据不可用时你做什么)分开:主页团队到达决定当窗口小部件不可用时要做什么(可能使用缓存副本),服务团队决定当窗口小部件无法访问后台数据时要做什么(可能是窗口小部件有自己的缓存陈旧数据。)

没有魔力;你有一个分布式系统,其结果是你需要在你的设计中考虑远程进程永远不可用的事实。

相关问题