尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
系统设计练习 - Global Job Scheduling Platform
背景设计一个分布式任务调度系统类似于AWS EventBridge SchedulerKubernetes CronJobGoogle Cloud SchedulerMetas internal distributed scheduler系统需要支持数亿100M定时任务系统需求功能需求1. 创建jobCreateJob( jobId, cron expression, callbackURL, payload )2. 修改job3. 删除Job4. Trigger Job5. 至少一次执行 At-least-once6. 支持Retry7. 用户可以查历史非功能需求1. Scale100 million jobs, peak is 2 million/minute2. availability: 99.99%3. durability: 即使整个machine挂掉job不能丢4. latency scheduled time /- 1 secondAPI设计1. Create JobPOST /job BODY: { cron: ****, url: /job/1234, payload: hello, world }2. Update JobPUT /job/{jobId} BODY: { cron: ****, url: /job/1234, payload: hello, world }3. Get JobGET /job/{jobId}4. Delete JobDELETE /job/{jobId}5. Trigger JobPOST /job/{jobId}/runs架构设计本系统的架构设计如下1. client通过API GW向后端发送job的CRUD请求。我们在后端设置scheduler service处理这种请求更新job的meda data DB。2. 在scheduler service初次创建一个job的时候将job的首个scheduling信息写到scheduling index DB里。Scheduling index DB使用AWS Dynamo DB。使用minute做parition key使用second做sort key。对于每个primary key维护一个job list。3. 启动scheduling workers通过shard lease获取对某些shard的记录的访问权限。scheduling workers会读取自己负责的shard的job ID将该job dispatch到queue中。在dispatch完成后scheduling workers重新计算该job的下一次fire time更更新scheduling index DB。4. Execution workers会从dispatch queue读出dispatched job然后执行。并且将执行的结果写入到execution history DB里。5. 如果是trigger job我们只需要将该job ID存入到当前即将执行的scheduling index DB的primary key中即可。讨论本系统设计的核心在于对于非常多需要调度的任务怎样快速查找到当前需要调度的任务。这里的思路是通过DDB的schema设计由minutepartition key和secondsort key保存每秒需要调度的任务ID。下面我们讨论以下问题1. 如果某个时刻比如零点需要调度的任务非常多应该如何处理?分为两种情况。第一种job的execution时间不是非常严格。这种情况下我们可以考虑给每秒的可以execute的job设置一个上限。超过上限则放到下一个bucket里。这样可以平滑job运行的峰值。第二种job的execution时间是严格的。我们可以认为scheduling workers是可以一直scale out的我们唯一需要处理的问题是DDB的hot partition的问题。我们可以考虑将大的bucket的primary key加上suffix进一步划分为多个bucket。比如分钟_1, 分钟_2, ...。
RELATED

相关推荐

C++ XML解析利器CMarkup:轻量级单文件库的流式导航实战

C++ XML解析利器CMarkup:轻量级单文件库的流式导航实战

1. 项目概述:为什么是CMarkup?在C项目里处理XML,你是不是也经历过那种“杀鸡用牛刀”的尴尬?比如,你只是想读个配置文件,解析一下从网络接口返回的简单数据包,或者保存一点游戏存档。这时候&…

📅 2026/11/12 8:48:29
windows网络适配器驱动开发-NetAdapterCx 接收端缩放(下)

windows网络适配器驱动开发-NetAdapterCx 接收端缩放(下)

第三部分:NetAdapterCx 接收端缩放(RSS)—— 同步机制、异构 CPU 支持与调试八、SynchronizeSetIndirectionEntries 与同步机制NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES 结构中的 SynchronizeSetIndirectionEntries 成员允许客户端驱动程序…

📅 2026/11/12 8:48:28
基于CNN的手势识别技术原理与游戏交互实践

基于CNN的手势识别技术原理与游戏交互实践

1. 项目背景与核心价值手势识别作为人机交互的重要方式,正在智能设备、虚拟现实、医疗辅助等领域快速普及。传统基于SVM或模板匹配的方法在复杂场景下往往表现不佳,而深度学习的出现为这一领域带来了突破性进展。这个项目选择CNN(卷积神经网络…

📅 2026/11/4 12:10:47
MORE NEWS

更多资讯

📰

浙江安监局特种工查询多少钱?实操考试心里没底怕挂科怎么办

浙江安监局特种工查询多少钱?实操考试心里没底怕挂科怎么办 实操考试心里没底怕挂科,这几乎是每个准备报考浙江安监局特种工证书的人都会有的顾虑。尤其是像低压电工证、焊工证这些需要动手操作的项目,一次没过不仅浪费时间,还可能影响后续的就业机会。而…

📰

浙江安监局特种工查询最新内部消息:外省证怎么转过来全攻略

浙江安监局特种工查询最新内部消息:外省证怎么转过来全攻略 之前考的证在外省能不能转过来?这个问题其实很多人都问过,尤其是像郑州金水区这样的地方,不少学员是第一次报考,对证书的流程和要求都一知半解。根据 特种作业操作证查询平台…

📰

职高要考电工证网上查询合格标准和通过率全攻略

职高要考电工证网上查询合格标准和通过率全攻略 你是不是正愁找不到工作,听说现在电工证是基本门槛?特别是职高毕业的你,想进工地、进工厂、进企业, 急需特种作业证才能上岗找工作…

📰

喀什市电工证中级通过率揭秘:实操考试心里没底怕挂科怎么办

喀什市电工证中级通过率揭秘:实操考试心里没底怕挂科怎么办 实操考试心里没底怕挂科?你不是一个人。很多人在报考喀什市电工证中级时,最大的担忧不是考试报名流程,而是担心自己在实操考试中表现不佳,导致挂科。而实际上,只要你掌握正确的方法和备考重点…

📰

电工证复审德州去哪里?工地太忙根本没时间复习考试,考前押题怎么搞?

电工证复审德州去哪里?工地太忙根本没时间复习考试,考前押题怎么搞? 工地太忙根本没时间复习考试,很多人觉得电工证复审德州去哪里是个难题,更别说还有考试压力了。其实,复审和考试都有套路,关键在于方法对不对。今天我就从济源劳务班组负责人的角度出…

📰

朱泾办电工证怎么走?电子证书流程全攻略,别再被坑了

朱泾办电工证怎么走?电子证书流程全攻略,别再被坑了 你是不是也在为找工作发愁?别人都说“ 急需特种作业证才能上岗找工作 ”,可你还在为 朱泾办电工证 发愁?别急,今天我就给你讲清楚,怎么一步步拿到 电子证书…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