文档章节

滴滴出行的数据架构和信息流处理思路解析

宋庆离
 宋庆离
发布于 10/12 09:57
字数 2926
阅读 1249
收藏 1

截止到今年7月,滴滴注册用户已超过5.5亿,年运送乘客达100亿人次,每日处理数据4875+TB,日定位数超过150亿,每日路径规划请求超过400亿次。面对庞大的数据量,滴滴的实时计算、数据存储和数据清洗都基本做到了行业典范。下面我们来了解一下滴滴的数据库框架设计和信息流处理流程。

 

首先,滴滴出行的后台使用一套环境,前端按照系统分成了两个WEB项目(一个是订单数据监控系统,一个是出行数据运营系统)进行数据展示,其数据流处理流程如下:

 

接下来我们剖析一下智慧出行的底层数据架构

 

1、项目架构及解决方案论述

1.1 通过binlog方式实时梳理业务库高QPS压力

1.2 内置源码模块,细粒度监控Spark作业,失败及时邮件报警

1.3 覆盖源码自定义数据源加载,从源头进行列剪枝

1.4 自定义维护Kafka的偏移量管理,实现exactlyonce

1.5 实现前后端rest接口的开发规范

2、项目模块搭建

2.1 前后端模块分离

2.2 项目依赖的版本规范

3、项目平台搭建(Cloudera)

3.1 Cloudera的服务搭建

3.2 Cloudera的Hadoop生态搭建

3.3 Cloudera的分布式消息系统搭建

4、业务库高并发解决方案介绍和架构实现

4.1 业务库binlog的落地

4.2 实时抓取binlog并解析到分布式消息队列

5、项目common模块的开发实现

 

      然后我们针对滴滴智慧出行各模块数据业务制定了一份“学习方案”。如果你已经零零散散学习了很多大数据相关知识,但始终没有一个相对完整的知识体系,那一定要读完哦~

 

*一、智慧出行网约车服务体系建设的开发

*1、实时订单统计

*1.1 订单数据回放

*1.2 数据回放的断点续传解决方案

*1.3 实时订单数据统计(订单情况、乘车人数情况)

*2、全域订单轨迹监控

*2.1 实时订单轨迹监控

*2.2 历史订单轨迹回放

 

*二、智慧出行之虚拟车站、出行订单、出行迁途、订单报告

*1、虚拟车站重现

*1.1 服务端统计实现

*1.2 Java中台查询

*2、智慧出行-订单监控

*2.1 每个城市下实时订单统计

*3、智慧出行-出行迁途

*3.1 Java中台出发地和目的地的统计

*3.2 出发地和目的地的统计的接口发布

*4、智慧出行-订单报告

*4.1 专车、拼车、顺风车等分类统计

*4.2 车型查询接口的发布

*4.3 车型关联订单的统计

*4.4 车型关联订单查询接口的发布

*5、智慧出行-订单查询

*5.1 根据产品线、订单类型、交通类型、订单ID、城市查询订单.

*6、智慧出行-出行活跃统计

*6.1 出行活跃区域统计

*7、智慧出行-供需分析

*7.1 出行供需分析

*8、智慧出行-疲劳驾驶报警

*8.1 司机疲劳驾驶报警

 

三、智慧出行之项目数据的接收和落地

1、基于binlog进行数据实时同步

1.1 Maxwell的语法讲解

1.2 Maxwell解析binlog到Kafka

2、代码实现HBase的负载均衡处理

2.1 HBase的痛点之热点问题

2.2 HBase的热点会造成什么问题

2.3 出现热点的原因剖析

2.4 解决热点问题

3、Kafka的offset自主管理实现Exactly-once语义实现

3.1 为什么自主维护offset

3.2 自主维护offset的实现

4、Kafka数据生命周期到期后找不到数据偏移量的解决方案

4.1 生产中Kafka会遇到的数据fetch不到的异常解决方案

4.2 解决生产中的Kafka生命周期问题

5、通过反射实体数据落地到HBase

5.1 解析Kafka中的json数据集

5.2 实例与数据集映射成集合

5.3 实时同步事务操作结果到HBase

四、基于源码进行任务的监控和调优

1、内置Spark任务监控,实现细粒度任务的监控和异常报警

1.1 监控整个application开始执行状态

1.2 监控整个application结束的状态

1.3 监控整个Job开始执行状态

1.4 监控整个Job结束状态

1.5 监控Sparkstage提交时状态

1.6 监控Sparkstage完成时状态

1.7 监控Sparktask开始时状态

1.8 监控Sparktask完成时状态

