欢迎来到天天文库
浏览记录
ID:8219391
大小:9.07 MB
页数:124页
时间:2018-03-10
《ArchSummit北京-《Uber的流处理系统及实践》-袁泳》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、优步流处理应用袁泳@UBER优步简介便捷交通,弹指之间流数据-城市的脉搏市场动态当前全球有多少车可用过去10分钟里旧金山里每个区域有多少车载客?过去10分钟里旧金山里每个六边形有多少车载客?历史变化状态跟踪出发点优步平台本质:分布式状态机乘客状态优步平台本质:分布式状态机乘客状态司机状态各类应用生成事件秒级事件延迟事件绝少丢失收集事件消息-低开销、易扩展挑战在哪里?多维度每个事件消息包含数十字段细粒度数据细粒度数据细粒度数据每个城市多于10,000六边形细粒度数据7种车型细粒度数据一天1440分钟细粒度数据13种司机状态细粒度数据300座城市细粒度数据一天数据量:300x10
2、,000x7x1440x13=3930亿可能组合查询模式不定任意维度的组合多种聚合查询HeatmapTopNHistogramcount(),avg(),sum(),percent(),geo多变的地理位置聚合查询高流量•数十万条消息每秒,数百亿一天•每条消息包含数十字段短时交货关键:把问题一般化数据类型•多维时序数据维度值statedriver_arrivedvehicletypeuberXtimestamp13244323342lattitude12.23longitude30.00数据查询•基于单表时空数据的OLAPSELECT,3、sions>FROMWHEREGROUPBYHAVINGORDERBYLIMITDO选择存储系统最低要求•支持时序和地理空间的OLAP•支持大流量数据•支持秒级查询•支持原始数据查询键值数据库键值数据库一键一值:预算所有组合维度值AaBb一键一值:预算所有组合•布尔操作符:AND,OR,NOT维度值AaBb一键一值:预算所有组合•布尔操作符:AND,OR,NOT维度值•Aand(notB)Aa4、•Band(notA)Bb•AorB•not(AorB)一键一值:预算所有组合维度•{A}•{B}A•{A,B}B•{}一键一值:预算所有组合维度•{A}•{B}A—>计算幂集•{A,B}B•{}键值数据库的局限n预算所有键值组合的时空复杂度:O(2)关系数据库关系数据库关系数据库的局限•不易管理多项索引关系数据库的局限•扫描速度不够但我的KV系统速度奇快光快不行一个城市里每个六边形里车的数目=>18,000次查询平均延迟:1ms99.99百分位延迟:2s失败率:0.001%光快不行18000一次查询延迟超过99.99百分位的概率:(1-0.9999)x=83%18000一次5、查询成功的概率:(1-0.00001)=84%系统必备功能•快速扫描•布尔查询•原始数据•各类聚合Elasticsearch基于高效倒排索引的布尔查询内建分布式查询快速扫描,灵活聚合存储搞定没?数据转换e.g.(Lat,Long)->(zipcode,hexagon)动态定价趋势预测供求分布技术上说:Clustering&Pr(D,S,E)新场景—>新需求预处理JoiningMultipleStreamsSessionization多级处理状态管理ApacheSamzaWhyApacheSamza?DAGonKafka与Kafka的一流整合内置检查点内置状态管理处理存储存储层6、当掉怎么办?预处理耗时太久怎么办?处理存储终于搞定了?后期处理查询结果转换和平滑处理查询结果转换和平滑处理计算规模一个城市至少10,000六边形计算规模每个六边形331个邻居需要处理计算规模一次查询:331x10,000=310万六边形计算规模99%-ile处理时间:70ms简单架构“Youcanhaveasecondcomputeronceyou’veshownyouknowhowtousethefirstone.”-PaulGraham后期处理•每个处理单元都是纯函数•通过组合算子组合处理单元后期处理•高度并行化的执行•流水线务实考量数据发现Elasticsearch查询语7、句过度复杂SELECTtimeseries(7d) FROMdriverAcceptanceRateWHEREgeo_dist(10, [37, 22])ANDtimeIN(2015‐02‐04,2015‐03‐06) AND msg.driverId=1Elasticsearch查询可以优化•流水线•查询验证•查询限速secondsTimeinElasticsearch也许会被替换ProcessingStorageQuery还有一件事数据流里总有不同模式总有快速探索发现模式的需要多少司机在5分钟内连续
3、sions>FROMWHEREGROUPBYHAVINGORDERBYLIMITDO选择存储系统最低要求•支持时序和地理空间的OLAP•支持大流量数据•支持秒级查询•支持原始数据查询键值数据库键值数据库一键一值:预算所有组合维度值AaBb一键一值:预算所有组合•布尔操作符:AND,OR,NOT维度值AaBb一键一值:预算所有组合•布尔操作符:AND,OR,NOT维度值•Aand(notB)Aa
4、•Band(notA)Bb•AorB•not(AorB)一键一值:预算所有组合维度•{A}•{B}A•{A,B}B•{}一键一值:预算所有组合维度•{A}•{B}A—>计算幂集•{A,B}B•{}键值数据库的局限n预算所有键值组合的时空复杂度:O(2)关系数据库关系数据库关系数据库的局限•不易管理多项索引关系数据库的局限•扫描速度不够但我的KV系统速度奇快光快不行一个城市里每个六边形里车的数目=>18,000次查询平均延迟:1ms99.99百分位延迟:2s失败率:0.001%光快不行18000一次查询延迟超过99.99百分位的概率:(1-0.9999)x=83%18000一次
5、查询成功的概率:(1-0.00001)=84%系统必备功能•快速扫描•布尔查询•原始数据•各类聚合Elasticsearch基于高效倒排索引的布尔查询内建分布式查询快速扫描,灵活聚合存储搞定没?数据转换e.g.(Lat,Long)->(zipcode,hexagon)动态定价趋势预测供求分布技术上说:Clustering&Pr(D,S,E)新场景—>新需求预处理JoiningMultipleStreamsSessionization多级处理状态管理ApacheSamzaWhyApacheSamza?DAGonKafka与Kafka的一流整合内置检查点内置状态管理处理存储存储层
6、当掉怎么办?预处理耗时太久怎么办?处理存储终于搞定了?后期处理查询结果转换和平滑处理查询结果转换和平滑处理计算规模一个城市至少10,000六边形计算规模每个六边形331个邻居需要处理计算规模一次查询:331x10,000=310万六边形计算规模99%-ile处理时间:70ms简单架构“Youcanhaveasecondcomputeronceyou’veshownyouknowhowtousethefirstone.”-PaulGraham后期处理•每个处理单元都是纯函数•通过组合算子组合处理单元后期处理•高度并行化的执行•流水线务实考量数据发现Elasticsearch查询语
7、句过度复杂SELECTtimeseries(7d) FROMdriverAcceptanceRateWHEREgeo_dist(10, [37, 22])ANDtimeIN(2015‐02‐04,2015‐03‐06) AND msg.driverId=1Elasticsearch查询可以优化•流水线•查询验证•查询限速secondsTimeinElasticsearch也许会被替换ProcessingStorageQuery还有一件事数据流里总有不同模式总有快速探索发现模式的需要多少司机在5分钟内连续
此文档下载收益归作者所有