golang 有没有支持分布式定时任务的中间件?

方明驹 2019-09-30 10:13:25
各位大佬,因为现在go是集群模式,有n台服务器,这样实现同一时间定时任务只在一台上执行,基于web开发的
...全文
990 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37380547 2021-08-14
  • 打赏
  • 举报
回复 1
瑞卡哥哥 2021-05-07
  • 打赏
  • 举报
回复
可以使用开源的xxl-job做框架 通过web接口实现任务调度
尐千叶 2021-02-21
  • 打赏
  • 举报
回复
我用的消息队列+cron去处理的0.0
学生董格 2020-06-12
  • 打赏
  • 举报
回复
go cron
「已注销」 2020-04-01
  • 打赏
  • 举报
回复
用etcd解决
方明驹 2019-10-08
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
有好几种方案 1.只有一台服务器启动定时任务(其他服务器不启动定时任务) 2.通过环境变量控制是否启动定时服务器(go读取环境变量,只有一台服务器的环境变量是启动定时服务,其他服务器的环境变量为不启动定时服务) 3.如果用的是同一个数据库,可以通过锁表记录来控制 4.和3类似,不直接锁表,而是向某中心服务申请执行任务,某中心服务一旦有重复申请就拒绝执行任务 等等
有没有什么中间件可以直接支持的,这些方法我们都用不了
qybao 2019-09-30
  • 打赏
  • 举报
回复
有好几种方案
1.只有一台服务器启动定时任务(其他服务器不启动定时任务)
2.通过环境变量控制是否启动定时服务器(go读取环境变量,只有一台服务器的环境变量是启动定时服务,其他服务器的环境变量为不启动定时服务)
3.如果用的是同一个数据库,可以通过锁表记录来控制
4.和3类似,不直接锁表,而是向某中心服务申请执行任务,某中心服务一旦有重复申请就拒绝执行任务
等等
内容概要:本文通过设计与实现一个分布式任务调度系统,深入讲解了Golang并发编程在真实项目中的应用。系统基于Goroutine池、Channel通信和sync包等核心机制,解决了传统调度方案中存在的单点故障、任务重复执行和资源利用率低等问题。项目支持任务注册、动态分片、并发控制与结果反馈,并通过模拟Redis分布式锁确保任务分片的唯一执行。架构上采用“调度器-任务队列-Worker池”三层模型,结合Cron定时触发与上下文控制,实现了高可用与可扩展的任务调度能力。代码实现中重点展示了任务分发、锁竞争、结果回传及优雅退出等关键逻辑。; 适合人群:具备一定Go语言基础,熟悉goroutine、channel等并发特性的开发人员,尤其是从事后端服务、微服务编排或中间件开发的1-3年经验工程师; 使用场景及目标:①学习如何利用Go的并发原语构建高并发分布式系统;②掌握任务调度系统的核心设计模式,如分片执行、分布式锁、异步任务同步反馈;③应用于大数据ETL、定时报表生成、微服务协同等实际业务场景; 阅读建议:此资源以实战为导向,建议读者结合代码逐模块调试运行,重点关注调度器与Worker间的协作流程、锁机制的实现细节以及channel在解耦与通信中的作用,深入理解并发控制与系统健壮性设计。

2,351

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • 俺叫西西弗斯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