cronservice

所属分类:Linux/Unix编程
开发工具:GO
文件大小:0KB
下载次数:0
上传日期:2018-09-26 05:47:27
上 传 者sh-1993
说明:  统一定时任务中心,
(Unified timing task center,)

文件列表:
api/ (0, 2018-09-25)
api/cron.go (748, 2018-09-25)
api/cron_add.go (4011, 2018-09-25)
api/cron_del.go (1746, 2018-09-25)
api/cron_motify.go (4456, 2018-09-25)
api/cron_pause.go (2025, 2018-09-25)
api/cron_query.go (803, 2018-09-25)
api/cron_restore.go (2981, 2018-09-25)
api/errors.go (447, 2018-09-25)
api/variable.go (78, 2018-09-25)
config/ (0, 2018-09-25)
config/config.go (228, 2018-09-25)
config/dir.go (207, 2018-09-25)
config/dir_test.go (82, 2018-09-25)
cronservice.json (576, 2018-09-25)
handler/ (0, 2018-09-25)
handler/conversion.go (2658, 2018-09-25)
handler/cron.go (7435, 2018-09-25)
handler/redismessage.go (259, 2018-09-25)
handler/task.go (509, 2018-09-25)
images/ (0, 2018-09-25)
images/1537933646132.jpg (637562, 2018-09-25)
images/1537934583881.jpg (78518, 2018-09-25)
images/1537934876826.jpg (252893, 2018-09-25)
images/1537935574288.jpg (208802, 2018-09-25)
main.go (829, 2018-09-25)
models/ (0, 2018-09-25)
models/cron_service.go (1727, 2018-09-25)
pb/ (0, 2018-09-25)
pb/cron.pb.go (8485, 2018-09-25)
pb/cron.proto (811, 2018-09-25)
pb/cron_request.pb.go (9594, 2018-09-25)
pb/cron_request.proto (1711, 2018-09-25)
pb/cron_response.pb.go (11643, 2018-09-25)
pb/cron_response.proto (1142, 2018-09-25)
pb/gen.sh (48, 2018-09-25)
script/ (0, 2018-09-25)
script/cron_service.sql (1061, 2018-09-25)
... ...

## 统一定时任务中心 灵感来自`beego`的task ### 前言 随着后端架构的拆分,各种分布式系统越来越向着**微服务**的趋势发展,而有时服务又不得不跑一些定时任务,比如:报表生成、定时查询等,这个时候。在服务中写一些定时任务的代码,无疑增加了服务本身的一些负担。 按照这个思路,设计了**统一定时任务中心**。它将管理:系统中所有服务定时任务的一切动作,而服务本身只要提供对应的rpc接口方法即可 ##### 架构图: + 后补 ##### 功能: + 支持定时任务注册 + 支持定时任务修改 + 支持定时任务删除 + 支持定时任务暂停运行 + 支持定时任务恢复运行 + 支持定时任务运行(跨节点远程rpc调用) ##### 逻辑: + 多个节点运行时,从数据库加载同一份定时任务列表,每个任务均会加redis分布式锁 + 后续在节点:注册新的定时任务 / 原定时任务修改、删除、暂停、恢复时,会通过redis发布/订阅同步到所有节点,并且任务也会加上redis分布式锁 ##### 特点: + 多节点部署 + redis分布式锁防止:同一定时任务在多个节点同时运行 + redis publish && subscribe 机制,任务增加、修改、删除、暂停、恢复等动作,同步通知到所有节点 ##### 不足: `handle/conversion.go`实现了**跨节点远程rpc调用**关键功能:**方法寻址**。 抱歉,此功能是由内部框架实现,内部框架暂时不能开源。请自行实现寻址,后期将从框架切分,加入不依赖于框架的寻址 `log`请替换自己的log包 ##### 截图: ###### 节点首次运行,从数据库加载所有任务 ![Alt text](https://github.com/shenping1916/cronservice/blob/master/images/1537935574288.jpg) ![Alt text](https://github.com/shenping1916/cronservice/blob/master/images/1537934583881.jpg) ###### 节点收到redis订阅消息 ![Alt text](https://github.com/shenping1916/cronservice/blob/master/images/1537934876826.jpg) ###### 任务争抢`redis`锁,拿到锁的节点运行定时任务 ![Alt text](https://github.com/shenping1916/cronservice/blob/master/images/1537933646132.jpg)

近期下载者

相关文件


收藏者