gpt4 book ai didi

database - 微服务 - 处理无事务系统中的幽灵记录的最佳实践

转载 作者:搜寻专家 更新时间:2023-10-30 22:34:20 24 4
gpt4 key购买 nike

我正在开发一个基于 NoSQL 和微服务架构的系统。

我有一个一般的架构问题 -

假设我有三种类型的文档 - 国家、城市和街道。
其中 Street 包含一个 CityId,City 包含一个 CountyId。

在国家/地区服务中,我需要开发一个 deleteCountry() 方法:

  1. 删除国家。
  2. 请求城市服务删除所有按 countryID 的城市。
  3. 城市服务随后请求所有街道服务删除 cityId 的所有街道。

问题:如果这个过程在国家删除后失败,在一个没有交易的世界里,我会留下一些“幽灵”文件。

  • 我可以管理我的业务流程中的失败,以便它能够清理在它之后,但这不是可扩展的(代码方面的)解决方案。
  • 我可以使用编排模式,但它并不能真正解决问题。
  • 我可以定期运行清理文档的过程,但它会难以管理,并且会在问题仍然存在的地方留下时间漏洞。

从 NoSQL 数据库中删除幽灵记录的最佳做法是什么。
谢谢。

最佳答案

在您描述的场景中,一种解决方案是拥有一个可以处理流程完整性的有状态编排组件,例如 Saga in NServiceBus。 .

您通过处理发送 2 条消息的 DeleteCountry 命令开始该过程,一条到国家组件,另一条到城市组件。

两个组件都将回复“saga”,saga 将根据执行工作的组件的状态/结果来处理操作的完成或失败。

这有意义吗?

关于database - 微服务 - 处理无事务系统中的幽灵记录的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39306577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com