首页>会议文档 >

滴滴出行 盛克华 - 滴滴高性能列式KV存储系统实践

page:
滴滴出行 盛克华 - 滴滴高性能列式KV存储系统实践
滴滴出行 盛克华 - 滴滴高性能列式KV存储系统实践
滴滴出行 盛克华 - 滴滴高性能列式KV存储系统实践
滴滴出行 盛克华 - 滴滴高性能列式KV存储系统实践
滴滴出行 盛克华 - 滴滴高性能列式KV存储系统实践
滴滴出行 盛克华 - 滴滴高性能列式KV存储系统实践
滴滴出行 盛克华 - 滴滴高性能列式KV存储系统实践
滴滴出行 盛克华 - 滴滴高性能列式KV存储系统实践
滴滴出行 盛克华 - 滴滴高性能列式KV存储系统实践

滴滴出行 盛克华 - 滴滴高性能列式KV存储系统实践

所属会议:SACC2016 (第八届)中国系统架构师大会会议地点:北京


下载

手机看
活动家APP客户端

扫二维码下载
或点击下载
Android iOS

8596次
浏览次数
SACC2016 (第八届)中国系统架构师大会所有文档 开九易云拓 朱龙春 - 互联网对传统企业应用架构冲击和机遇 淘宝 郑士汉 - Weex架构简介和性能优化实战 周亚金 - 安卓应用保护技术发展 小米电视工程师朱辉 - ZRAM那点事pdf 小米 朱辉 - 支持任意数量watchpoin的建议 学而思 赵文杰 - 交互式直播推流编码器的设计 搜狗 甄丽霞 - 基于Kafka-spark streaming的数据处理系统及测试 蚂蚁金服 郑波 - 网商银行金融云的架构之路 饿了么 徐巍 - 饿了么基础设施进化史 光载无限 许开强 - CDN直播系统的优化 搜狗 杨剑飞 - 统一数据平台的实践及思考 网易蜂巢 尧飘海 - 网易蜂巢公有容器云架构之路 超多维 郁树达 - 前进的路上,VR有哪些绕不开的坑 美团点评 喻继鹏 - 互联网行业财务系统架构探讨 阅文集团 徐海峰 - 阅文集团自主分布式文件系统 哈尔滨银行 姜岩 - 运维架构调整与运维工厂模式的建立 百度 张建伟 - 百度大数据离线计算平台流式shuffle服务 深圳瑞赛 张平 - 专业化的风控服务平台的技术架构及实践 魔窗 张申竣 - 创业公司的大数据平台选型和进化 去哪儿网 张子天 - Spider-QunarAndroid客户端架构的前世今生 蜗牛云 赵刚 - 京东VRAR实验室在电商VR中的实践 云计算公司技术专家赵伟 - 负载均衡利器HAProxy功能剖析及部署案例 中国移动 王烨 - 中国移动私有云管理平台架构和实践 优酷土豆 宋慎义 - 为全民直播量身定做流媒体平台 Linkedin China Engineer Supervisor魏佳 - 图数据库Neo4J的实践之路 美图 魏家富 - 美图公司运维自动化系统架构设计 阿里巴巴 郝豪 - 阿里Android instant run探索与实践 美团外卖 夏华夏 - 架构师的三个基本要求 爱奇艺 谢丹铭 - 爱奇艺业务风控系统 爱奇艺 刘俊晖 - 爱奇艺大数据平台的构建之路 爱奇艺 刘文峰 - 爱奇艺云架构实践优化 易到用车 刘宇 - PHP高性能服务框架架构与实践 网易 刘长伟 - 网易蜂巢Docker研发实践 刘喆 - 大数据时代AdMaster的运维架构 去哪儿网 路绪清 - 基于大数据的消费信贷平台 中国移动 罗刚毅 - 中国移动异构虚拟化平台统一管理研发与实践 优酷土豆 吕红亮 - 视频精准推荐系统实践 小米VR团队马坤 - VR技术与展望 资深云计算架构师马耀泉 - 云计算的高可用实践探索与分享 袋鼠云 宁海元 - 企业级云数据库管控架构设计与实践 汽车之家 欧阳梦南 - 汽车之家移动APP架构演进与性能优化历程 光载无限 欧曜伟 - 光载无限监控体系的变革与演进 阿里巴巴 袁冶平 - 阿里大数据平台发布管理体系 Hyper.sh 裴彤 - 基于 hyper 容器技术的新一代容器云 58到家 任桃术 - 58到家分布式服务框架 阿里巴巴 桑毅宏 - 互联网公司骨干网规划构 上汽集团 龚瀚申 - 上汽集团基于容器技术的尝试实践 京东 寿如阳 - 京东虚假交易识别系统 信泰人寿 章晨曦 - 数据分发平台的架构设计与实践 爱可生 王伟 - 数据之大,云动未来——传统企业从IT到DT的互联网创新最佳实践 上交所 孙长昊 - 上交所基于容器技术的微服务架构技术实践 魅族 覃军 - 魅族基础系统运维之路示 美团 唐义哲 - 美团业务风控系统构建经验 腾讯 程彬 - 腾讯云数据库CDB技术演进之路 一点资讯 王成光 - 轻量级分布式实时计算框架light_drtc 京东 王大泳 - 京东数据中心网络监控实践 农银 王福强 - 农银人寿新一代核心业务系统云平台实践题 Intel 王华峰、毛玮、张天伦 - 分布式流式数据处理框架:功能对比以及性能评估 时速云 王磊 - 容器云平台在企业中的运维管理和场景实践 达乎科技 王茜 - SDN对传统网络的变革和价值提升 搜狐视频 李修鹏 - 搜狐视频个性化推荐架构设计和实践 北京邮电大学 李昕 - SDN向左,WAN向右 蜗牛云 李晨光 - VR沉浸式视频在移动平台的优化技术分析 武汉泰迪智慧科技 李成华 - 深度学习在自然语言中的应用 华胜信泰 李海翔 - 数据库引擎技术架构 360 李纪峰 - 云平台安全架构剖析 蚂蚁金服 李三红 - Java企业应用-性能优化原则,方法与策略 拍拍贷 徐王锦 - 金融行业数据库架构变迁 京东 杨海明 - 京东云的架构实践之路 神策数据 曹犟 - 从日志统计到大数据分析 饿了么 常盛 - 饿了么实时架构演进 DBI 常艳玲 - 架构师现状调查报告解读 日志易 陈军 - IT运维分析与海量日志搜索分析 华为 陈亮 - Apache CarbonData,实现大数据即席查询秒级响应 百度外卖 师陈霖 - 百度外卖服务化实战 腾讯微信 陈晓鹏 - 微信运维实时监控数据上报及存储设计实践 雪球 单艳蕾 - 雪球运维架构体系探索 证券 董国兴 - 传统金融行业企业架构创新与实践 腾御安 樊付强 - GNU工具链里的漏洞利用缓解技术 国家工商总局 付宏伟 - 工商数据中心架构创新之路 七牛云 何李石 - 七牛融合CDN实践 宜信 侯松 - 大数据全流程平台在互联网金融场景下的实现和借鉴意义 饿了么 张雪峰 - 架构师需要面对的两个【架构】 Apache HAWQ 简丽荣 - 数据仓库架构的变迁

