批量资源创建是一种典型的数据处理流程。这样的数据处理流程典型步骤是
- 加载输入数据集
- 遍历数据集,对每个条目,创建目标资源,目标资源可能是一种,也可能是嵌套的有层次结构的树状结构的一系列资源。
这样的处理流程,如果不做任何错误处理,整个程序处于脆弱状态。应该考虑哪些问题呢?
- 首先需要考虑的是,输入数据的格式可能不是标准的,需要在数据集加载部分做好数据格式的标准化,各种异常数据的处理。
- 数据校验部分:可以兼容、直接出错。
- 格式的标准化:可以直接做一遍处理,也可以转成某种中间数据格式等待进一步处理。
- 其次要考虑的是,创建资源的部分可能会出错。所以需要一开始就假设,创建资源的部分一定会出错。因此需要做幂等处理。
- 每个资源创建前,检查该资源是否已创建成功过,已创建成功的,直接跳过。
- 每个资源创建后,如果成功创建,要持久化记录状态。
- 每个资源创建,如果失败,可以直接出错退出程序,等待诊断问题。
经过这样的流程,整个程序可以任意多次地重复跑,中间可以任意停机。整个程序符合
- 幂等:多次执行程序,大体上是效果一致的。
- 最终一致性:在允许出错重跑的情况下,最终数据处理流程达到目标。