背景
信号是一种信息流。我们感兴趣的大部分信号都可表述为时间或位置的函数,任何携带信息的物理量皆可以作为信号。信号系统在58调度系统中担任重要角色,控制任务依赖的执行顺序,保证整个数据流转方向和准确。
之前信号设计比较简单粗暴,一个任务不管任何时间执行对应只生成同一个信号,由于目前用户调度复杂依赖需求越来越多,目前设计已经无法满足当前需求,所以推着我们重新设计了一套信号系统。
老版信号依赖
三个特点:
经常遇到运行任务不同实例,导致后续依赖错乱了,如下图:
总结了下主要有下面4个问题:
- 任务运行时长跨天会导致依赖错乱
- 重跑历史任务会影响当天正常流程的执行
- 重跑历史依赖链不能支持并行
- 跨周期依赖和小时/分钟级依赖不支持
新信号系统
为了解决上面所遇到的问题,重新设计了下信号系统,主要解决不同业务时间的调度实例生成不同的信号,还有在信号生成流程上做了改善,下面先了解下新信号系统功能模块和流程图。
信号系统功能模块
信号系统流程图