首页 > 解决方案 > 如何改进我的设计以处理跨越多个微服务/有界上下文的业务规则?

问题描述

我正在练习使用微服务建立一个系统,并通过将每个微服务设计为尽可能松耦合和自治来构建这个系统。我正在设置的应用程序必须能够管理视频租赁系统。为此,我有以下微服务,每个都有自己的有界上下文:

我为自己制定的业务规则之一是:

这个规则使用了几个微服务,所以我尝试从用户微服务来管理这个:我在那里创建了一个每天在后台运行的服务:

你觉得这个设计怎么样?对我来说,它允许在每个微服务中保持自治。

我认为另一种选择是尝试保持用户服务级别:最后一次租赁完成的日期、最后一次租赁的日期以及最后一次未偿还债务的日期。这将允许我管理我在用户微服务中的所有删除并仅发出 2 个事件:

另一方面,这些必须发出事件:

标签: architecturemicroservicesbounded-contexts

解决方案


我认为你在正确的轨道上。删除非活动/无效用户可以被视为特定服务的责任,该服务充当协调器。

一种可能的方法也可以是将用户 ID 连同他们的最后操作日期一起存储在按日期排序的最小堆中。每次整个系统发生事件(例如出租、配置文件更新等)时,此微服务都会更新本地数据并刷新堆状态。此时,您的“清除”任务应该只是从顶部遍历堆,提取节点(-> 要删除的用户 ID)直到它没有达到有效日期。

在此示例中,我仅使用日期,但我想您也可以扩展到其他自定义规则。


推荐阅读