资源预览内容
第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
第9页 / 共41页
第10页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
基于zookeeper和storm的车载 流式计算框架 摘要 n 案例背景 n 日本第一车载SAAS平台 n 案例需求 n 数据量剧增,吞吐量剧增 n 车载机数量剧增+数据库连接数剧增 n 任务分布不均导致实时性无法满足 n 案例技术方案 n 案例技术方案概览 n 数据存储平台MongoDB n 实时计算平台Storm n 集群协调ZooKeeper n 最佳实践 n MongoDB介绍及最佳实践 n Storm介绍及最佳实践 n ZooKeeper介绍及最佳实践 n 架构不足及经验分享 案例背景1业务背景 n 业务场景 物流公司 校车安全 油气公司 n 主要功能 运行数据记录 监视驾驶 违规警告 绩效考评 报表输出 危险地带 实时监控 日本市场占有率第一,积极拓展国内业务 WebAPP中间件层硬件层 通信层分析计算层1 分析计算层2 Web Server Write Write Write Read Write Polling Read RMDB PrimitiveLog 基本 Bs_WorkShee t Bs_TimeChart Bs_FreqData Bs_DigiData 集計 Master 設定 動態管 理 RMDB PrimitiveLo g 基本 Bs_WorkShee t Bs_TimeChart Bs_FreqData Bs_DigiData 集計 Master 設定 動態管理 RMDB PrimitiveLog 基本 Bs_WorkSheet Bs_TimeChart Bs_FreqData Bs_DigiData 集計 Master 設定 動態管理 案例背景2技术背景 市场竞争激烈,维持第一的保证PAAS 一 数据量剧增+吞吐量剧增 2013年 车辆数:10000台 数据量:3000w/天 吞吐量:80M/S () 車両数:10000 Commn Server Analysis Server Stastic Server 分時日月年 bs_primitiveLogWRW-62,3403,722,15729,763,261654,722,3977,856,6448,198 bs_WorkSheet-RWRW8,422504,8754,032,87488,704,7821,064,448,769 bs_TimeChart-RWRW10,873600,8744,804,430105,600,1001,267,200,296 bs_FreqData-WR45027,0964216,7846,480,54077,760,054 bs_DegitachoData-W-1,01060,079480,10010,560,006126,720,190 数据特性 Heavy Write Heavy Read Past Useless 2015年 车辆数:100000台 数据量:30000w/天 吞吐量:800M/S :车载机发送数据最高频率2次/秒,每次发送4KB数据。10000台车载机的峰值为10000*2*4KB =80000KB=80M/S :从这个数据可以算出实际平均吞吐量是62340*4KB/60 = 4M/s, 但是固定时间点车载机会同时向云端发送运行数据 () 此表抽出 通信中间件分析集计中间件DB bs_primitiveLog bs_WorkSheet bs_TimeChart bs_FreqData bs_DegitachoData 设置信息 写原始日志表车载机数据 二 连接数剧增+客户剧增 DB1 DB2 DB3 DBn 通信服务器与各个业 务DB建立长连接 目前的SAAS平台已经 有600租户 每个通信服务器要与 600个DB建立数据库连 接 归一化迫在眉睫 NoSQL 10W车辆时: 1.需要17台通信服务器 2.峰值:10W*8KB/S=800MB/S 数据量 长尾来袭 现在有600个客 户公司,未来? ? 三 分析计算程序任务不均匀+实时性不够 DB1 DB2 DB3 DBn Analysis Process Analysis Process Analysis Process Analysis Process n 现状 同一公司的车辆数据分布在同一数据库 分析计算进程与DB一对一地分析数据 n 问题 若一个公司有很多辆车,那么一个分析计算进程应付不过来,无法分散计算 若一个公司车辆很少,那么该公司对应的分析进程将没有任务,浪费服务器资源 因为分析进程的缓慢执行,车辆的实时运行数据无法反映到客户端 案例技术方案概览 案例技术方案概览 通信集群消息队列+存储计算集群数据库集群协调集群应用集群 接受连接 负载均衡 通信直连 事件网络 消息发布 消息订阅 数据库操作 存储消息 负载均衡 - 数据分片 主从备份 负载均衡 无模式 数据分解 数据分析 数据统计 日志分析 数据存储 模式隔离 私有仓库 节点管理 任务分配 状态维护 Open API Browser ipad Phone LibeventKafka MongoDB StormSQL ServerZooKeeperIIS、WCF 数据存储平台MongoDB MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最 丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可 以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有 点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而 且还支持对数据建立索引。 它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有: 面向集合存储,易存储对象类型的数据 模式自由 支持动态查询 支持完全索引,包含内部对象 支持查询 支持复制和故障恢复 使用高效的二进制数据存储,包括大型对象(如视频等) 自动处理分片,以支持云计算层次的扩展性 支持RUBY,PYTHON,JAVA,C+,PHP等多种语言。 文件存储格式为BSON(一种JSON的扩展) 可通过网络访问 数据量剧增和连接数剧增的解决办法 n 高频读写表抽出 n 1公司:1DB模式N公司:1DB DB1 DB2 DB3 DBn DB1 DB1 DB2 DB3 DBn 选择MongoDB的原因 n 增删改查操作最接近SQL,迁移容易,并可为其他业务使用 n 支持数据的自动和手动分片,横向扩展容易 n 性能测试结果接近预期,够用即可,不用追求完美 n 支持数据复制、故障转移、横向扩展,基本符合RAS需求 CAP定理性能 关系 不大 2个mongos,3个分片,非安全插入: 单独执行时: 写线程10个并发时,每秒37000次写入 读线程4个并发时,每秒43000次读取 同时执行时: 写线程10个并发时,每秒达25000次写入 读线程4个并发时,每秒达36000次读取 :CPU 3.2GHz MEM 16G 千兆网卡 MongoDB最佳实践 n 逻辑部署和物理部署 n 存储结构设计 n 定期数据清除 Shards Load Balance Config server Replica sets mongosmongosmongos mongod mongod mongod mongod mongod mongod mongod mongod mongod mongod mongod mongod C 2mongod C1 mongod C3 mongod client MongoDB的部署逻辑架构 client 192.168.0.2192.168.0.3192.168.0.4192.168.0.5192.168.0.6 Shard1(master) Shard2(master)Shard3(master)Shard1(slave)Shard1(arbiter) Shard2(slave) Shard3(slave)Shard1(slave)Shard3(slave)Shard2(arbiter) Shard3(arbiter) Shard1(arbiter)Shard2(arbiter)Shard2(slave)Shard3 (arbiter) Config server1Config server2mongosmongosmongos Shard1:192.168.0.2,192.168.0.5,192.168.0.4,192.168.0.3,192.168.0.6(arbiter) Shard2:192.168.0.3,192.168.0.5,192.168.0.2,192.168.0.4,192.168.0.6(arbiter) Shard3:192.168.0.4,192.168.0.5,192.168.0.3,192.168.0.2,192.168.0.6(arbiter) Config Server1:192.168.0.2 Config Server2:192.168.0.3 Mongos:192.168.0.4,192.168.0.5,192.168.0.6 MongoDB部署物理架构 存储数据结构设计 “v”: “DTS19982221” “r”: “t” : “2013-11-14T08:17:00.016Z“ “d” : ”xxxxxxxxxxxxxxxxxx” “o” : “yyyyyyyyyyyyyyyyyy” , “t” : “2013-11-14T08:19:38.342Z“ “d” : ”xxxxxxxxxxxxxxxxxx” “o” : “yyyyyyyyyyyyyyyyyy” “s”: “zzzzz” 名字段要短 db.vehicle.save(“v”:” DTS19982221 ”, “r“: “t“: 201399988772, “d”:”xxxxxxxxxxxxxxxx”,”o”:”yyyyyyyyyyy” db.vehicle.find(“v”:” DTS19982221 ”, “r“: “$elemMatch“: “t“:“$gte“: 201309898876251728 定期数据清除 n 清理程序(MonDC)运行在ZooKeeper集群上,自身无状态 n 清理程序(MonDC)监视MongoDB内存使用量 n 清理程序(MonDC)检测删除过期数据 实时计算平台Storm 与Hadoop类似,Storm为分布式实时计算提供了一组通用原语。可被用于“流处理”之 中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。Storm也可 被用于“连续计算”, 对数据流做连续查询,在计算时就将结果以流的形式输出给用户。 它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。 Storm的主工程师Nathan Marz表示:Storm可以方便地在一个计算机集群中编写与扩展 复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证每个消 息都会得到处理,而且它很快在一个小集群中,每秒可以处理数以百万计的消息。更 棒的是你可以使用任意编程语言来做开发。 Storm的主要特点如下: 简单的编程模型 可以使用各种编程语言 容错性 水平扩展 可靠的消息处理 快速 Storm为什么号称实时计算系统? n 计算基于内存,较之磁盘有数量级之差 n 使用消息队列做数据传输,速度比数据库快很多 n 使用流式计算思想,数据可以源源不
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号