高可用离线任务设计思路
离线任务分类
离线任务广泛存在于分布式系统设计中,他们承担着重要的工作,包括维护数据最终一致性,解决业务诉求传输数据等等。下面介绍两类离线任务:
分布式任务兜底
如图,上述一个分布式事务,离线兜底流程可以在实时流程执行失败时,将单据扭转到正确的状态。其执行的过程就是不断的扫描数据库表,将异常单据找出并执行对应的操作。
推拉数据
如图,业务开发中,往往存在跨子域数据传输的需求,如交易数据、退款数据需要导出给账单出账;或者是将数据定时出库作为备份,作为快照使用。此时将涉及到扫存储(一般是DB)的业务场景,将数据写入HDFS、FTP等下游服务。
如何做到高可用
谈到高可用,会想到可以用多种方式来实现。如利用多副本容灾,使用分布式协议达到机器间一致性;如利用高并发得到更快的执行效率,使用进程间通信,达到任务内一致性。
多副本容灾
多副本容灾的核心思想就是利用机器冗余,来提升整体的可用性。多副本意味着需要协调多个副本实例,让彼此合理调度,在