洛阳证券公司联盟

量化交易系统任务框架的演化之路(3)基于多状态的任务依赖解决

疯牛秘籍2020-02-19 14:45:31

「疯牛秘籍开设技术专栏啦」

打造量化交易体系是一个涉及多类型技术的综合性技术工作。为解决小伙伴们在打造量化交易系统过程中的实际问题,小编以后每周都会为大家精选一篇疯牛秘籍技术团队实操过程的原创技术干货文章,希望给粉丝们在量化投资的征程中输送更多能量!

在上周的技术文章中为任务引入了一个状态,解决了任务的重入问题,那么还有一个悬而未决的问题:如何解决任务之间的依赖关系?那么今天就来看看如何基于多状态解决任务之间的依赖关系。 


假定有两个每天执行一次的任务A和B,任务B要在任务A的执行完毕后才能启动。在设计时,应该考虑到:

  1. 对于任务A来讲,任务B应该是透明,也就是说任务A不应该知道任务B的存在,这样即使任务B失效了或者不再需要任务B,也不会影响任务A的正常运行。

  2. 同时还应该考虑到任务状态的时效性,因为在业务场景中已经规定了A和B都是每天运行的,B的执行一定基于A的今天执行的结束,而不是之前的结束状态。

基于上面两点考虑,可以通过以下方案解决:为任务设定多个执行状态,并在数据库存储任务的执行状态和执行时间。


状态定义:

数据库定义(MySQL语法):

实现的逻辑分为两部分

首先是独立的任务A的执行逻辑,这里面没有考虑重入的问题。

接下来看依赖于A的任务B的执行过程



通过一个简单的轮询机制配合A的状态持久化,咱们就可以解决任务之间的依赖问题,何况并且A和B还实现了一定程度的解耦。 


在这种场景下轮询机制的效率是比较低的,尤其是任务比较多,依赖关系比较复杂的情况下,那么有没有比较高效的方法可以解决这个问题?开动你的脑筋思考一下吧!

疯牛秘籍不光有精彩盘评,还有技术干货文章,喜欢的话欢迎留言转发!关注量化交易体系的朋友请往下看,量化交易体系实战系列课程等你来参加哟!

牛老师说

量化交易体系实战课程由疯牛秘籍团队倾力打造,依托清华大学《金融大数据与量化分析》课程体系及原班师资团队。20余年大数据及人工智能行业积累,一线量化交易系统搭建经验,上万次量化策略实盘交易心得体会!实战交易全节点覆盖,只为造就实战型量化金融人才!

课程咨询请添加牛老师微信(niuxiaomi3)

点击「阅读原文」查看线下班详情介绍