1.9 监控整个作业的内存和磁盘变化

1.10 监控整个job上下文环境

1.11 监控rdd缓存变化状态

1.12 监控executor状态

2、Spark作业监控异常邮件报警

3、Sparkstreaming的限流、压背、冷启动

4、开启动态资源分配(从平台到代码)

5、实现Sparkstreaming的高可用

 

五、智慧交通数据大屏之订单数据监控

1、数据大屏之订单数据统计

1.1 基于Spark源码实现自定义HBase的数据源的读写操作

1.2 第1屏幕之地图(各城市车辆分布和各城市订单)的数据计算和落地HBase

1.3 基于phoenix实现各城市车辆分布和各城市订单接口的发布

1.4 第1屏幕之订单汇总表(总、月、周、日)、订单累计里程总数的数据计算和数据落地

1.5 第1屏幕之实现订单汇总表(总、月、周、日)、订单累计里程总数的接口发布

 

六、智慧交通数据大屏之用户统计分析

1、数据大屏之用户总数和注册数

1.1 第1屏幕之订单总数、注册总数、收入总数的计算和结果数据落地

1.2 订单总数、注册总数、收入总数的接口发布

2、据大屏之活跃用户留存分析

2.1 各城市当日新增用户数、当日活跃用户的计算和结果数据落地

2.2 各城市当日新增用户数、当日活跃用户的接口发布

2.3 平台注册用户总数、当日新增注册用户、本周内新增注册用户、当月新增注册用户的计算和结果数据落地

2.4 平台注册用户总数、当日新增注册用户、本周内新增注册用户、当月新增注册用户查询接口的发布

2.5 留存率的计算和结果数据落地

2.6 留存率的查询接口的发布

2.7 活跃用户的计算和结果数据落地

2.8 活跃用户的查询接口的发布

 

七、智慧交通数据大屏之订单热力图

1、数据大屏之订单热力图

1.1 当日热区订单、当日新增热区订单的计算和落地

1.2 当日热区订单、当日新增热区订单接口的发布

1.3 平台订单完成率、司机订单完成率、各城市的司机注册数(日/周/月/季/年)的计算和落地

1.4 平台订单完成率、司机订单完成率、各城市的司机注册数查询接口发布
1.5 出行热力图的计算和数据落地

1.6 出行热力图的接口发布

 

八、智慧出行之Hadoop性能提升的原理

1、DataNode与NameNode心跳流程

2、元数据管理

2.1 元数据管理的双缓冲机制

2.2 元数据管理流程

 

九、智慧出行之NameNode的Bug修复

1、HDFS写数据流程

2、对超高并发导致NameNode短暂不工作Bug修复

2.1双缓冲机制回顾

2.2NameNode不工作的Bug分析

3、对NameNodeFullGC导致异常退出Bug修复

3.1 元数据同步流程回顾

3.2 NameNode的FullGC的bug分析

 

十、智慧出行之源码级NameNode优化

1、对DataNode进行锁优化

2、优化NameNode元数据写流程

3、总结HDFS源码中用到的设计模式

 

十一、智慧出行之分布式消息系统深度原理深度剖析

1、分布式消息系统之Kafka原理深度剖析

1.1 Kafka架构原理

1.2 ISR机制原理

1.3 零拷贝技术原理

1.4 Zookeeper选举原理

1.5 副本同步机制原理深度剖析

 

十二、智慧出行之分布式消息系统源码深度剖析1

1、分布式消息系统之Kafka原理深入剖析

1.1 Kafka的LEO和HW的更新机制
1.2 offset更新原理

1.3 Kafka集群运维管理

2、分布式消息系统KafkaProducer源码剖析

2.1 Kafka源码深度剖析-KafkaProducer初始化

2.2 KafkaProducer元数据管理

2.3 Producer核心流程初探

2.4 KafkaProducer加载元数据

 

十三、智慧出行之分布式消息系统源码深度剖析2

1、分布式消息系统KafkaServer端的网络

1.1 Acceptor线程是如何启动的

1.2 用于处理请求连接的Processor是如何启动的

1.3 Processor线程是如何处理completedReceives里的请求的

1.4 RequestQueue队列里的请求是如何被处理的

1.5 Request是如何被处理的

1.6 服务端发送响应的准备工作

1.7 响应消息是如何发送给客户端的

1.8 Kafka的网络设计总结

2、Kafka日志管理

1.1 ReplicaManager写数据入口初探

1.2 LogManager是什么

1.3 LogManager启动后干什么

1.4 Log对象的append总流程窥探

1.5 如何用内存映射写稀松索引

