TiKV

TiDB 在摩拜单车的深度实践及应用

☆樱花仙子☆ 提交于 2019-12-02 07:57:16
作者介绍: 吕磊 ,摩拜单车高级 DBA。 一、业务场景 摩拜单车 2017 年开始将 TiDB 尝试应用到实际业务当中,根据业务的不断发展,TiDB 版本快速迭代,我们将 TiDB 在摩拜单车的使用场景逐渐分为了三个等级: P0 级核心业务:线上核心业务,必须单业务单集群,不允许多个业务共享集群性能,跨 AZ 部署,具有异地灾备能力。 P1 级在线业务:线上业务,在不影响主流程的前提下,可以允许多个业务共享一套 TiDB 集群。 离线业务集群:非线上业务,对实时性要求不高,可以忍受分钟级别的数据延迟。 本文会选择三个场景,给大家简单介绍一下 TiDB 在摩拜单车的使用姿势、遇到的问题以及解决方案。 二、订单集群(P0 级业务) 订单业务是公司的 P0 级核心业务,以前的 Sharding 方案已经无法继续支撑摩拜快速增长的订单量,单库容量上限、数据分布不均等问题愈发明显,尤其是订单合库,单表已经是百亿级别,TiDB 作为 Sharding 方案的一个替代方案,不仅完美解决了上面的问题,还能为业务提供多维度的查询。 2.1 订单 TiDB 集群的两地三中心部署架构 <center>图 1 两地三中心部署架构图</center> 整个集群部署在三个机房,同城 A、同城 B、异地 C。由于异地机房的网络延迟较高,设计原则是尽量使 PD Leader 和 TiKV Region

终极讲师介绍:集齐 27 位大神召唤亚洲首届 Rust 开发者大会!

℡╲_俬逩灬. 提交于 2019-12-02 07:57:04
RustCon Asia 进入倒计时!就在这个周六,将有 300+ 位开发者齐聚北京,参加亚洲最大的 Rust 语言开发者大会 RustCon Asia 。此次大会几乎将聚集全部 Rust 中国社区的资深开发者和已在生产环境应用的中国本土的 Rust 项目,以及来自亚洲之外的欧洲、澳洲、北美的顶尖开发者们。大家都约好面基了吗? 时间:4 月 20 -23 日 大会地点: 北京朝阳区广顺南大街 8 号 · 北京望京凯悦大酒店 Workshop 地点: 北京朝阳区大望京科技商务园区浦项中心A座 之前我们发布了 「大神面基指南(一)」 介绍了 8 位明星讲师,今天我们继续为大家介绍 19 位 重量级讲师和他们的议题,快来看看有没有你感兴趣的吧! ALEX :资深软件工程师,企业独立咨询师,技术书籍译者、作者 Alex 将会在 RustCon Asia 进行两场主题分享。在 talk 环节,Alex 将会为大家介绍 Rust 基础,主题为「How to learn Rust efficiently」,听完后想必会对“Rust 学习曲线高”的真正原因有所了解。在 workshop 环节,Alex 将会带来「Rapid Development of RESTful microservices using actix-web and diesel」主题分享,在该分享中,会以 TodoList

TiKV 源码解析系列文章(一)序

↘锁芯ラ 提交于 2019-12-01 18:49:06
作者:唐刘 TiKV 是一个支持事务的分布式 Key-Value 数据库,有很多社区开发者基于 TiKV 来开发自己的应用,譬如 titan 、 tidis 。尤其是在 TiKV 成为 CNCF 的 Sandbox 项目之后,吸引了越来越多开发者的目光,很多同学都想参与到 TiKV 的研发中来。这时候,就会遇到两个比较大的拦路虎: Rust 语言:众所周知,TiKV 是使用 Rust 语言来进行开发的,而 Rust 语言的学习难度相对较高,有些人认为其学习曲线大于 C++,所以很多同学在这一步就直接放弃了。 文档:最开始 TiKV 是作为 HTAP 数据库 TiDB 的一个底层存储引擎设计并开发出来的,属于内部系统,缺乏详细的文档,以至于同学们不知道 TiKV 是怎么设计的,以及代码为什么要这么写。 对于第一个问题,我们内部正在制作一系列的 Rust 培训课程,由 Rust 作者以及 Rust 社区知名的开发者亲自操刀,预计会在今年第一季度对外发布。希望通过该课程的学习,大家能快速入门 Rust,使用 Rust 开发自己的应用。 而对于第二个问题,我们会启动 《TiKV 源码解析系列文章》以及 《Deep Dive TiKV 系列文章》计划,在《Deep Dive TiKV 系列文章》中,我们会详细介绍与解释 TiKV 所使用技术的基本原理,譬如 Raft 协议的说明

TiPrometheus:基于 TiDB 的 TSDB | TiDB Hackathon 2018 优秀项目分享

