PingCAP
  • PingCAP University
  • 文档
  • 案例
  • 社区
  • 博客
  • 关于
  • 问答
  • 联系我们
PingCAP
  • 文档
  • 案例
  • 社区
  • 博客
  • 关于
  • 问答
  • 联系我们
  • PingCAP University

Contact

  • Wechat qrCode

    微信扫一扫
    微信ID:pingcap2015

English
Meetup
  • 2019(33)
    • 2019-12(1)
      • 【Infra Meetup No.119】Pulsar 事务简介 & TiDB 悲观事务的设计与实现
    • 2019-11(1)
      • 流量和延迟减半!挑战 TiDB 跨数据中心难题
    • 2019-10(3)
      • 【Infra Meetup No.117】TiDB 悲观事务的设计与实现 & Introduction to performance engineering
      • 【Infra Meetup No.116】SQL 语言漫谈 & 构建高可用数据库服务
      • 【Infra Meetup No.115】Infra Meetup X Kubernetes & Cloud Native Meetup
    • 2019-09(3)
      • 【Infra Meetup No.114】ACMUG 专场
      • 【Infra Meetup No.113】TiDB Operator 的设计与实现
      • 【Infra Meetup No.112】华泰证券 x PingCAP:分布式数据库 TiDB 的探索与应用
    • 2019-08(2)
      • 【Infra Meetup No.111】网易分布式时序数据库 NTSDB & 数据库构建背后的故事
      • 【Infra Meetup No.110】Linux 内核虚拟机 BPF 原理及应用
    • 2019-07(1)
      • 【Infra Meetup No.109】TiKV internal & 基于 Kafka 的数据处理微服务链
    • 2019-06(4)
      • 【Infra Meetup No.108】TiDB DDL & 数据云平台访问 & 同盾大数据平台
      • 【Infra Meetup No.107】SQLFlow:Brings SQL and AI together
      • 【Infra Meetup No.106】 Alluxio & 仿真技术 & TiDB 的 HTAP 之路 & Zeppelin
      • 【Infra Meetup No.105】 Happy Hacking TiDB & Chaos Practice in TiDB
    • 2019-05(5)
      • 势高,则围广:TiDB 的架构演进哲学
      • 【Infra Meetup No.104】 云原生数据库的核心特点 - TiDB 架构及发展 & 反应式编程之 Spring WebFlux
      • 【Infra Meetup No.103】 TiDB 开源社区专题
      • 【Infra Meetup No.102】 How We Build TiDB & TiDB Ecosystem Tools 概览
      • 【Infra Meetup No.101】 Log, Observability and Filebeat & 易果集团的数据平台建设历程 & The Evolution of TiKV
    • 2019-04(6)
      • 【Infra Meetup No.99】数据中台 & WiredTiger 引擎实现原理 & JIT in Databases
      • 【Infra Meetup No.98】Everything You Always Wanted to Know About Compiled and Vectorized Queries But Were Afraid to Ask
      • 【Infra Meetup No.97】What's New in TiDB 3.0 & An Introduction to Failpoint Design
      • 【Infra Meetup No.96】Introduction to Titan
      • 【Infra Meetup No.95】Introduction of TiDB SQL Layer
      • 【Infra Meetup No.94】TiFlash、Spark SQL
    • 2019-03(4)
      • 【Infra Meetup No.93】A Study of LSM-Tree
      • 【Infra Meetup No.92】Introduction to TiDB Statistics
      • 【Infra Meetup No.91】Head First Distributed Transaction in TiDB
      • 【Infra Meetup No.90】知乎已读服务架构演进
    • 2019-02(1)
      • 【Infra Meetup No.89】TiKV 最新性能优化
    • 2019-01(2)
      • 【Infra Meetup No.88】小红书的社区架构 & TiDB 在小红书的实践案例分享 & Vectorized Execution Explained
      • 【Infra Meetup No.87】摩拜数据复制中心 Gravity 介绍
  • 2018(24)
    • 2018-12(3)
      • 【Infra Meetup No.85】宝尊 + Apache Spark + TiDB SQL Layer
      • 【Infra Meetup No.84】如何在三分钟内跑完千万测试 case & 硬核 Paper Reading
      • 【Infra Meetup No.83】What's New in TiDB 2.1 and What's Next
    • 2018-11(4)
      • 【Infra Meetup No.82】数据库统计信息的自动挖掘与维护 & What's New in TiDB
      • 【Infra Meetup No.81】基于 TiKV 的 Redis 协议兼容层 Titan
      • 【Infra Meetup No.80】从实现角度看 Aurora
      • 【Infra Meetup No.79】小米开源 SQL 优化工具 SOAR 技术内幕
    • 2018-10(4)
      • 【Infra Meetup No.78】Bigdata@Bilibili & Chaos Practice in TiDB
      • 【Infra Meetup No.77】我司成都分舵第一次 Meetup
      • 【Infra Meetup No.76】列式存储如何进行在线更新
      • 【Infra Meetup No.75】这次我们聊了聊 Google F1 的最新论文
    • 2018-09(2)
      • 【Infra Meetup No.74】TitanDB 首次公开分享
      • 【Infra Meetup No.73】TiKV 原理剖析
    • 2018-08(1)
      • 【Infra Meetup No.72】TiDB Operator,让 TiDB 成为真正的 Cloud-Native 数据库
    • 2018-07(1)
      • 【Infra Meetup No.71】TiDB 2.1 新特性与未来规划
    • 2018-06(2)
      • 【Infra Meetup No.70】Paper Party:CEO 解读 TiDB 下一代存储引擎
      • 【Infra Meetup No.69】CASPaxos,一个有趣的 RSM 算法
    • 2018-05(2)
      • 【Infra Meetup No.68】虚怀迎远客 魔都 Talk 「长」
      • 【Infra Meetup No.67】杭州站
    • 2018-04(2)
      • 【Infra Meetup No.66】Application of TLA+ at PingCAP
      • 【Infra Meetup No.65】「四美具,二难并」之成都行
    • 2018-03(1)
      • 【Infra Meetup No.64】Chaos Practice in TiDB
    • 2018-02(1)
      • 【Infra Meetup No.63】深入了解 TiDB 新执行框架
    • 2018-01(1)
      • 【Infra Meetup No.62】Apache Pulsar
  • 2017(23)
    • 2017-12(1)
      • 【Infra Meetup No.60】初探 Orca 查询优化器
    • 2017-11(1)
      • 【Infra Meetup No.58】TiSpark 架构设计与实现
    • 2017-10(1)
      • 【Infra Meetup No.57 Rust 专场】Rocket Web 框架解析
    • 2017-09(2)
      • 【Infra Meetup No.56】MonetDB/X100 Paper 解读
      • 【Infra Meetup No.55】TiDB Pre-GA 版本新特性介绍以及后续功能展望
    • 2017-08(2)
      • 【Infra Meetup No.54】数据库计算存储分离架构分析
      • 【Infra Meetup No.53】知乎数据平台实践
    • 2017-07(2)
      • 【Infra Meetup No.52】TiDB 自动化运维管理 —— TiDB-Operator
      • 【Infra Meetup No.51】百度统一分布式计算框架 Bigflow (内附 PPT 下载链接)
    • 2017-06(1)
      • 【Infra Meetup No.49】TiDB Best Practice
    • 2017-05(2)
      • 【Infra Meetup No.48】分布式对象存储面临的挑战
      • 【Infra Meetup No.47】分布式定时任务中间件架构 Elastic-Job 的两种实现
    • 2017-04(3)
      • 【Infra Meetup No.46】MySQL 5.7 的特性及实践
      • 【Infra Meetup No.45】Rust 专场
      • 【Infra Meetup No.44】Elasticsearch 运维
    • 2017-03(4)
      • 【Infra Meetup No.43】RocksDB 专场分享
      • 【Infra Meetup No.42】Spark 与机器学习
      • 【Infra Meetup No.41】大容量 redis 存储中间件(onestore)架构实践 & TiKV RC2 性能大幅提升的秘密
      • 【Infra Meetup No.40】tcp 链接的建立与释放 & 分布式数据库中统计信息的收集和使用
    • 2017-02(2)
      • 【Infra Meetup No.39】百度 Galaxy 集群管理系统
      • 【Infra Meetup No.38】深入解读 Google Spanner
    • 2017-01(2)
      • 【Infra Meetup No.37】PD 调度的实现 & 主流分布式文件系统对比介绍
      • 【Infra Meetup No.36】Tera 的单机存储引擎 & 机器学习之我见
  • 2016(27)
    • 2016-12(4)
      • 【Infra Meetup No.35】Sofa-pbrpc 设计与实现 & 自底向上纵览 TiKV 架构
      • 【Infra Meetup No.34】Pegasus:一个分布式 KV 系统的设计过程 & TiDB 架构介绍
      • 【Infra Meetup No.33】zeppelin 的设计与实现 & 海量结构化数据库 Tera 总览
      • 【Infra Meetup No.32】百度文件系统-面向实时应用的分布式文件系统 & TiDB - The Future of Database
    • 2016-11(4)
      • 【Infra Meetup No.31】PD 的实现和演进 & 从容器和微服务的发展看基础架构变迁
      • 【Infra Meetup No.30】深度学习,众包数据与短时临近预报系统 & 谈谈 TiDB-Binlog 的设计
      • 【Infra Meetup No.29】映客直播服务端架构优化之路 & MySQL 与 TiDB 的事务机制
      • 【Infra Meetup No.28】Spark 架构设计要点剖析 & Performing group-by before join
    • 2016-10(3)
      • 【Infra Meetup No.27】Impala 在用户行为分析中的应用与优化 & How we build CI/CD for TiDB at scale
      • 【Infra Meetup No.26】京东分布式数据库实践 & 深度探索分布式系统测试
      • 【Infra Meetup No.25】分布式数据处理在个性化系统的应用 & TiKV 性能优化
    • 2016-09(3)
      • 【Infra Meetup No.24】LLVM 简介及其在大规模 OLAP 中的应用 & 阻塞访问数据库的相关问题
      • 【Infra Meetup No.23】How to write a good commit message & QuorumKV:微信分布式 KV 存储系统
      • 【Infra Meetup No.22】360开发的大容量redis -pika & 分布式对象存储系统设计介绍
    • 2016-08(3)
      • 【Infra Meetup No.21】An Introduction to Join-Reorder in TiDB & MPP and SMP in TiDB
      • 【Infra Meetup No.20】搜索引擎背后的万亿量级存储系统 Tera & Cloudtable:分布式强一致的 KV 存储系统
      • 【Infra Meetup No.19】What's New in Spark 2.0 & An Overview of Cost Based Optimization and Join Reorder
    • 2016-07(5)
      • 【Infra Meetup No.18】Kudu 的设计思想和具体实现 & Kubernetes in PingCAP
      • 【Infra Meetup No.17】How does TiKV auto-balance work?
      • 【Infra Meetup No.16】基于 Ceph 构建文件共享服务的实践 & Cool Extensions of Raft for NewSQL
      • 【Infra Meetup No.15】TiDB 存储模型变更 & TiDB 优化器统计信息的采集
      • 【Infra Meetup No.14】HashData 数据仓库的动态缩容扩容实现 & TiDB Beta 版现场演示
    • 2016-06(3)
      • 【Infra Meetup No.13】百度 redis3 生产环境实践 & TiKV Auto Balance
      • 【Infra Meetup No.12】rocksdb 日志分析和性能调优经验
      • 【Infra Meetup No.11】TiKV 的结构化存储模型优化 & 深入解析 LevelDB
    • 2016-05(2)
      • 【Infra Meetup No.10】TiKV 的网络模拟测试 & TiDB 的条件下推优化
      • 【Infra Meetup No.9】SQL 子查询优化 & TiKV MVCC 和 GC 实现

