# 第 15 章 分布式任务调度

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!

# 一、前言

CRUD程序员会不会越来越便宜?

CRUD,是程序员的自嘲,讲自己经常开发增删改查或者接口包装的简单逻辑代码。

但这部分简单逻辑的代码有几乎是现阶段互联网公司里最消耗研发人员的部分,任务的业务需求实现都可能会存在重复的、简单的、单一的功能和逻辑开发,但这些无论是业务功能还是技术组件并没有单独抽离出来,因此每次开发需求都要重新折腾,最终导致研发、测试到交付一整条线的人员投入,测试重复的事情。

对个人来说开发CRUD是几乎没有技术成长的,开发CRUD只是程序员在成长过程中的一个阶段,随着个人能力的提升以及跳槽必然会做更加核心的开发。站在公司技术部门的层面,也都是希望投入更少的人实现更高的交付能力,所以组件化、物料化以及低代码编排会越来越抢占 CRUD 的市场。

# 二、需求背景

在互联网开发的业务场景中,常常会有一块功能或者一个独立的服务,用于处理定时任务。例如:扫描库表待结算日息、扫描待开始活动状态、扫描用户会员过期时间以及处理一些异常流程的补偿动作,等等诸如此类的功能。

一般最开始的时候都是一台单机的任务计算能力就可以支撑起业务体量,但随着业务规模的逐步增加,系统的承载量也随着加大,那么现在一个单机的任务系统就已经很难支撑起整个业务体量的任务扫描工作了。就像要每天0点到3点,扫描贷款日息,那么现在由于单机任务处理能力有限,会发现已经到了第二天的0点还没有把第一天的数据处理完。

所以,这个时候我们需要一个分布式的任务系统,可以把任务作业分散到各个服务处理实例节点上去,加强整个服务的运算承载能力。