在分布式架构中使用 DDD 聚合服务?

Use of DDD Aggregate Services in a distributed architecture?

假设我的大学申请有 2 个限界上下文:StudentsLecturers.

在我的系统后端,我有一个学生 Api 和讲师 Api 作为分布式应用程序。这些应用程序中的每一个都在内部采用洋葱架构:

现在,对于我的平台前端,我使用客户端应用程序(即 React)来调用我的 Api 网关。这非常有效,因为存在门户的学生部分和门户的讲师部分,这意味着大多数时候页面使用一个限界上下文或另一个的 Api 结果来支持。

但是门户网站的一些页面需要来自两个 限界上下文的数据,例如打印讲师课程中的所有学生。

我可以让客户端应用程序发送多个请求,从两个域中检索并将结果拼凑在一起,但如果他们只需要发送一个返回页面所有数据的请求,那就更好了。

因此,让另一个分布式 'aggregate' 应用程序位于我的域 API 之上来管理(和缓存)这种数据编排是否是一种常见的实现方式?如果是这样,这样一个应用程序的名称是什么,因为它现在是必不可少的 另一个 'higher level' Onion Architecture around my original domain APIs:

在这种情况下,我会建议对 Course 聚合进行建模(它甚至可能是它自己的限界上下文;我可能甚至不一定要 Students 讲师 他们自己的限界上下文,但这并不是真的在这里或那里)与学生和讲师。然后,这个聚合可以以 CQRS 方式维护自己对学生和讲师信息的看法(例如,通过订阅来自学生和讲师限界上下文的事件流),并且只关心它需要关心的信息。然后你的客户只需要一门课程就可以得到学生的名字。

这样做的一个好处是,即使支持其他聚合的服务不可用,此查询也可以 运行;当然,为此付出的代价是最终一致性。