zoukankan      html  css  js  c++  java
  • 面试官:如何保证定时任务的执行顺序呢?

    01. 抛砖

    敲黑板,讲重点。今天我先抛一开放性话题,也是我平时面试候选人时经常谈及的,看看你有没有相关解决思路?

    Q:有A、B两个定时任务,其中任务 B 要在任务 A 执行完成后才能执行,如何保证任务的执行顺序?

    A:潜意识:啥、啥、啥,一脸懵?心情只能用下图来形容。

    640?wx_fmt=png

    从事金融相关研发的程序员,多多少少都了解,一个完整的系统,会像钟表一样,背后隐藏了诸多的齿轮任务在运转。其中系统中的每个定时任务之间,难免会有前置依赖关系。

    举个业务场景:对接银行的某理财产品,如果想统计收益,那么最常用的方式便是:双方约定固定时间,定时从银行获取收益文件,然后解析收益文件入库(任务 A);然后进行执行收益记账任务(任务 B)。

    那么如何保证收益记账任务 B 执行时,获取收益文件任务 A 已经执行完成了呢?

    02. 思考

     

    能用图说懂的,不再瞎白话,一言不合,直接画图,上图进行协助思考,相信你仔细看图,肯定能搞清楚咋回事。

    640?wx_fmt=png

    03. 何解

     

    流程搞清楚,那么实现就分分钟。简单说一下最原始、最简单的实现思路。

    首先设计一张批量任务定义的表 t_job_define,摘取两个核心字段示意一下。

    任务编号:JOB_ID

    前置任务编号:PRE_JOB_ID

     

    接着设计一张批量任务跑批详情表 t_job_run_detail,摘取两个核心的字段示意一下。

    任务编号:JOB_ID

    跑批时间:BATCH_DATE

     

    最后还是配个图,释义一下,我相信你肯定能看懂。

    640?wx_fmt=png

     

    04. 升华

     

    不喜欢土枪的,不妨尝试一下土枪换炮。有精力的你,不妨了解一下阿兹卡班(Azkaban),毕竟每个技术都不需要太深入,用到的时候深入也不晚。但是一定要知道,技多不压身

     

    https://azkaban.github.io/

    640?wx_fmt=png

    05. 最后

     

    条条思路通罗马,我相信你肯定会有很多独特的见解,也不乏好的实现思路,借助《聊斋志异》中的一句话“黄狸黑狸,得鼠者雄”,其实也就是邓爷爷说的“不管是黑猫白猫,能抓住老鼠的就是好猫”。

    今天的分享到这就结束了,主要想表达一下简单的思想,你 get 到了没?

  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/socoool/p/12629799.html
Copyright © 2011-2022 走看看