分布式时间轮实现方案

1,092 阅读2分钟

1、背景

在我们的业务系统经常可能需要实现一些延时任务,虽然也有挺多实现方案,如通过quartz定时扫描数据库任务,通过redis的zset数据结构进行实现、RabbitMQ TTL(存活时间)+DLX(死信队列)等,目前我这边提供一种分布式时间轮的实现方式

2、分布式时间轮系统架构

2.1 架构图

image.png

2.2 系统架构描述

1、整个分布式任务调度系统由可视化管理服务、分布式任务调度客户端、分布式任务调度服务端、zk注册中心组成

2、可视化管理服务主要由任务管理,服务端管理,客户端管理三大模块组成

1)任务管理:支持任务创建、查询、是否执行等功能

2)服务端管理:支持服务列表查询,服务任务执行情况查询等功能.

3)客户端管理:客户端服务列表查询,客户端服务剔除等功能

3、分布式任务调度客户端提供zk服务注册,任务创建,删除等功能

4、分布式任务调度服务端提供时间轮,任务执行情况,任务创建、查询,删除等功能;

5、zk注册中心提供服务端分布式集群部署能力,以及服务注册中心能力等

3、分布式时间轮核心流程

3.1 流程图

image.png

3.2 流程描述

1、客户端与服务端交互是通过tcp协议进行交互

2、maser服务端与slave服务端通过tcp协议进行交互

3、分布式任务调度系统的高可用是通过zk来实现的

4、分布式任务调度系统的持久化通过零拷贝技术实现,可以大大提供系统吞吐能力

5、分布式任务调度系统高精度延时任务执行依赖时间轮实现

时间轮的实现可以参考我上篇文章