业务验证规则和微服务

Business validation rules and microservices

提问人:Logan Cooper 提问时间:11/14/2023 最后编辑:Christophe QuintardLogan Cooper 更新时间:11/14/2023 访问量:28

问:

我们有一个微服务架构,包括用户服务和日历服务。用户具有功能。在日历服务中,我们需要在创建事件之前确定用户是否具有特定功能。为此,UI 会查询用户服务。

当 UI 将事件添加到日历服务时,日历服务必须验证用户是否启用了指定的功能。

  • 它应该直接调用用户服务吗?这将引入耦合,但将逻辑集中在拥有数据的服务中。
  • 我是否应该利用我们的服务总线并使用事件携带状态传输来使用户及其功能可用于日历服务?我们有几个这样的服务,对于每个服务来说,似乎每个服务都需要用户表及其所有相关产品和功能的副本是非常低效的,但这似乎是耦合最少的路径。

有什么想法或想法吗?

设计模式 架构 微服务

评论

1赞 Peter Csala 11/14/2023
您是否对集中式和分散式授权模型之间的权衡感兴趣?或者你是专门为你的两个问题寻找答案?
0赞 R.Abbasi 11/14/2023
我没有得到它,创建事件的请求是否来自 UI?您说 UI 调用用户服务来验证请求,那么为什么需要在日历服务中再次验证它?

答:

0赞 Christophe Quintard 11/14/2023 #1

我会制作日历来查询用户服务。它是耦合的,但是在通过用户服务的 API 时是松散耦合的。如果日历服务查询用户服务的数据库,则为紧密耦合,这是不好的做法。

如果要提高性能(如果用户不多),可以实施建议的其他解决方案。

0赞 R.Abbasi 11/14/2023 #2

我认为有三种选择:

  • 您可以通过编排或编排来使用 SAGA 模式。
  • 您可以直接在日历服务中调用用户服务。
  • 可以通过 CQRS 和集成事件在日历服务中复制所需的用户数据。