我是研究僧i 提交于 2019-12-01 18:48:55
本文作者是菜哥和他的朋友们队的于畅同学,他们的项目 TiPrometheus 已经被 Prometheus adapter 合并。该项目分两个小项目,分别解决了时序数据的存储与计算问题。存储主要兼容 Prometheus 语法和数据格式,实现了精确查询、模糊查询,完全兼容现有语法。所有数据仅存在 TiKV 中。计算主要通过 TiKV 调用 Lua 实现,通过 Lua 动态扩展实现数据计算的功能。 项目简介 既然你关注了 TiDB, 想必你一定是个关注 Infrastructure 的硬汉(妹)子。监控作为 Infra 不可或缺的一环,其核心便是 TSDB(time series database) 。 TSDB 是一种以时间为主要索引的数据库,主要用来存储大量以时间为序列的指标数据,数据结构也比较简单,通常包括特征信息,指标数据和 timestamp。常见的 TSDB 包括 InfluxDB, OpenTSDB, Prometheus。 而 Prometheus 是一整套监控系统,时序数据库是它的存储部分,下面这张架构图来自于 Prometheus 官方,简单概括了其架构和生态的组成。 Prometheus 还支持一个图上没有体现的功能 Remote Storage,可以进行远程的读写,对查询是透明的。这个功能主要是用来做长存储。我们的项目就是实现了一个基于 TiKV 的 TSDB

贝壳金服 TiDB 在线跨机房迁移实践

橙三吉。 提交于 2019-12-01 04:07:16
作者介绍 : 李振环 ,贝壳金服数据基础架构负责人,目前负责数据平台和企业级数据仓库开发。 公司介绍 贝壳金服是专注居住场景的金融科技服务商,起步于2006年成立的链家金融事业部,并于 2017年3月正式独立运营。 贝壳金服聚焦于居住场景,在租赁、买卖、家装、安居等场景中为用户提供定制化的居住金融服务。贝壳金服以独家大数据与场景风控能力见长,致力于解决居住金融需求,以Fintech驱动产业升级,让每个家庭都能享受高品质的居住生活。 截至2018年底,贝壳金服业务已覆盖全国90多个城市及地区,为超过130万用户提供了金融服务。 项目背景 贝壳金服数据中台使用 TiDB 和 TiSpark 平台,基于 Syncer 将业务数据实时从 MySQL 备库抽取到 TiDB 中,并通过 TiSpark 对 TiDB 中的数据进行数据分析处理,供上游业务消费,现已服务于 70 多名数据开发人员。 现有集群已经使用 100 多个 Syncer 同步上游 MySQL 数据,目前已经达到 4.7TB 热数据,上百张离线和实时报表。由于机房调整,数据中台也需要同步迁移到新机房,结合 TiDB 的特性,我们探索了一种在线不停机迁移机房的方式。 TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、MySQL 语法,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适合

TiEye:Region 信息变迁历史可视化工具 | TiDB Hackathon 2018 优秀项目分享

浪子不回头ぞ 提交于 2019-12-01 04:07:03
本文作者是矛盾螺旋队的成员刘玮,他们的项目 **TiEye **在 TiDB Hackathon 2018 中获得了三等奖。TiEye 是 Region 信息变迁历史可视化工具,通过 PD记录 Region 的Split、Merge、ConfChange、LeaderChange 等信息,可以方便的回溯 Region 某个时间的具体状态,为开发人员提供了方便的可视化展示界面及查询功能。 TiKV 的 Region Region 是 TiKV 的一个数据调度单元,TiKV 将数据按照键值范围划分为很多个 Region,分在集群的多台机器上,通过调度 Region 来实现负载均衡以及数据存储的扩展,同时一个 Region 也是一个 Raft Group,一个 Region 分布在多个 TiKV 实例上(通常是 3 个或者 5 个),通过 Raft 算法保证多副本的强一致性。 动机 这个项目的灵感是之前在查一些问题的时候想到的,因为我们很多时候需要去知道 Region 在某个时间的状态,这就需要通过日志从杂乱的信息中提取出来有用的信息来复原当时的场景,但实际并不是特别方便高效,尤其是在看多个 Region 之间的关系的时候。因此通过将 Region 信息变化历史可视化,希望能为开发者们在定位问题的时候提供一个方便直观的工具,同时还能通过它来分析 PD 的调度策略

TiDB Lab 诞生记 | TiDB Hackathon 优秀项目分享

让人想犯罪 __ 提交于 2019-12-01 04:06:48
本文由 红凤凰粉凤凰粉红凤凰队 的成员主笔,他们的项目 TiDB Lab 在本届 TiDB Hackathon 2018 中获得了二等奖。TiDB Lab 为 TiDB 培训体系增加了一个可以动态观测 TiDB / TiKV / PD 细节的动画教学 Lab,让用户可以一边进行真实操作一边观察组件之间的变化,例如 SQL 的解析,Region 的变更等等,从而生动地理解 TiDB 的工作原理。 项目简介 简介 TiDB Lab,全称 TiDB Laboratory ,是一个集 TiDB 集群状态的在线实时可视化与交互式教学的平台。用户可以一边对 TiDB 集群各个组件 TiKV、TiDB、PD 进行各种操作,包括上下线、启动关闭、迁移数据、插入查询数据等,一边在 TiDB Lab 上以动画形式观察操作对集群的影响,例如数据是怎么流动的,Region 副本在什么情况下发生了变更等等。通过 TiDB Lab 这种对操作进行可视化反馈的交互模式,用户可以快速且生动地理解 TiDB 内部原理。 功能 实时动态展示 TiDB、TiKV 节点的新增、启动与关闭。 实时动态展示 TiDB 收到 SQL 后,物理算子将具体请求发送给某些 TiKV Region Leader 并获取数据的过程。 实时动态展示各个 TiKV 实例上 Region 副本状态的变化,例如新增、删除、分裂。

