gpt4 book ai didi

java - 更改 "roll back"的最佳方法是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 20:11:12 27 4
gpt4 key购买 nike

好吧,我有一个 Spring 应用程序,它接受网络表示并启动虚拟机来表示传入的网络。

它使用低级 API 来启动虚拟机,不涉及数据库。

我需要弄清楚如何处理用户提交 10 个节点(或任何数量)的网络模型并且应用程序通过并建立网络(启动 VM)的情况,如果一个节点失败启动我希望能够对此使用react。我希望能够回滚我的更改(即销毁所有已创建的节点)。

我被告知我需要查看“事务”,但我不确定在我不使用数据库时这是否适用于这种情况。

作为旁注,如果用户发送该请求,我确实有关闭节点的逻辑。

我的问题是——我该如何处理?

此外,这是这个问题的最佳堆栈溢出吗?

最佳答案

看来您正在寻找事务行为,特别是原子性(“全有或全无”)。但通常“交易”意味着某些保证(特别是围绕 ACID 属性),在涉及几分钟的人类时间尺度的情况下,这些保证将很难或不可能实现。

“错误补偿工作流”可能更符​​合您的需求。

我会手动实现这个,也许有工具支持(例如工作流引擎)。启动一个进程来生成您的网络,并跟踪当前的进度,例如创建的 VM、正在进行的 VM 等。如果存在需要回滚的错误,则让另一个进程执行清理。清理过程本身的行为可能会失败,因此它可能会在生成“此清理步骤失败”的报告之前重试其各个步骤几次。

如果涉及共享资源,那么您还需要实现某种隔离机制。有时这很容易——例如,DHCP 可以帮助您避免重复的 IP。如果您正在更新 DNS 区域文件,那么您需要同步对该文件的访问以避免并发写入。等等

关于java - 更改 "roll back"的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27114521/

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