Go in TiDBGo in TiDB Yao Wei | PingCAP About me ● Yao Wei (姚维) ● TiDB Kernel Expert, General Manager of South Region, China ● 360 Infra team / Alibaba-UC / PingCAP ● Atlas/MySQL-Sniffer ● Infrastructure software HBase Cassandra MongoDB ... Google Spanner Google F1 TiDB RDBMS NoSQL NewSQL Architecture TiKV TiKV TiKV TiKV Raft Raft Raft TiDB TiDB TiDB ... ... Placement Driver (PD) Control flow: Balance queries ● Very complex OLAP queries ● External Consistency ● SQL is much more complex than KV Why TiDB choose Golang? ● Easy-learning ● Productivity ● Concurrency ● Easy to trace bugs and profile0 码力 | 22 页 | 1.01 MB | 1 年前3
高可用与一致性:构建强一致性分布式数据库 TiDB-沈泰宁构建强⼀一致性分布式数据库 TiDB 沈泰宁 R & D Engineer @ PingCAP ⾃自我介绍 ⾃自我介绍 • 沈泰宁 • R&D Engineer @ PingCAP • Maintainer • rust-prometheus • grpc-rs • … ⽬目录 • What is TiDB? • How to test? What is TiDB? Single com/pingcap/tidb TiDB Overview MySQL wired protocol SQL NoSQL tidb-server tikv-server •No single point of failure •Automatic failover High Availability at Scale •Snapshot isolation @ TiDB •Linearizability bugs •Redis •etcd •Cassandra … Jepsen Jepsen: How does it work? N1 N2 N3 N4 N5 Control TiDB Cluster Requests & Nemesis •Network •Clock •Process Nemesis Network: Partition One N1 N20 码力 | 45 页 | 4.63 MB | 1 年前3
美团点评2018技术年货(Change Data Capture) + Merge的技术方案,即实时 Binlog采集 + 离线处理Binlog还原业务数据这样一套解决方案。Binlog是MySQL的二进制日志,记录了 MySQL中发生的所有数据变更,MySQL集群自身的主从同步就是基于Binlog做的。 本文主要从Binlog实时采集和离线处理Binlog还原业务数据两个方面,来介绍如何实现DB数据准确、高 效地进入数仓。 美团DB数据同步到数据仓库的架构与实践 - 美团技术团队 整体的架构如上图所示。在Binlog实时采集方面,我们采用了阿里巴巴的开源项目Canal,负责从MySQL 实时拉取Binlog并完成适当解析。Binlog采集后会暂存到Kafka上供下游消费。整体实时采集部分如图中 红色箭头所示。 离线处理Binlog的部分,如图中黑色箭头所示,通过下面的步骤在Hive上还原一张MySQL表: 1 采用Linkedin的开源项目Camus,负责每小时把Kafka上的Binlog数据拉取到Hive上。 2. 对每张ODS表,首先需要一次性制作快照(Snapshot),把MySQL里的存量数据读取到Hive上,这一过程底层采用 直连MySQL去Select数据的方式。 3. 对每张ODS表,每天基于存量数据和当天增量产生的Binlog做Merge,从而还原出业务数据。 我们回过头来看看,背景中0 码力 | 229 页 | 61.61 MB | 1 年前3
Go 构建大型开源分布式数据库技术内幕Go 搭建大型开源分布式数据库技术内幕 shenli@PingCAP 关于我 ● 申砾 (Shen Li) ● TiDB 技术负责人 ● 网易有道 / 360搜索 / PingCAP ● Infrastructure software engineer 为什么需要一个新的数据库? 从单机数据库到 NewSQL ● 关系型数据库 ● NoSQL ● 中间件 ● NewSQL Redis HBase Cassandra MongoDB ... Google Spanner Google F1 TiDB RDBMS NoSQL NewSQL NewSQL 是什么 ● 水平扩展 ● 事务 ● 高可用 & 自动故障恢复 ● SQL TiDB ● Scalability as the first class feature ● SQL is necessary it right and make it fast. ● 测试很重要 ● 简单易用 ● 和社区结合 架构 TiKV TiKV TiKV TiKV Raft Raft Raft TiDB TiDB TiDB ... ... ... ... ... Placement Driver (PD) Control flow: Balance / Failover Metadata / Timestamp0 码力 | 44 页 | 649.68 KB | 1 年前3
5 How to integrate Graph mode into RDBMS smoothly => nil TiDB 架构 01. 副标题 TiDB TiDB Worker Spark Driver TiKV Cluster (Storage) Metadata TiKV TiKV TiKV MySQL Clients Syncer Data location Job TiSpark DistSQL API TiKV TiDB TSO/Data TSO/Data location Worker Worker Spark Cluster TiDB Cluster TiDB ... ... ... DistSQL API PD PD PD Cluster TiKV TiKV TiDB PD 天下大势,合久必分,分久必合 《三国演义》 图 + 关系型多模实现 01. 副标题 g_prefix Vertex_ID Tag_ID OrderBy Limit Traverse Projection GraphTagReader Filter (age>10) https://github.com/tigraph/tidb DEMO 第三部分 DEMO 01. 副标题 -- 创建 people 点 CREATE TAG people (id BIGINT, name VARCHAR(32)); -- 写入0 码力 | 26 页 | 1.14 MB | 1 年前3
Go在数据库中间件的应用现存问题 • 数据库访问基本采用直连方式 • 无法满足数据访问平台化要求 • 配置管理方式落后,运维压力大 • 为什么采用Go来实现 • go诸多优点,可用性高 • go处理mysql的binlog有知识积累 • 公司大规模推广使用go 8 分表路由逻辑 • 分表规则 • 哈希分表:shardkey通过Hash函数分表 • 分段分表:按照年、月、日或者整形范围分表 本质上哈希 本质上哈希分表与分段分表都是一样,只是其Hash方式不同,使得看起来有两 种不同的数据组织方式。 9 故障主备切换 • 故障情形 • 从节点挂掉:进行剔除下线处理 • 主节点挂掉,机器存活:通过binlog恢复数据,提升备为主 • 主节点挂掉,机器不存活:采用Relaylog恢复数据,提升备为主 • 部署模式 • 一主多从 • 双主多从 10 故障主备切换 • 一主多从模式 master Dead-Master Latest-Slave Slave Latest-Slave与Master差异 日志 Latest-Slave与Slave差异 日志 Master故障时试图通过Rsync拉取Binlog,最大程度保 证数据不丢失; Slave之间的数据差异通过中继日志恢复。 • 数据恢复工作原理 11 故障主备切换 • 双主多从模式 master slave slave slave0 码力 | 17 页 | 4.02 MB | 1 年前3
Real world Rust
- Why and how we use Rust in TiKVhacker / Infrastructure Engineer ● MSRA / Netease / Wandoujia / PingCAP ● CTO of PingCAP ● Codis / TiDB / TiKV ● Go / Python / Rust ... What’s Rust ● Yet another system programming language ○ Maintain 数据库 ● 支持 ACID 跨行事务支持 ● 支持 MVCC 无锁的快照读 ● 构建于 Raft 之上,不依赖分布式文件系统 ○ 更少的第三方依赖 ○ 更高的性能(低延迟) ● 配合 TiDB 使用,需要有健全的逻辑实现 SQL 层的下推算子 TiKV 的前置需求 ● 极高的性能要求,尽可能低延迟,而且延迟需要稳定 ● 设计分布式系统的逻辑,极其复杂 ○ Raft ○ Multi-Raft0 码力 | 29 页 | 506.53 KB | 1 年前3
FISCO BCOS 2.7.2 中文文档修复同一个区块内修改Entry,后续交易查询该Entry结果出错的问题 修复raft共识下,非leader节点交易池中的交易不能被打包的问题 修复CachedStorage的一个死锁问题 修复开启Binlog情况下,极端情况下,从Binlog恢复出错的问题 修复特定情况下节点重启后Viewchange被拒,无法快速恢复视图的问题 兼容性 向前兼容,旧版本可以直接替换程序升级 推荐版本 最低版本 说明 控制台 1 控制本地存储的整体数据量。 重要 FISCO BCOS从2.7.1版本开始,通过配置“数据仓库”,实现对海量数据 治理的支持; FISCO BCOS为实现海量数据治理的功能,需使用scalable存储模式、 开启binlog及配置amdb-proxy,相关操作见本文档说明; “数据仓库”的使用请参考 [文档] [https://data- doc.readthedocs.io/zh_CN/latest/docs/ type=scalable来选择链的存储模式 为scalable。 设置群组的ini配置文件中[storage].binary_log=true来启用binlog。如 用户使用build_chain脚本搭链,并选择scalable存储模式,配置文件会自 动开启binlog。 参考说明进行amdb-proxy配置,其中设置amdb-proxy访问的数据源为“数 据仓库”生成的数据库。 文件组织 节点使用sc0 码力 | 2520 页 | 211.87 MB | 1 年前3
FISCO BCOS 2.8.0 中文文档修复同一个区块内修改Entry,后续交易查询该Entry结果出错的问题 修复raft共识下,非leader节点交易池中的交易不能被打包的问题 修复CachedStorage的一个死锁问题 修复开启Binlog情况下,极端情况下,从Binlog恢复出错的问题 修复特定情况下节点重启后Viewchange被拒,无法快速恢复视图的问题 兼容性 向前兼容,旧版本可以直接替换程序升级 推荐版本 最低版本 说明 控制台 1 控制本地存储的整体数据量。 重要 FISCO BCOS从2.7.1版本开始,通过配置“数据仓库”,实现对海量数据 治理的支持; FISCO BCOS为实现海量数据治理的功能,需使用scalable存储模式、 开启binlog及配置amdb-proxy,相关操作见本文档说明; “数据仓库”的使用请参考 [文档] [https://data- doc.readthedocs.io/zh_CN/latest/docs/ type=scalable来选择链的存储模式 为scalable。 设置群组的ini配置文件中[storage].binary_log=true来启用binlog。如 用户使用build_chain脚本搭链,并选择scalable存储模式,配置文件会自 动开启binlog。 参考说明进行amdb-proxy配置,其中设置amdb-proxy访问的数据源为“数 据仓库”生成的数据库。 文件组织 节点使用sc0 码力 | 2534 页 | 212.43 MB | 1 年前3
FISCO BCOS 2.8.0 中文文档修复同一个区块内修改Entry,后续交易查询该Entry结果出错的问题 修复raft共识下,非leader节点交易池中的交易不能被打包的问题 修复CachedStorage的一个死锁问题 修复开启Binlog情况下,极端情况下,从Binlog恢复出错的问题 修复特定情况下节点重启后Viewchange被拒,无法快速恢复视图的问题 兼容性 向前兼容,旧版本可以直接替换程序升级 推荐版本 最低版本 说明 控制台 1 控制本地存储的整体数据量。 重要 FISCO BCOS从2.7.1版本开始,通过配置“数据仓库”,实现对海量数据 治理的支持; FISCO BCOS为实现海量数据治理的功能,需使用scalable存储模式、 开启binlog及配置amdb-proxy,相关操作见本文档说明; “数据仓库”的使用请参考 [文档] [https://data- doc.readthedocs.io/zh_CN/latest/docs/ type=scalable来选择链的存储模式 为scalable。 设置群组的ini配置文件中[storage].binary_log=true来启用binlog。如 用户使用build_chain脚本搭链,并选择scalable存储模式,配置文件会自 动开启binlog。 参考说明进行amdb-proxy配置,其中设置amdb-proxy访问的数据源为“数 据仓库”生成的数据库。 文件组织 节点使用sc0 码力 | 2534 页 | 212.43 MB | 1 年前3
共 133 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14













