加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – “回滚”更改的最佳方法是什么?

发布时间:2020-12-15 01:43:39 所属栏目:大数据 来源:网络整理
导读:好吧,所以我有一个Spring应用程序,它接受网络表示并启动虚拟机来表示传入的网络. 它使用低级API来调出VM,不涉及数据库. 我需要弄清楚如何处理用户提交10个节点(或任意数量)网络模型并且应用程序通过并构建网络(启动VM)的情况,如果节点无法启动我想要能够对此

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

它使用低级API来调出VM,不涉及数据库.

我需要弄清楚如何处理用户提交10个节点(或任意数量)网络模型并且应用程序通过并构建网络(启动VM)的情况,如果节点无法启动我想要能够对此做出反应.我希望能够回滚我的更改(即销毁所有已创建的节点).

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

作为旁注,如果用户发送该请求,我确实有逻辑来取消节点.

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

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

最佳答案
您似乎正在寻找事务行为,特别是原子性(“全有或全无”).但通常“交易”意味着某些保证(特别是围绕ACID属性),如果涉及分钟量级的人类时间尺度,将难以或不可能实现.

可能“错误补偿的工作流程”更像是你在这里寻找的东西.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读