一次完整的回滚流程
时间:2022-04-30 15:45:02 | 来源:行业动态
时间:2022-04-30 15:45:02 来源:行业动态
整个回滚流程由调度模块Chrono进行控制。当用户指定了一个回滚时间点,Chrono首先通过查询Granu元数据确认该目标点数据命中的位置。命中位置只有两种情况,一种是目标点数据还在Front接入层,尚未被Shuffle推送至Arker容量存储层,另一种是已经被Shuffle推送至Arker容量存储层。
如果是第一种情况,Chrono会命令Shuffle主动拉取这部分数据至Arker容量存储层。在确认目标点数据已经在Arker容量存储层后,Chrono会查询获取到所有需要合并的Granu以及需要合并到哪个seq_num,并分发合并任务至所有Arker。Arker容量存储层会对这些Granu进行合并,对于一个合并任务,会首先进行索引合并,随后会根据已经合并完成的索引进行数据合并,合并完成后最终会生成一份新版本的BASE,这就是恢复后的全量数据。在得到恢复后的全量数据后,再将数据写回到UDisk集群中。
我们可以看到,数据合并阶段是以shard为单位并发进行的,能利用到所有容量层磁盘的IO能力;数据回吐UDisk阶段,也利用了方舟和UDisk都是分布式存储,可以采取分片并发对拷的方式将数据写入到UDisk集群。因此恢复的RTO也能得到保证,1TB的数据恢复时间通常在30min以内。