资源预览内容
第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
第9页 / 共28页
第10页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
滴滴业务实时监控系统架构及实践 艾毅 2016/12 议程 滴滴实时监控系统演变历程 当前架构及服务介绍 系统优化方向 滴滴实时监控系统演变历程 预计算 2015年之前年之前2015年至今年至今 瓶颈: 计算、存储成本指数级增长 不易扩展 优势: 实时分析海量数据 (秒级) OLAP系统交互式查询 挑挑 战战 解决方解决方 案案 快速满足业务需求 业务数据库分库、分表 数据、维度、指标越来越多 议程 滴滴实时监控系统演变历程 当前架构及服务介绍 系统优化方向 滴滴实时监控系统当前架构概览 Mysql BinlogCanal Server Kafka Cluster 1 Text LogFlume Agent APIPython Daemon Samza Unified ETL Job Kafka Cluster 2 Raw data 通用业务 Json data 数据分析 数据格式转换 数据去重 Samza Metrics Computing Druid Kafka Real-time Indexer HDFS Samza HDFS Producer Druid HDFS Batch Indexer Online Machine Learning Druid Broker API基于指标的语义化API APP:监控报警、热力图 当前系统架构特点 高可用 易扩展 高性能 支持有状态的实时计算 为何选用Kafka? Kafka 是一个高性能、高可用、易扩展的 分布式日志系统 将整个数据处理流程解耦将整个数据处理流程解耦 为何选用Druid? Druid是针对时间序列数据提供低延时的数据写 入以及快速交互式查询的的分布式OLAP数据库 Druid的数据存储方式 为OLAP查询优化过的列式存储结构:Segment Segment中存储聚合计算后的统计结果 主要根据时间对Segment文件进行分片存储 Segment包含的三种列类型 时间时间戳列戳列 作为数据分发、存储、查询的依据 维度列维度列 支持过滤和分组 使用字典编码压缩 使用BitMap索引压缩 指标列指标列 用来聚合计算 使用LZ4压缩 Druid的数据处理流程介绍 Druid节点 外部依赖实时流数据 离线数据 客户端请求 Segements 查询 元数据 缓存 缓存 Lambda架构 Druid Kafka Indexing Service介绍 Overlord Middle Managers Middle Manager 1 Middle Manager 2 Middle Manager 3 Kafka Partition 0 Partition 1 Topic 1 Partition 0 Partition 1 Topic 2 Kafka中每个Partiton的消息是 严格有序、追加写入、不可改变 的 可“回退”到任意的Partition- offset重新消费数据 实现Exactly-Once的实时计 算 控制流 数据流 Druid支持近似统计算法 为什么要使用近似算法?为什么要使用近似算法? 计算速度快 误差可控 显著降低计算、存储需求 Druid是如何实现近似算法的?是如何实现近似算法的? 基于Yahoo开发的 datasketches 库 使用Theta Sketch近似算法 支持集合操作(并集、交集、差集) Druid支持地理查询 矩形查找 圆形查找 任意多边形查找 滴滴贡献给了社区 包含在Druid 0.9.2版本 滴滴实时订单热力图 为何选用Samza? Samza是一个分布式的实时计算框架; 支持低延时的、有状态的实时计算 Samza运行机制介绍 Node Manager Samza job Container 1 Host 1 Samza Job on YARN YARN AM Node Manager Samza job Container 2 Host 2 YARN AM Node Manager MR job Container 1 Host 1 Map Reduce Job on YARN YARN AM Node Manager MR job Container 2 Host 2 YARN AM Samza Job可看作一个实时计算版的Map/Reduce Job VS Samza数据处理流程介绍 输入流 Partition 0Partition 1Partition 2 Task 0 Task 1 Task 2 Checkpoint Stream输出流Changelog Stream Container 1Container 2 本地状态存储 (RocksDB) job Samza的高可用性 不会出现“雪崩” 不会丢失数据 缓存队列:基于磁盘,不受内存限制 YARN为Samza Job提供了容错机制 Log AKafkaLog BLog CLog D SamzaJob 1 Job 2YARN Samza常见计算类型 处理单条信息处理单条信息 Filter: 根据特定条件筛选匹配的记录 Map: Log= f(Log) 处理多条信息处理多条信息 Join: 对多个数据流做关联计算 Group:对记录进行分组 Aggregate: 对处于相同Group的数据进行聚合计算 需要状态管理 Samza实现有状态的实时计算 基于过去的数据状态来处理当前的数据:本质是数据缓存机制 Samza基于RocksDB实现本地状态存储 大数据实时计算场景下 移动数据,离计算资源近一点 DB DB Query Task1Task2Task3 DB DBDBDB 输入流 Change log Task1Task2Task3 输入流 滴滴实时监控可视化界面 监控覆盖滴滴全部核心业务线 滴滴业务智能预警系统 基于Holt-Winters时间序列分析模型 Holt-Winters时间序列分析模型介绍 议程 滴滴实时监控系统演变历程 当前架构及服务介绍 系统优化方向 Lambda架构的问题 同样的业务逻辑需要维护实时和离线计算两套代码 重新处理数据只能依赖离线计算,计算较慢 优化方向 实现“端到端”的Exactly-Once实时数据处理,不再需要离线修正 Samza Local Cache 智能感知Kafka Partiton变化 Druid Kafka Indexing Service 数据的重新处理机制: Kappa : 新起一个实时计算任务,新旧任务并行处理 Liquid :停止当前实时计算任务,修改Offset后,重启任务 THANK YOU 北京嘀嘀无限科技发展有限公司 北京市海淀区东北旺路8号院尚东数字山谷B2号楼 www.xiaojukeji.com
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号