百度海量日志处理——任务调度实践与优化
本文作者:AIOps智能运维 作者简介 运小军 百度高级研发工程师 负责百度运维部大规模日志处理、海量事件数据存储相关设计研发工作,在分布式系统架构、大数据存储计算、高性能网络服务和即时通讯服务有广泛实践经验。 干货概览 本文主要介绍百度运维部监控架构团队在处理 大规模日志计算任务 时,为保证任务分配均匀性和稳定性,对原始 一致性哈希 算法进行改进。新算法在保持原始一致性哈希算法稳定性的同时,通过设置 不均衡因子 来控制分配的不均匀范围,达到负载分配均匀性与稳定性有效兼容。 一 业务场景 分布式系统中我们经常会面对如下业务场景: 计算系统每分钟有大量的定时任务需要及时调度并按时完成,单机在处理能力和时效性上都无法满足要求,需要将任务分配到大量Work节点上进行并行计算,我们如何均匀分配这些任务,并且在任务增减,Work节点退出/加入(伸缩能力)时保持任务分配的稳定性(不会引起大量任务迁移)。 分布式存储系统,海量数据被分片存储,那么如何让每个Data节点上分片更加均匀,并且在Data节点退出/加入时保持数据分片的稳定性。 高并发Web系统中,架构上几乎都是一个或多个反向代理服务器(如Nginx)来做七层负载均衡,后端使用应用服务器集群(如Tomcat)提供服务,这种架构具备水平伸缩能力,那么反向代理如何均匀分配请求,并且尽量保证请求Session粘性。 二 问题分析