TiKV Rust Client 迁移记 - Futures 0.1 至 0.3

旧时模样 提交于 2019-11-30 14:26:24
作者介绍:Nick Cameron,PingCAP 研发工程师,Rust core team 成员,专注于分布式系统、数据库领域和 Rust 语言的进展。 最近我将一个中小型的 crate 从 futures 库的 0.1 迁移至了 0.3 版本。过程本身不是特别麻烦,但还是有些地方或是微妙棘手,或是没有很好的文档说明。这篇文章里,我会把迁移经验总结分享给大家。 我所迁移的 crate 是 TiKV 的 Rust Client 。该 crate 的规模约为 5500 行左右代码,通过 gRPC 与 TiKV 交互,采用异步接口实现。因此,对于 futures 库的使用颇为重度。 异步编程是 Rust 语言中影响广泛的一块领域,已有几年发展时间,其核心部分就是 futures 库。作为一个标准 Rust 库,futures 库为使用 futures 编程提供所需数据类型以及功能。虽然它是异步编程的关键,但并非你所需要的一切 - 你仍然需要可以推进事件循环 (event loop) 以及与操作系统交互的其他库。 futures 库在这几年中变化很大。最新的版本为 0.3(crates.io 发布的 futures 预览版)。然而,有许多早期代码是 futures 0.1 系列版本,且一直没有更新。这样的分裂事出有因 - 0.1 和 0.3 版本之间变化太大。0.1 版本相对稳定,而 0

TiKV Engine SIG 成立,硬核玩家们看过来!

隐身守侯 提交于 2019-11-30 14:23:18
作者:Yi Wu TiKV 是一个开源项目,我们一直都欢迎和感激开源社区对 TiKV 所作出的贡献。但我们之前对开源社区的合作主要是在代码审阅和散落在各种社交媒体的线下讨论,开发者并没有合适的途径去了解和影响 TiKV 的开发计划。怎么才能更好的帮助大家找到组织,更好地参与到 TiKV 的开发中来呢?我们的设想是搭建公开的平台,邀请对 TiKV 中特定领域感兴趣的开发者加入其中,与我们一起探讨和推进相应工作。Special Interest Group(SIG)就是这样的平台。 TiKV Engine SIG 是继 Coprocessor SIG 之后成立的第二个 TiKV SIG 社区组织,主要职责是对 TiKV 的存储引擎的未来发展进行讨论和规划,并进行相关开发和维护。 目前 TiKV 仅支持默认存储引擎 RocksDB,但是通过扩展接口,希望未来 TiKV 可以支持更多的存储引擎,我们也期待这部分工作可以得到社区的支持,在社区的讨论和贡献中得到更好的完善。此外,Engine SIG 也会对已有的存储引擎进行相关的开发和完善工作。 Engine SIG 的工作主要涉及的模块包括: Engine Trait: TiKV 中存储引擎的抽象层。 RocksDB:包括维护 TiKV 所使用的 RocksDB 分支,以及 rust-rocksdb 封装。 Titan:提供 KV

开源社区怎么玩?明星项目 TiKV 的 Maintainer 这样说……

拈花ヽ惹草 提交于 2019-11-30 14:15:21
知乎技术平台团队负责人孙晓光有一个新的身份:开源分布式事务 Key-Value 数据库 TiKV项目的 Maintainer。Maintainer 是 TiDB/TiKV 开源社区的角色之一,是社区中较高级别的代码贡献者,项目的规划和设计者,拥有合并主干分支的权限。一般来说从开始贡献代码的 Contributor 成长为 Maintainer,最明显的变化是,对项目有更全局、深入的了解,对项目未来的发展也有独到、准确的见解。 孙晓光觉得,其实从 Contributor 到 Committer 再到最后成为 Maintainer 这个过程,最大的感受是自己逐渐融入到了 TiKV 社区中,真正有了归属感。今天我们就带着 TiDB/TiKV 社区伙伴们的期待,和孙晓光聊了聊,打探了一下他成为 Maintainer 的经历,以及对 TiKV 社区未来的想法。 初识:寻找原生的分布式存储方案 > 与 TiKV 项目初识,其实是带着明确的目标的。 孙晓光 2007 年毕业回国,当时国内刚开始做云,他进入一家做私有云的公司,从事私有云相关产品开发工作 7 年多时间,他坦言,这段工作经历让他个人积累了许多云相关底层系统的工作经验,这也是他对平台类技术比较感兴趣的核心原因。2017 年孙晓光加入知乎。 刚到知乎时,他负责已读服务的开发,知乎的存储层采用的还是 MySQL 分库分表技术方案。