微服务DDD CQRS

问题描述 投票:1回答:1

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

  1. 新闻
  2. 影片
  3. 比分
  4. 主页

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

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

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

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

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

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

我该如何设计主页域名?

domain-driven-design microservices cqrs aggregateroot bounded-contexts
1个回答
2
投票

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

是。

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.