【Infra Meetup No.41】大容量 redis 存储中间件(onestore)架构实践 & TiKV RC2 性能大幅提升的秘密

  • Date iconSat, Mar 11, 2017
  • Pen icon 杨建军, 张金鹏

今天的 Meetup,陌陌基础平台部门负责人杨建军与 PingCAP 核心研发工程师张金鹏,为大家分享了《大容量 redis 存储中间件(onestore)架构实践》与《TiKV RC2 性能大幅提升的秘密》两个话题 ,跟小编一起走进现场吧~

Topic 1: 大容量 redis 存储中间件(onestore)架构实践

杨建军 | 陌陌基础平台部门负责人

讲师介绍:杨建军,陌陌基础平台部门负责人。先后参与过存储中间件、服务化框架、 统一配置中心、分布式调用跟踪系统等中间件架构设计以及研发工作。个人目前主要关注高并发系统架构、中间件研发、大数据平台、存储、团队管理等方向。

从上线至今 5 年来,

陌陌用户快速增长,服务接口总访问量飙升,

其中存储总访问量达到千万级 /s。

这就要求后端存储的性能也随之提升,

稳定、高效的存储组件是解决这些问题的关键。

今天的 Meetup,

杨建军就为我们分享了

陌陌自研大容量存储中间件 onestore 发展过程、

