2019独角兽企业重金招聘Python工程师标准>>>

业务迅速发展带来了跑批数据量的急剧增加。单机处理跑批数据已不能满足需要,另考虑到企业处理数据的扩展能力,多机跑批势在必行。多机跑批是指将跑批任务分发到多台服务器上执行,多机跑批的前提是”数据分片”。elasticJob通过JobShardingStrategy支持分片跑批。

跑批配置需要做如下修改: 

shardingTotalCount:作业分片总数。

jobShardingStrategyClass:作业分片策略实现类全路径,elasticJob默认提供了如下三种分片策略,AverageAllocationJobShardingStrategy : 基于平均分配算法的分片策略。 
OdevitySortByNameJobShardingStrategy:根据作业名的哈希值奇偶数决定IP升降序算法的分片策略。 
RotateServerByNameJobShardingStrategy:根据作业名的哈希值对服务器列表进行轮转的分片策略。 
默认使用AverageAllocationJobShardingStrategy。

shardingItemParameters:分片序列号和个性化参数对照表。 
分片序列号和参数用等号分隔, 多个键值对用逗号分隔。 
分片序列号从0开始, 不可大于或等于作业分片总数。 
分片的维度通常有状态(state)、类型(accountType)、id分区等,需要按照业务合适选取。

以上例,跑批服务器起了两台,192.168.30.38(测试跑批服务器)和10.15.83.211(本地服务)。 
作业分片总数为4,跑批服务器起了两台,根据AverageAllocationJobShardingStrategy ,每台服务器分到的分片是: 1=[0,1], 2=[2,3]。这可以在Elastic Job Console上作业列表中可以看出。 

本地服务器上也打印了shardingContext对象,以相互印证。

shardingContext:{"fetchDataCount":1,"jobName":"autoBidTransferLoanJob-1","jobParameter":"","monitorExecution":false,"offsets":{},"shardingItemParameters":{0:"NFM",1:"NFMF"},"shardingItems":[0,1],"shardingTotalCount":4}
  • 1

数据分片所需要做的,就是将shardingItemParameters作为参数传入查询跑批待处理数据列表的方法里,sql查询时增加一个动态in条件,例如:

 And accountType in (‘NFM’, ‘NFMF’)
  • 1

分片方案

1、数据库层面,对业务主键进行取模

where mod(id, 4) in (1, 2)
  • 1

这种方式的问题是,在主键或者索引字段外套了一个函数,索引失效、全表扫描。改进方案是查询条件中再增加一个索引字段。

where mod(id, 4) in (1, 2) and create_date > sysdate - 1
  • 1

2、数据库层面,增加字段,在生成数据时,就为该行数据生成一个mod值。 
做分片的初衷就是跑批数据量越来越大、单台机器处理能力有限,通过扩展机器数来提升系统处理的能力。该mod值建议不要太小,至少要比分片项大。例如,生成的1000条数据的mod值只有0和1,而机器数加到了10,那最终只有两台机器在运行,造成资源浪费。当然,我们可以及时调整生成数据时的取模值,新生成的数据还是会分散到不同的机器上。

3、业务层面,选取状态(state)、类型(accountType)等字段作为分区维度。

转载于:https://my.oschina.net/u/2548090/blog/1536799