文档介绍

Rockstable是滴滴内部自研的一套高性能分布式KV存储系统,其特点是支持列模式,支持高并发、低延迟、高可用,目前支撑了滴滴内部主要的特征实时存取需求,本次主要介绍其内部的实现原理。主要技术点:分布式kv存储、列式存储、高性能。

演讲实录

大家好,我是滴滴的盛克华,负责滴滴的后台的引擎相关的工作。今天给大家分享的是我们内部使用的KV存储系统,名字叫Rockstable。大概分成四部分,第一个是Rockstable的简介,第二个是用Rockstable系统解决什么样的问题,以及我们为什么要做这样的一套系统,第三个是这个系统目前在公司内部的使用情况,第四个是内部的实现方式,希望能给大家带来一些思路上的提示。演讲大纲如下:
Rockstable是一个分布式的KV存储系统,所以并非一个文件系统。Rockstable支持劣势,这个劣势是非固定的去做劣势的格式的规定,可以随意的加减。
Rockstable系统解决了滴滴后台各种时时特征的需求。这个是最原始的动力也是我们做这个系统的原始出发点。
多更新源;滴滴的业务,主要是做司机和订单的匹配,我们要存储司机每个维度的特征,订单每个维度的特征,以及乘客每个维度的特征,所以都在这里,并且很多特征和数据源都是时时变化更新的。有些数据是司机端上报的,有的是离线挖掘的,有的是业务系统时时写入的,所以数据源使用很多。
  多使用方;Rockstable是一套非常基础的特征系统,所以依赖这个特征系统使用的业务也很多,最直接的是我们的派单系统。
  高度稀疏;这个是很多业务场景都遇到同样的问题,批量读写,这个问题很严重,我们是每个时刻对大量的订单大量的司机做匹配的,所以同一时刻要读取大量的K,所以批量是主要的一个使用接口。
  高并发、低延迟、高可用;这里对性能的要求尤其苛刻,高并发不用讲,低延迟也是非常敏感,如果延迟很直接导致我们分担的慢。
 我们现在的使用情况:访问量在早高峰或者是晚高峰的时候,读取的是大概两千万的KPS,K是一个司机或者是一个订单或者是一个乘客的维度,写入大概是五十万的KPS,所以访问量是非常巨大的。
  我们希望存储司机很多维的特征,有一些维度在不断的调研,有一些维度特征是有用的,我们需要逐步的加进来,现在是百级别的样子,数据量是三副本,TB级的数据量,为了保证低延迟,存储主要是在内存和SSD里面。
