我一直在阅读DDD和微服务。通过使用CQRS部分的用例开始进行原型设计。该用例是一个体育足球应用程序,具有视频,新闻,分数和主页。在这里,我已经确定了域和有界上下文
首先,3个域完全相互独立。
现在,主页域名要求。 1.分数部分2.视频部分3.内容部分
内容部分:它有自己的数据库
视频部分:它将进行HTTP呼叫视频服务并获取数据
分数部分:它将进行HTTP呼叫分数服务并获取数据
我的问题是主页域名。我发现它与其他服务高度耦合,并不是独立的。
我该如何设计主页域名?
我发现它与其他服务高度耦合,并不是独立的。
是。
您可以通过仔细考虑故障模式来提高独立性;当相关数据权限不可用时,UI元素应该如何表现。例如,如果远程授权机构没有及时响应,您可以让主页只显示“数据不可用”消息。或者,您可以让主页显示一些陈旧数据的缓存副本。甚至有意义的是总是使用缓存数据呈现响应,并在后台发生缓存更新。
您可以使用一些技术来减少服务之间的耦合。 Udi Dahan在UI Composition Techniques的保护下描述了一种方法。他的想法是你使用一个元素,比如一个小部件,来封装显示逻辑和失败模式。
潜在的机制实际上并没有那么不同;小部件具有我们之前在数据不可用时遇到的所有相同问题。但它所做的是将属于不同团队的两个问题(当窗口小部件不可用时,你做什么,数据不可用时做什么)分开:主页团队决定做什么当窗口小部件不可用时(可能使用了缓存副本),当窗口小部件无法访问后备数据时,服务团队可以决定要做什么(可能窗口小部件有自己的陈旧数据缓存)。
没有魔力;你有一个分布式系统,其结果是你需要在你的设计中考虑到远程进程并不总是可用的事实。