架构选型、设计以及在陌陌应用情况。

以下是热气腾腾的干货PPT节选~

PPT 图片

PPT 图片

PPT 图片

Topic 2: TiKV RC2 性能大幅提升的秘密

张金鹏 | PingCAP 核心成员

讲师介绍:张金鹏,PingCAP 核心成员,前百度资深研发工程师/京东数据库专家,《MariaDB 原理和实现》作者。

3 月 1 日,TiDB 正式发布了 RC2 版。该版本对 MySQL 兼容性、SQL 优化器、系统稳定性、性能做了大量的工作,对于 OLTP 场景,读写性能都有大幅度的提升。

在本次分享中,张金鹏为我们剖析了 TiKV 获得大幅性能提升的秘密,包括使用异步 Apply 大幅提升写性能、使用 prefix seek 提升读取性能、引入 memtable insert with hint 提升 Raft CF 的插入性能同时减少 CPU 的使用,以及针对单行只读事务的优化等等。

之前 Raft 相关的工作都是在 raftstore 线程进行的,包括处理所有的 Raft 消息,把 raft log 持久化到 RocksDB,apply raft log 并将状态机的状态持久化到 RocksDB。写入繁忙时 raftstore 会成为系统的瓶颈,同时 write RocksDB 可能会发生 stall,此时容易造成 Raft 的 leader 切换导致系统抖动。将 write RocksDB 的工作以及一些占用 CPU 的工作从 raftstore 线程分离开来,一方面能够充分利用系统资源提升系统的性能,另一方面使系统更加稳定。