1.6 Kafka总结

      

      其实以上你看到的都是经滴滴出行认证的开课吧后厂理工学院推出的“滴滴资深大数据工程师培养计划”课程大纲,本培养计划中订单、车辆分布和收入总数等数据均采用滴滴盖亚开放数据计划脱敏后的开放数据集实现,此类功能点在大纲中用*标注。

      完整的学习方案中还有SparkStreaming性能调优、数据查询平台之SQL重构及服务发现、多任务自适配、自定义Spark多数据源Source和Sink、数据平台前中台实现、YARN的性能调优、HDFS的调优、HBase的调优、SparkSQL的调优、服务器的调优等内容。

如果你从事java开发多年,想转行大数据行业

如果你已经学习了很多零散的大数据知识,缺乏实战经验

如果你身处大数据开发岗位想要升职加薪

那么“滴滴出行人才培养计划”就是一个提升自己的好机会

一定一定一定要注意

满足以下条件方可报名参与“大厂培训计划”选拔

有2年以上Java开发经验

有一定的大数据技术分布式系统的理论基础

 

因后厂理工学院滴滴出行人才培养计划仅招生199人,通过测试才能加入培训计划!

 

扫描下方二维码领取完整课程大纲

参加滴滴资深大数据工程师培养计划↓↓↓


© 著作权归作者所有

宋庆离

宋庆离

粉丝 132
博文 91
码字总数 89077
作品 0
私信 提问
滴滴智慧交通研发成果,优化后的信号灯能把堵车时间缩短近30%

堵车时间的缩短,将有效加强人们的出行效率。 今年年初的时候,滴滴出行在济南上线了一项智慧交通的研发成果,打造了国内首个以浮动车轨迹作为数据基础的“智慧信号灯”。之后,滴滴先后在武...

行者武松
2018/03/20
0
0
面向云的分布式消息领域标准 - OpenMessaging

OpenMessaging 是由阿里巴巴发起,与雅虎、滴滴出行、Streamlio 公司共同参与创立,旨在创立厂商无关、平台无关的分布式消息及流处理领域的应用开发标准。 在云计算时代,消息通讯已经成为现...

匿名
2017/12/26
3K
0
Apache Flink,流计算?不仅仅是流计算!

阿里妹导读:2018年12月下旬,由阿里巴巴集团主办的Flink Forward China在北京国家会议中心举行。Flink Forward是由Apache软件基金会授权的全球范围内的Flink技术大会,2015年开始在德国柏林...

技术小能手
01/03
0
0
CIIS 2019 实录 | 叶杰平:人工智能在出行领域的机遇和挑战

   10月26日-27日,由陕西省委网信办、陕西省工业和信息化厅、陕西省科学技术厅指导,中国人工智能学会主办,西安市委网信办、西安市科学技术局、西安国家民用航天产业基地管理委员会、京东...

中国人工智能学会
11/07
0
0
来SACC2019共论“数字转型 架构演进”之道

2019已经过半,第十一届中国系统架构师大会SACC2019的脚步也越来越近了,十年来中国系统架构师大会SACC一直紧跟系统架构关键技术热点,成为架构师、CTO、CIO以及各研发人员学习交流的前沿阵地...

小鱼丁
08/12
39
0

没有更多内容

加载失败,请刷新页面

加载更多

BigDecimal 去后面无用的0的方法

BigDecimal a=new BigDecimal("0.1000"); System.out.println(a.stripTrailingZeros().toPlainString());...

xiaodong16
14分钟前
4
0
JAVA--高级基础开发

[集合版双色球] 十二、双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1—33中选择;蓝色球号码从1—16中选择;请随机生成一注双色球号码。(要求同色号码...

李文杰-yaya
昨天
14
0
聊聊rocketmq broker的CONSUMER_SEND_MSG_BACK

序 本文主要研究一下rocketmq broker的CONSUMER_SEND_MSG_BACK CONSUMER_SEND_MSG_BACK rocketmq/common/src/main/java/org/apache/rocketmq/common/protocol/RequestCode.java public class......

go4it
昨天
3
0
API常见接口(下)

system类 StringBuilder和StringBuffer 包装类 1.System类 (java.lang包中) 提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。 常用方法: public static long currentTimeMi...

Firefly-
昨天
4
0
MySQL系列:一句SQL,MySQL是怎么工作的?

对于MySQL而言,其实分为客户端与服务端。 服务端,就是MySQL应用,当我们使用net start mysql命令启动的服务,其实就是启动了MySQL的服务端。 客户端,负责发送请求到服务端并从服务端获取数...

杨小格子
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部