超大数据量,怎样加快写文件的速度( 五 )
最终我们选择了国产商业产品,结合少部分定制开发,形成了分布式并行处理平台,所有批量业务由平台统一调度执行。平台负责资源管控、负载均衡及故障处理。目前项目已按照既定上线时间投产,生产环境使用20个节点,已达成现阶段日处理目标,并在仅增加节点的情况下,通过了300%业务量的模拟测试,项目各项成本也得到了有效控制。
上线平台的应用效果
● 8.1 业务开发
并行模型与多线程模型极为类似,并行任务只需要实现两部分逻辑:
任务如何拆分为分片及分片如何合并(合并是可选的,非必需);任务分片如何执行。批量业务由于其“成批”执行的特点,天然存在着将任务拆分为多片的特征,如成批处理的报关单,每个报关单即可作为一个拆分维度,报关单中包含的多个成品,则是另外一个拆分维度。
如图11,这样的模型理解简单,便于开发人员上手,一个2年左右、熟悉Web后台开发的研发人员,只需要1天时间,即可上手开发。
图11 简洁模型描述业务
开发之外,就是调试,本平台提供本地模拟器,提供类似单机调试体验,可断点调试。开发人员先在本地完成模拟测试,随后在测试集群上测试,分布式调试时,提供了分布式日志收集及异常检测,开发人员可以快速收集多点上的日志,迅速定位异常实现调试。
● 8.2 任务实现“幂等”
批量任务通常较大,任务可能出现执行中断,或者部分故障,保证任务及任务任意分片可以重跑是十分必要的,也就是说,分布式并行任务的逻辑,是“幂等”的。本平台通过在任务(如报关单)和分片(成品)数据表增加标志位列实现了幂等。关系型数据库事务保证了任务最小单位——分片——执行完毕,其对应的标志位才更新,任务全部分片完成,任务标志位才更新。这样的设计容易实现及调试,也非常可靠,可以有效节省开发时间。
● 8.3 作业调度
从作业角度,多个作业(可能来自不同队列,如ETL队列,报关单分解队列)要求可以并发执行。如图12,本平台Job、Task由两类节点执行,执行Job的节点称为Manager节点,执行Task的节点称为Agent节点。节点设置一个 “计算能力”用于限制并发执行Job数(Manager节点)、Task数(Agent节点)。
图12 作业调度流程
为实现并发执行,每个任务的资源调度采取两段式的方式执行(图13),当集群Manager节点有空闲计算能力时,Job按优先级、提交顺序计算权值获得执行资源。当集群Agent节点有空闲计算能力时,Job的分片Task,按优先级、提交顺序、获得执行机会等待间隔综合计算权值获取执行资源。
图13 两段式资源分配
有先后依赖关系的作业,形成作业流(图14)。平台通过一个独立的作业流调度引擎,提供对作业流的支持能力。如图15,作业流可以定时触发,亦可按需触发。可以对作业流进行干预,暂停,取消,跳过异常节点等。
图14 作业流定义
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 最适合客厅摆放的15种大厅绿植,超大气漂亮
- “一部手机读云南”上线力争建成国家方志大数据中心西南中心
- 上海构建现代环境治理体系集成示范区打造超大城市生态环境治理的“样本”
- 联合国大数据全球平台中国区域中心在杭州成立
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 银行的数据中心可以跳槽去互联网公司吗
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
