




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 基于zookeeper和storm的车载 流式计算框架 邵贤军 开发工程师 南京富士通南大软件技术有限公司 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 摘要 n 案例背景 n 日本第一车载SAAS平台 n 案例需求 n 数据量剧增,吞吐量剧增 n 车载机数量剧增+数据库连接数剧增 n 任务分布不均导致实时性无法满足 n 案例技术方案 n 案例技术方案概览 n 数据存储平台MongoDB n 实时计算平台Storm n 集群协调ZooKeeper n 最佳实
2、践 n MongoDB介绍及最佳实践 n Storm介绍及最佳实践 n ZooKeeper介绍及最佳实践 n 架构不足及经验分享 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 案例背景1业务背景 n 业务场景 物流公司 校车安全 油气公司 n 主要功能 运行数据记录 监视驾驶 违规警告 绩效考评 报表输出 危险地带 实时监控 日本市场占有率第一,积极拓展国内业务 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! WebAPP中间件层硬件层 通信层分析计算层1 分析计算层2 Web Server Write
3、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 設
4、定 動態管理 案例背景2技术背景 市场竞争激烈,维持第一的保证PAAS 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 一 数据量剧增+吞吐量剧增 2013年 车辆数:10000台 数据量:3000w/天 吞吐量:80M/S () 1000 2000 4000 5000 7000 10000 0 5000 10000 15000 200220042006200820102012 车辆数 车辆数 車両数:10000 Commn Server Analysis Server Stastic Server 分時日月年 bs_primitiveLogWRW-
5、62,3403,722,15729,763,261654,722,397 7,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 W
6、rite 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
7、_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个客 户公司,未来? 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 三 分析计算程序任务不均匀+实时性不够 D
8、B1 DB2 DB3 DBn Analysis Process Analysis Process Analysis Process Analysis Process n 现状 同一公司的车辆数据分布在同一数据库 分析计算进程与DB一对一地分析数据 n 问题 若一个公司有很多辆车,那么一个分析计算进程应付不过来,无法分散计算 若一个公司车辆很少,那么该公司对应的分析进程将没有任务,浪费服务器资源 因为分析进程的缓慢执行,车辆的实时运行数据无法反映到客户端 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 案例技术方案概览 揭示研发管理白金定律,分享那些激
9、动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 案例技术方案概览 通信集群消息队列+存储计算集群数据库集群协调集群应用集群 接受连接 负载均衡 通信直连 事件网络 消息发布 消息订阅 数据库操作 存储消息 负载均衡 - 数据分片 主从备份 负载均衡 无模式 数据分解 数据分析 数据统计 日志分析 数据存储 模式隔离 私有仓库 节点管理 任务分配 状态维护 Open API Browser ipad Phone LibeventKafka MongoDB StormSQL ServerZooKeeperIIS、WCF 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过
10、多源动力与更大的推动力! 数据存储平台MongoDB MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最 丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可 以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有 点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而 且还支持对数据建立索引。 它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有: 面向集合存储,易存储对象类型的数据 模式自由 支持动态查询 支持完全索引,包含内部对象 支持查询 支持复制和
11、故障恢复 使用高效的二进制数据存储,包括大型对象(如视频等) 自动处理分片,以支持云计算层次的扩展性 支持RUBY,PYTHON,JAVA,C+,PHP等多种语言。 文件存储格式为BSON(一种JSON的扩展) 可通过网络访问 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 数据量剧增和连接数剧增的解决办法 n 高频读写表抽出 n 1公司:1DB模式N公司:1DB DB1 DB2 DB3 DBn DB1 DB1 DB2 DB3 DBn 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 选择MongoDB的原因
12、 n 增删改查操作最接近SQL,迁移容易,并可为其他业务使用 n 支持数据的自动和手动分片,横向扩展容易 n 性能测试结果接近预期,够用即可,不用追求完美 n 支持数据复制、故障转移、横向扩展,基本符合RAS需求 CAP定理性能 关系 不大 2个mongos,3个分片,非安全插入: 单独执行时: 写线程10个并发时,每秒37000次写入 读线程4个并发时,每秒43000次读取 同时执行时: 写线程10个并发时,每秒达25000次写入 读线程4个并发时,每秒达36000次读取 :CPU 3.2GHz MEM 16G 千兆网卡 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源
13、动力与更大的推动力! 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的部署逻辑架构
14、 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)Sha
15、rd2(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
16、) 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:1
17、9: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 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源
18、动力与更大的推动力! 定期数据清除 n 清理程序(MonDC)运行在ZooKeeper集群上,自身无状态 n 清理程序(MonDC)监视MongoDB内存使用量 n 清理程序(MonDC)检测删除过期数据 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 实时计算平台Storm 与Hadoop类似,Storm为分布式实时计算提供了一组通用原语。可被用于“流处理”之 中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。Storm也可 被用于“连续计算”, 对数据流做连续查询,在计算时就将结果以流的形式输出给用户。 它还可被用于“分布式RP
19、C”,以并行的方式运行昂贵的运算。 Storm的主工程师Nathan Marz表示:Storm可以方便地在一个计算机集群中编写与扩展 复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证每个消 息都会得到处理,而且它很快在一个小集群中,每秒可以处理数以百万计的消息。更 棒的是你可以使用任意编程语言来做开发。 Storm的主要特点如下: 简单的编程模型 可以使用各种编程语言 容错性 水平扩展 可靠的消息处理 快速 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm为什么号称实时计算系统? n 计算基于内存,较之磁
20、盘有数量级之差 n 使用消息队列做数据传输,速度比数据库快很多 n 使用流式计算思想,数据可以源源不断的被处理 n 任何一个节点都可以将中间计算结果反馈给用户 为什么选择Storm? n 无需维护消息队列(Topic、LB、Broker),专注Producer&Consumer n 满足业务需求,适合业务场景 n 社区活跃,版本更新快 n 性能卓越,易扩展 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm里的核心概念 n Tuple&Stream TupleTuple Stream n Topology&Spout&Bolt SpoutBo
21、ltBolt Bolt Bolt Bolt 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Cluster Storm里的核心概念 n Nimbus&Supervisor&Worker&Task Nimbus ZooKeeper Supervisor ZooKeeper ZooKeeper Supervisor Supervisor Supervisor Supervisor Worker Task:SpoutTask:BoltTask:Bolt 提交代码,分配任务,监 视Supervisor 运行业务拓扑 线程 进程 揭示研发管理白金定律,分享那些
22、激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm里的核心概念 n Stream Grouping SpoutBoltABolt BoltBBolt BoltC I know who am I I Know:1 who am I:1 I know I:1 who:1 am:1 NOT PASS 问题:如何保证tuple按照予定的路径发送到指定Bolt呢? 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm里的核心概念 n Stream Grouping Shuffle Grouping 随机分组, 随机派发stream里
23、面的tuple. Fields Grouping 按字段分组,具有同样字段的tuple会被分到相同的 Task。 All Grouping 广播发送, 对于每一个tuple, 所有的Bolts都会收到。 Global Grouping 全局分组, 这个tuple被分配到storm中的一个bolt的 其中一个task。再具体一点就是分配给id值最低的那个 task。 Non Grouping 不分组, 这个分组的意思是说stream不关心到底谁会 收到它的tuple。 Direct Grouping 直接分组, 这是一种比较特别的分组方法,用这种分组 意味着消息的发送者指定由消息接收者的哪个ta
24、sk处理 这个消息。 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm里的核心概念 n Stream Grouping BoltABoltB BoltABoltB BoltABoltB BoltABoltB All Fields Shuffle Global 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Storm最佳实践 n 计算拓扑设计 n 数据顺序性保证 n 基于统计的Worker和Task数值设置 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力!
25、 计算拓扑设计 n 数据输入 FetchSpout MongoDB中读取车辆运行数据 n 分析处理 AnalysisBolt 解码运行数据,如经纬度、违反等 n 数据准备 DataPreBolt 为集计所需要的数据作准备,会与数据库交互 n 集计处理 StasticBolt 统计一段时间或一天的运行数据 n 数据库写 DBWBolt 所有涉及写数据库的操作由此BOLT完成 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 计算拓扑设计 MongoDB FetchSpoutAnalysisBolt AnalysisBolt AnalysisBolt Da
26、taPreBolt DataPreBolt DBWBolt DBWBolt Company 1Company 2 Company 3Company 4 DBMLayer StasticBolt StasticBolt FetchSpout FetchSpout 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! AnalysisBolt AnalysisBolt Spout DataCollBolt DataCollBolt StasticBolt StasticBolt Fileds Grouping Fileds Grouping Fileds Gr
27、ouping DTS0002, XXXXXX DTS0001, XXXXXX DTS0001, YYYYY DTS0002, YYYYY DTS0001, ZZZZZZZ DTS0002, ZZZZZZZ Fields Grouping 按字段分组, 比如按VehicleId的模n结果来分组, 具有同样VehicleId的tuple会被分到相同的 Bolts, 而不同的userid则会被分配到不同的Bolts。 计算拓扑设计 顺序性如何保证 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 最大效率化基于统计的计算量均匀化 最佳参数设置 通过反复的测试
28、,得到一个接近能够处理完数据的比例设置,这里是2:10. 按照一个最佳数值设置建议:Worker个数是机器的整数倍,Task是Worker的整数倍。我们有7台机 器作为Supervisor,所以Worker数设置为7,Task数值为14,于是得到FetchSpout个数为2, AnalysisBolt个数为12. 以上设置后,计算延时降低到1.3s左右 Storm Cluster Number: 8 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Zookeeper简介 Zookeeper是Google的Chubby一个开源实现,是高有效和可靠的协同
29、工作系 统。 Zookeeper能够用来leader选举,配置信息维护等,在一个分布式的环境中, 需要一个Master实例或存储一些配置信息,确保文件写入的一致性等。 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,包含一个 简单的原语集,是Hadoop和Hbase的重要组件。 目前提供Java和C的接口。 n 谁在用ZooKeeper n ZooKeeper是什么 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! lZooKeeper软件维护的是一个树形的数据结构 l从任一个ZooKeeper节点看,树视图都一样 /root /d
30、ataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1 lZooKeeper集群维护的是一个树形的数据结构 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /
31、subDataNode2 /subDataNode1 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDa
32、taNode1 /subDataNode2 /subDataNode1 写操作 lZooKeeper各节点之间的数据结构是同步的 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 Zookeeper核心概念数据结构 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! Zookeeper核心概念节点类型 节点特点功能 PERSISTENT 持久化目录节点,节点数据 不会丢失 保存配置文件,小量数据存 储 PERSISTENT_SEQUENTIAL顺序自动编号
33、目录节点队列,共享锁等 EPHEMERAL 临时目录节点,客户端断开 即消失 作为客户端连接状态的监控 节点 EPHEMERAL_SEQUENTIAL临时自动编号目录节点同上,但可作为队列 /root /dataNode1 /dataNode2 /dataNode3 /dataNode4 /dataNode5 /subDataNode1 /subDataNode2 /subDataNode1 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! n 统一命名服务(Name Service) n 配置管理(Configuration Management)
34、n 集群管理(Group Membership) n 共享锁(Locks) n 队列管理 (Queue Management) Zookeeper的应用场景 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! ZooKeeper的使用 n 协调数据清理( MonDC ) n 协调任务分配(TaskDistribute) n 协调Spout对MongoDB的数据访问 n 集群节点监控 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 数据清理程序( MonDC ) 开始 MongoDB 轮询清理警戒 是 否 /shardProcTime /shard1:2013000912 /shard2:2013000523 /shard3:2013000943 /shard4:2013000125 /shard5:2013000229 mongostat 揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力! 任务分配程序(TaskDistribute) spoutTasks | TASK365B33D23B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 多元文化理解试题及答案
- 2024年育婴师考试重要提示试题及答案
- 新兴科技在地理中的应用试题及答案
- 2024年监理工程师考试须知事项试题及答案
- 全媒体运营师平台分析试题及答案
- 2024年投资咨询工程师政策法规试题及答案
- 二年级信息技术下册 文章标题更醒目 1教学实录 泰山版
- 2023四年级语文上册 第三单元 11 蟋蟀的住宅配套教学实录 新人教版
- 全国粤教清华版初中信息技术八年级下册第2单元第1节《认识智能生活》教学设计
- 山东省胶南市理务关镇中心中学七年级信息技术 图文并茂的作文教学实录
- 农业机械学育苗移栽机械
- 澳大利亚PSC检查经过
- 01-14江苏大学车辆工程考研复试真题答案
- TMYZX 001-2021 酿酒专用小麦原粮
- 2023年湖北国土资源职业学院高职单招(数学)试题库含答案解析
- GB/T 37910.1-2019焊缝无损检测射线检测验收等级第1部分:钢、镍、钛及其合金
- 雷锋叔叔你在哪里教学反思
- (新版)国家统计执法证资格考试备考题库(含答案)
- 项目验收单标准模板
- 小学 三年级 心理健康《最好的老师-兴趣的作用》教学设计
- DB12T 1040-2021 建筑工程规划管理技术规范
评论
0/150
提交评论