prefix seek 首先会对需要 seek 的 key 按照给定的规则提取 prefix,在 seek 的过程中只会操作包含改 prefix 的 sst。

对于 skip list 的插入,如果每次都需要进行 key 的比较然后定位到需要插入的位置,其实是比较耗费 CPU 的。在一些特定的场景下,插入的 key 呈现一定的规律性,例如 key = user_id+time,对于同一个 user_id,下一次的插入很可能在本次插入的相邻位置。TiKV 中的 raft log 也有类似的特征,raft log entry 的 key = raft group id + log index。memtable insert with hint 功能特别适合这种场景,针对相同的 prefix 的 key 建立特殊的索引,减少 key 的比较次数。

对于读取单行的时候,省掉获取 ts 的过程,减少一次 rpc 的延迟。

以下是香喷喷的干货PPT节选~

PPT 图片

PPT 图片

产品

  • TiDB
  • TiSpark
  • TiDB 路线图

文档

  • 快速入门
  • 最佳实践
  • 常见问题解答
  • TiDB 周边工具
  • 版本发布说明

资源

  • 博客
  • GitHub
  • 知乎专栏
  • PingCAP University
  • 联合解决方案
  • Ask TUG

公司

  • 关于我们
  • 招贤纳士
  • 新闻报道

联系我们

  • Twitter
  • LinkedIn
  • Reddit
  • Google Group
  • Stack Overflow
  • 微信公众号
    Wechat qrCode

    微信扫一扫
    微信ID:pingcap2015

© 2019 北京平凯星辰科技发展有限公司

English