构建可重复且不丢失的工作流及策略引擎
1. 可重复且不丢失的工作流基础
作为 DevOps 工程师,我们经常编写工具。在小公司,这些工具多是脚本集;在大公司,则是复杂系统。无论规模大小,工具执行都应在集中式服务中进行,基础服务易于编写,且可按需扩展和替换。
要使工作流服务正常运行,创建的工作流需满足两个关键概念:
- 可重复性 :在同一基础设施上多次运行工作流应产生相同结果,这在计算机科学中称为幂等性。
- 不丢失性 :若工具创建工作流后死亡,它需能知道工作流正在运行并继续监控。
2. 构建幂等工作流
幂等性指多次使用相同参数调用,会得到相同结果。在基础设施中,幂等操作是指在相同参数且调用外基础设施无变化时,重复操作返回相同结果。幂等性是工作流系统崩溃后恢复的关键,简单系统可重复整个工作流,复杂系统可从断点重启。
以将内容复制到文件的简单操作为例,最初的实现可能并非幂等:
func CopyToFile(content []byte, p string) error {
return io.WriteFile(p, content)
}
此代码在某些情况下可能导致非幂等问题,如文件不存在且创建后无编辑权限,程序死亡后重复操作会报错。
修改后的幂等实现如下:
func CopyToFile(content []byte, p stri
超级会员免费看
订阅专栏 解锁全文
1189

被折叠的 条评论
为什么被折叠?