elasticJob分片跑批相关推荐

  1. 微服务设计指导-使用云原生微服务解决传统海量跑批时引起的系统间“级联雪崩”以及效率

    问题描述 这也是一起真实的生产事故,如下图所示 这种"雪崩"是属于企业内部系统雪崩. 我们都知道如果是在外部http (包括一切restful.soap请求.http类型调用)调用 ...

  2. 学习笔记-如何设计离线跑批系统

    一.基本概念 离线跑批:通常指批量加工数据.完成一系列流程的定时任务. 业务场景:在银行.金融.支付出现较多,其他行业也可能涉及. 1. 定时的数据状态更新(到期失效) 2. 数据计算(计算罚息.计提 ...

  3. 查询慢 跑批慢 性能低怎么办? | 润乾高性能计算专家

    完整资料下载: 查询慢.跑批慢.性能低怎么办?| 润乾高性能计算专家

  4. tidb 企业_TiDB 在马上消费金融核心账务系统归档及跑批业务下的实践

    作者介绍: 康文权,马上消费金融总账高级研发工程师. 李银龙,原腾讯云运维工程师,马上消费金融容器云 TiDB 负责人,西南区 TUG Leader. 背景介绍 马上消费金融于 2015 年 6 月营 ...

  5. java跑批任务_【spring配置】——spring整合Quartz定时器

    第一种:为普通java类中的某个方法配置跑批任务MethodInvokingJobDetailFactoryBean CronTriggerBean SchedulerFactoryBean 1.定义 ...

  6. 【中亦安图】清算/报表/日终跑批程序之性能优化案例(5)

    第一章 技术人生系列 · 我和数据中心的故事(第五期)-清算/报表/日终跑批程序之性能优化案例(一) 中亦安图 | 2016-02-18 21:40 前言 不知不觉,技术人生系列·我和数据中心的故事来 ...

  7. 每日跑批任务耗时性能从六分钟优化到半分钟历程及总结

    话说做了一个产品需求上线后,涉及到有一个每日凌晨七点跑批任务,跑批查询出来的待处理订单也就1100单作用,但是耗时却花费了5~6分钟,虽说跑批中,又调用外部服务,但是仅仅在空闲时间,鉴于此情况 我觉得 ...

  8. 批量-跑批存在的意义

    批量,顾名思义,一批一批的数据,数据量多.为什么有批量,有跑批这种操作呢? 一个系统,大多数系统肯定不是独立存在,肯定存在系统与系统之间的交互,数据的交换,调接口,取别人系统的数据等.而且就算是一个独 ...

  9. Hive并行跑批简易一例

    1.目标表建表脚本 drop table if exists xxxxx_gift_record_byroom_bymonth; CREATE TABLE `xxxxx_gift_record_byr ...

最新文章

  1. linux下的基础操作
  2. 使用设置报头x-Frame-Options限制iframe网页嵌套
  3. 二叉树的非递归遍历(c/c++)
  4. SQLServer存储引擎——05.索引的结构和分类
  5. LeetCode(28): 实现strStr()
  6. 大数据学习笔记:距离度量和相似度度量
  7. 图神经网络(GNN)模型原理及应用综述
  8. 6000万条GitHub帖子告诉你:工作状态与表情符号强相关
  9. Java、Node.js、PHP还是.Net? 无论你选谁,我都能教你一招!
  10. AVR之bootloader介绍
  11. 马云给阿里的礼物:90多项区块链专利,全球最多
  12. 终结解决方案之最:struts2整合jasperreport再现图片无法显示
  13. DFS cdoevs 3100 蜗牛
  14. 利润最大化下的模型cutoff测算
  15. FZU 1573 大学自习室
  16. C-V2X仿真测试之虚拟场景设计
  17. 迷宫算法(JAVA实现)
  18. Thinkpad Intel 5100无线网卡间歇性掉线问题解决方案
  19. 数字练习_为什么要练习数字简约
  20. 赤壁游戏服务器获取玩家角色信息失败,赤壁进不去呀`````没服务器````

热门文章

  1. 关于Google Map API V2 版本的定位与导航
  2. 每天一点Linux --- 目录的可执行权限
  3. Spring.NET学习笔记(5)-对象生命周期和创建者对象
  4. VanDyke.SecureCRT.v7.0.0.326官方英文版x86 x64 + Keymaker-ZWT
  5. linux环境程序参数
  6. [转载]使用C#的BitmapData
  7. O(n^2) 级别的排序算法
  8. js插件---10个免费开源的JS音乐播放器插件
  9. 运用层通过shell脚本直接操控gpio
  10. ApplicationId 与 PackageName 的区别