`

分布式系统大数据量计算抢占式任务调度

 
阅读更多

业务背景:

XX系统为支撑电商平台的微服务系统,系统为电商平台提供搜索页、四级页、加入购物车等提供查找货源唯一四要素接口服务,通过商品主数据、上下架信息、销售范围、供应链规则、售价、库存等信息计算获取货源,并通过售价、库龄、时效等比较获得最优货源。

 

系统设计

为了支撑高并发,高访问的业务特性,系统在设计的时候考虑在每晚凌晨计算所有商品的货源信息(称为全量计算),计算完成后,如果外围系统通过MQ(消息队列)同步来的数据影响到查找货源的计算,则会将影响的商品数据异步的放入动因范围表中,JOB扫描动因范围表,重新计算受影响商品的货源(称为动因计算)。

 

对外提供的服务接口直接在已有货源的基础上进行过滤,计算。

 

系统实现(全量计算&动因计算):

由于每天计算量巨大,因此会使用多台机器进行并行计算。需要解决如何调度这些机器有条不紊的计算?

 

设计调度方案如下:

           1. 按照商品编码后三位 000-999分为1000个号段 建立任务调度表

           2. 多台机器每个机器都有各自唯一的jobID,争抢号段进行计算,如果抢到该号段,将号段设置为执行状态,锁定该号段后通过该号段查询对应商品进行计算。

           Question?  --- 多台机器争抢号段,可能发生同时update一条号段记录的情况,对数据库也存在压力,这里为了减少数据库碰撞,设计为构建一个redis的缓存list队列,将所有待处理号段初始化进去,每个机器争抢的时候从list中取出一个号段,然后update,这样减少了碰撞,保证按照顺序执行。

 

这样设计的好处是资源(机器)和调度任务解耦,并且也保证了高可用性 就算部分机器挂掉,也能保证正常计算。

 

详细实现:

1. 任务调度表

/*'号段争抢调度表'*/
CREATE TABLE TASK_SCHEDULE 
(
   id                   INTEGER  AUTO_INCREMENT PRIMARY KEY,
   post_num             VARCHAR(10)  NOT NULL /*'号段(000-999)'*/ ,
   handle_status        INTEGER      NOT NULL /*'处理状态 0 待处理 1 在执行 2 已完成 3 异常'*/,
   jobID                VARCHAR(10)   /*'抢到该号段的jobID'*/
) ENGINE=INNODB DEFAULT CHARSET=utf8;

 

2. 逻辑流程图

 

 

 3 其他

   为了保证全量计算的高效率及高可用性,设计表会有A,B两套表,每天用一套表,在全量计算的时候,清空更新时间最老的表,然后将计算结果插入,如果全部计算成功,进行切表操作,保证了高可用。

 

 

  • 大小: 168.6 KB
  • 大小: 359.8 KB
分享到:
评论

相关推荐

    分布式系统课件(各个章节)

    分布式系统是计算机科学中的一个重要领域,它涉及到多个独立计算实体通过网络进行协同工作,共同完成一个任务。这个领域的知识广泛而深入,涵盖了多个关键概念和技术。以下是对标题和描述中涉及的一些核心知识点的...

    2007年东北大学博士入学考试试题-分布式操作系统

    6. **分布式资源调度与管理**:分析分布式系统中的资源分配和调度策略,例如抢占式和非抢占式调度,以及服务质量(QoS)保证。 7. **容错与可靠性**:掌握分布式系统中的容错机制,如冗余备份、故障检测、故障恢复...

    吉林大学胡亮教授编写《分布式计算》

    第十章 分布式调度:此章可能涵盖任务调度策略,如抢占式调度、优先级调度,以及在分布式环境中的负载均衡和资源分配。 第十一章 分布式共享存储器:这部分可能会介绍分布式共享存储器系统,如何实现共享内存,以及...

    shizi.rar_K._shizi_任务调度_最佳调度算法

    对于并行计算环境,可能还会采用基于优先级的调度、抢占式调度等策略。 压缩包中的"shizi.txt"文件很可能包含了具体问题的实例、算法描述或者程序代码,用于实现和测试最佳调度算法。通过分析和运行这些数据,我们...

    阿里云 专有云企业版 V3.7.0 分布式任务调度ScheduleX 用户指南 20181204.pdf

    4. **任务调度策略**:ScheduleX提供了丰富的调度策略,如优先级调度、容量调度、抢占式调度等,可以根据任务的紧急程度和资源需求进行智能调度。 5. **监控与告警**:系统内置了全面的任务监控机制,可以实时展示...

    行业分类-设备装置-任务调度装置、方法及并行处理数据的设备.zip

    任务调度器会根据不同的调度策略(如轮转调度、优先级调度、抢占式调度等)分配处理器时间,确保系统中所有任务的公平性和响应性。 2. **并行处理**:并行处理是指同时执行多个任务或操作,以提高计算速度和系统...

    【精品】基于微服务架构的开源任务调度平台-19.9.pdf

    3. 任务中心:集中管理并行调度任务,实现任务的高效执行。 【监控与管理】 1. 调度器监控:实时监控调度器状态,确保任务执行的稳定性。 2. 调度器管理:进行调度策略的调整和优化。 3. 任务管理:包括Task和Job...

    【推荐】毛正卫-基于微服务架构的任务调度平台

    9. 平台应用场景广泛,可用于流式调度、并行调度、分布式调度,以及任务中心管理困难的场景,充分发挥了微服务架构在应对大规模任务处理时的优势。 10. 最后,微服务任务调度平台还注重在实际应用中的可控性,包括...

    高级操作系统经典课件

    调度算法在分布式环境中用于决定任务的执行顺序,如全局负载均衡、抢占式调度和分布式调度策略。同时,分布式系统需要具备容错能力,通过备份、复制和故障检测来保证服务的连续性和数据的完整性。 八、安全与隐私 ...

    安排工作

    在分布式系统、云计算和大数据处理等领域,工作安排更是关键,因为它们需要优化大量任务的执行顺序和并发性。 在任务调度中,有几种常见的策略: 1. 先来先服务(FCFS):这是最基本的调度算法,按照任务到达的...

    操作系统实验报告(调度算法)

    1. 非抢占式调度:一旦进程被分配到CPU,就会一直执行直到完成或自愿释放CPU。例如,先来先服务(FCFS,First-Come, First-Served)算法就是非抢占式的,按照进程到达的顺序进行调度。 2. 抢占式调度:允许高优先级...

    行业分类-设备装置-重新调度活动显示任务以最小化与活动平台任务的重叠.zip

    例如,可以使用抢占式调度,当高优先级的任务(如活动显示任务)需要资源时,可以中断低优先级任务,确保关键任务的执行。另外,也可以通过预测和分析任务的执行时间和资源需求,提前调整任务的执行顺序,以避免资源...

    百度2014校招软件研发工程师笔试题(湖北武汉)

    本文将对百度2014校招软件研发工程师笔试题进行详细解读,涵盖动态链接库和静态链接库、轮询任务调度和抢占式任务调度、数据库锁、算法与程序设计、系统设计等多方面的知识点。 一、动态链接库和静态链接库 动态...

    面向分布式嵌入式计算机的性能评估模型构建.pdf

    为了保证系统的可靠性,往往需要使用特定的资源分配和调度算法,例如抢占式任务切换、无故障平均间隔时间、修复的平均时间等指标,这些都是评估系统可靠性的关键因素。 分布式嵌入式计算机性能评估模型的构建除了...

    pcb.rar_并行机调度_并行调度算法_调度 程序

    并行机调度是指在多处理器或分布式系统中,有效地分配计算资源以执行多个并发进程或任务。本资料"pcb.rar"聚焦于并行机调度,包含了并行调度算法和调度程序的设计,旨在优化系统性能和响应时间。 首先,我们要理解...

    diaoduqi.rar_diaoduqi_小小调度器_调度器

    1. **任务调度算法**:调度器可能采用了不同的调度策略,如轮转调度、优先级调度或抢占式调度,以适应不同场景的需求。 2. **多线程与并发**:为了处理多个并发任务,调度器可能利用了多线程技术,确保任务的并行...

    高级操作系统课件

    分析各种调度策略,如基于优先级的调度、短作业优先、抢占式调度等。 5. **容错与恢复**:探讨分布式系统中的故障模型,学习如何设计容错机制,如备份、复制、检查点和故障恢复策略。理解 Paxos、Raft 等一致性算法...

    行业分类-设备装置-高性能云计算平台的作业调度方法.zip

    另一方面,动态调度策略如抢占式调度和自适应调度,可以根据当前系统状态灵活调整任务执行,以提高资源利用率。这些策略通常结合使用,以平衡各种性能指标。 在高性能云计算平台中,作业调度不仅要考虑任务的执行...

    《分布式数据库系统及应用》复习大纲.doc

    ### 分布式数据库系统及其应用知识点详解 #### 第一章:分布式数据库系统概述 - **分布式数据库系统的特点**: - 数据分布在多个物理位置上,这些位置由网络连接。 - 支持本地事务和全局事务。 - 提供数据的...

Global site tag (gtag.js) - Google Analytics