这一张图主要是描绘了我们的总体架构设计。下面的大框是我们内部的实现,上面是我们的应用方,各个APP,这个APP不只是说客户端,是我们的上游的后台服务。蓝色框是接入层,所有的读写从这里接入,橙色框是存数据的地方,是很简单的二层结构,比较特殊的是有一个对立集群。右边有一个存取一些信息的,这个和用的分布式设计是比较类似的。
  最左边有一个监控系统,右边有一个管理系统。左边虚线是队列集群,做故障处理的,你挂了一台机器,我们写入数据流会导入队列里面,等机器恢复的时候我们要从队列里面恢复数据。
这张图主要是实现概述,讲Rockstable系统有一些什么样的主动特性。
  最终一致性;支持A副本,这个是根据我们的需求来的,很多系统是要强一致,我看到的大部分的互联网应用里最终一致性是够用了,所以我们采用的是最终一致性。
  支持表、列结构;我们可以创建表或者是删除表,对不同的业务或者是不同的数据我们建不同的表。这个是列,这个列可以随意的加减,不需要做任何的操作,这样的话我们的业务会更灵活方便,想加一列就会可以加进去的,不用做另外的工作。
  批量读批量写;也是最基本的。
  支持TTL;就是我们的生命周期,他也有三个维度,第一个是表级别,这个是我的表设置一天数据只能绑定一天,设置一个小时就绑定一个小时,过期就自动删除,这个表是一天的或者是一个月的,你可以针对K设置一个小时或者是一天,这个K如果是绑定一天,对部分的列设置秒级别或者是分钟级别都可以,所以TTL设置是比较分布的,
  白名单;出于稳定性的考虑,访问系统的来源有很多,各种各样的业务系统在读取数据,为了保证系统的稳定性做了严格的限制,读写限额,以及白名单的控制。
  支持MC、THRIFT两种接口;我们以前在系统上线之前我们线上的业务是由MC做的,所以支持他是方便我们上线。THRIFT用的比较广泛的框架,这个用的比较多,所有的劣势操作,批量的读写都在这个接口里实现。
  批量数据扫描、修复:因为MC的协议是比较简单的,可以支持批量的读,但是没有办法支持批量的写。支持批量数据扫描和数据修复,对数据的维护方而言是相当重要的,我需要知道上T的数据里有哪些错误的数据。
  数据的持久化;有一些场合数据要求是很高的,有一些数据访问量低,但是他的数据量大,将这些放到磁盘上,这样的话可以利用存储空间支持数据持久化。
  支持集群间的数据同步;这个也比较重要,但是相对而言用的少一点,我们可以把一个集群的数据时时的或者是手动的,自动导到另外一个集群上去,这样的话我们可以做集群的拷贝或者是做数据的同步。
下面讲集群的一个管理方式,我们集群有接近上千台的机器,这么多的数据,这么的并发在上面,如何管理集群?我们是开发了一些比较丰富的管理工具,最主要的是有一个命令行的管理入口,支持一些管理人的操作,比如说创建,删除,查看表。
数据模型每个表根据ID进行均匀的分片,每个分片存储三个副本,这样的话我们对一个数据有了一个基本的概念,就是一个表,一个复本一个分片,这样的一个TRP组织了一个最小的数据单元,他是一个最小的数据管理的一个模型,他里面包含一定量的KV。
自动平衡是以TRP的力度进行的,如果现在有一百台的机器的集群,我们扩二十台上去,如何扩数据的平衡,我们找到需要迁移的TRP,从原来的机器上每个挑一点TRP往空白的上面迁移,首先把原始的TRP停掉,停了一个以后另外的一个是正常工作的,把这个停了以后就会开始写队列。从原机器往目标机器拷这个数据,拷贝完以后在新的机器上把TRP起动起来,开始消费队列,把数据追平,然后开始访问新的TRP,所有的操作基本上是一个自动的过程。
作为一个时时的线上系统,特别是存储系统,他的稳定性是至关重要的,如果存储系统崩溃了所有的系统就崩溃了,所以我们做了大量的监控建设,基本上一个集群我们有二百多个监控曲线,这里面有非常详细的监控,错误统计,各个环节的耗时,以及集群的示例的统计一些使用情况,各种读写各种MC各种接口等等。
我们做系统最主要的目的是应付高性能的场景,他是需要特别的低延迟,我们最终做的延迟是这样,耗时差不多三个九,在五毫秒以内,性能是非常满意的。
NodeMgr是我们自己内部的一个动态结点管理的工具,这里主要是支持了一些故障的自动摘除与结点的恢复,我们的集群这个层面对外是上百个机器的IP,访问的时候经常会发生IP的故障或者是经常做一些扩容,如果上游不能应付这样的变化的话是非常被动。

×

打开微信扫一扫,分享到朋友圈