我们有一个遗留的单片Ruby on Rails应用程序,我们想重构它创建一组Web服务。因此,Users资源和Cars资源将在两个不同的Web应用程序中处理。
但我们有一个非常重要的功能:软删除。软删除意味着您可以删除用户,但之后您可以恢复它。对于最简单的情况,实现此软删除很简单:删除用户,取消删除它 - 用户服务知道它的全部内容。
但是,当您要删除的资源与在其他服务中处理的其他资源有某种关系时,它会变得复杂。在用户的示例中,我们认为用户有汽车。删除用户时,删除他的汽车。当你取消删除用户时,服务也应该恢复他的汽车。
我们想到了一些可能性:
有没有人在完成任何以前的模式后有过好的或坏的经历?实现此功能有哪些其他好的选择?
答案 0 :(得分:1)
事件实现通常很有效。但是,由于服务是分散的,您可能需要添加一些机制来确保删除(和取消删除)是所有相关服务的句柄。 实现这一目标的两种常用方法是orchestration(即确保所有操作都得到执行的外部协调员)或Saga(与所涉及的服务之间的某种协调的长期交互)