TiCDC 源码阅读(四)TiCDC Scheduler 工作原理解析

2023-02-07
阅读 9 分钟
665
本文是 TiCDC 源码解读的第四篇,主要内容是讲述 TiCDC 中 Scheduler 模块的工作原理。主要内容如下:Scheduler 模块的工作机制两阶段调度原理Scheduler 模块介绍Scheduler 是 Changefeed 内的一个重要模块,它主要负责两件事情:将一个 Changefeed 所有需要被同步的表,分发到不同的 TiCDC 节点上进行同步工作,以达到...

TiKV 源码阅读三部曲(三)写流程

2022-11-16
阅读 32 分钟
604
作为一个新同学,需要一定的前期准备才能够有能力参与 TiKV 社区的代码开发,包括但不限于学习 Rust 语言,理解 TiKV 的原理和在前两者的基础上了解熟悉 TiKV 的源码。
封面图

TiKV 源码阅读三部曲(二)读流程

2022-10-27
阅读 18 分钟
800
作为一个新同学,需要一定的前期准备才能够有能力参与 TiKV 社区的代码开发,包括但不限于学习 Rust 语言,理解 TiKV 的原理和在前两者的基础上了解熟悉 TiKV 的源码。

TiKV 源码解析系列文章(十七)raftstore 概览

2020-01-16
阅读 5 分钟
1.4k
TiKV 作为一个分布式 KV 数据库,使用 Raft 算法来提供强一致性。Raft 算法提供了单一 group 的一致性,但是单一 group 无法扩展和均衡。因此,TiKV 采用了 MultiRaft 的方式基于 Raft 算法提供能兼顾一致性、扩展均衡的 KV 储存。下文以 3.0 版本代码为例,讲述 raftstore 源码中的关键定义和设计。

TiDB Binlog 源码阅读系列文章(七)Drainer server 介绍

2019-12-25
阅读 7 分钟
1.2k
前面文章介绍了 Pump server,接下来我们来介绍 Drainer server 的实现,Drainer server 的主要作用是从各个 Pump server 获取 binlog,按 commit timestamp 归并排序后解析 binlog 同步到不同的目标系统,对应的源码主要集中在 TiDB Binlog 仓库的 drainer/ 目录下。

TiKV 源码解析系列文章(十六)TiKV Coprocessor Executor 源码解析

2019-12-12
阅读 15 分钟
1.4k
在前两篇文章 TiKV 源码解析系列文章(十四)Coprocessor 概览、TiKV 源码解析系列文章(十五)表达式计算框架中,讲到了 TiDB 为了最大化利用分布式计算能力,会尽量将 Selection 算子、Aggregation 算子等算子下推到 TiKV 节点上,以及下推的表达式是如何在 TiKV 上做计算的。本文将在前两篇文章的基础上,介绍下推算...

TiDB Binlog 源码阅读系列文章(六)Pump Storage 介绍(下)

2019-12-03
阅读 5 分钟
1.2k
在 上篇文章 中,我们主要介绍了 Pump Storage 是如何对 binlog 进行持久化存储、排序、配对的。在文中我们提到 binlog 的持久化键值存储主要是由 valueLog 组件完成的。同时,大家如果在上文点开 writeToValueLog 代码阅读的话会发现在其中还会使用一个 slowChaser 组件。slowChaser 组件主要用于避免在写 kv 环节中 Go...

TiKV 源码解析系列文章(十五)表达式计算框架

2019-11-19
阅读 8 分钟
1.3k
上一篇 《TiKV 源码解析系列文章(十四)Coprocessor 概览》讲到了 TiDB 为了最大化利用分布式计算能力,会尽量将 Selection 算子、聚合算子等算子下推到 TiKV 节点上。本文将继续介绍 Coprocessor 中表达式计算框架的源码架构,带大家看看 SQL 中的表达式是如何在 Coprocessor 中执行的。

TiKV 源码解析系列文章(十四)Coprocessor 概览

2019-11-01
阅读 4 分钟
2.3k
本文将简要介绍 TiKV Coprocessor 的基本原理,面向想要了解 TiKV 数据读取执行过程的同学,同时也面向想对该模块贡献代码的同学。阅读本文前,建议读者对 TiDB 整体架构有所了解,先阅读三篇文章了解 TiDB 技术内幕:说存储、说计算、谈调度。

TiKV 源码解析系列文章(十三)MVCC 数据读取

2019-09-04
阅读 15 分钟
1.4k
在 《TiKV 源码解析系列文章(十二)分布式事务》 中,我们介绍了如何在满足事务特性的要求下进行数据写入。本文将介绍数据读取的流程。由于顺序扫(Forward Scan)比较具有代表性,因此本文只介绍顺序扫的流程,而不会介绍点查或逆序扫。点查是顺序扫的简化,相信读者理解了顺序扫的流程后能自己想出点查的实现,而逆序...

TiKV 源码解析系列文章(十二)分布式事务

2019-08-13
阅读 8 分钟
2k
在之前的文章里,我们已经介绍了 TiKV 的 Service 层、Storage 层。相信大家已经大致清楚,TiKV 的事务相关的代码都位于 Storage 层中。本文将更加深入地讲解 TiKV 的事务算法的原理和实现细节。

TiKV 源码解析系列文章(十一)Storage - 事务控制层

2019-07-30
阅读 7 分钟
2.7k
TiKV 是一个强一致的支持事务的分布式 KV 存储。TiKV 通过 raft 来保证多副本之间的强一致,事务这块 TiKV 参考了 Google 的 Percolator 事务模型,并进行了一些优化。

DM 源码阅读系列文章(十)测试框架的实现

2019-07-24
阅读 6 分钟
1.7k
本文为 DM 源码阅读系列文章的第十篇,之前的文章已经详细介绍过 DM 数据同步各组件的实现原理和代码解析,相信大家对 DM 的实现细节已经有了深入的了解。本篇文章将从质量保证的角度来介绍 DM 测试框架的设计和实现,探讨如何通过多维度的测试方法保证 DM 的正确性和稳定性。

DM 源码阅读系列文章(九)shard DDL 与 checkpoint 机制的实现

2019-07-18
阅读 7 分钟
1.6k
本文为 DM 源码阅读系列文章的第九篇,在 上篇文章 中我们详细介绍了 DM 对 online schema change 方案的同步支持,对 online schema change 同步方案以及实现细节等逻辑进行了分析。

TiKV 源码解析系列文章(十)Snapshot 的发送和接收

2019-07-10
阅读 6 分钟
1.7k
TiKV 使用 Raft 算法来提供高可用且具有强一致性的存储服务。在 Raft 中,Snapshot 指的是整个 State Machine 数据的一份快照,大体上有以下这几种情况需要用到 Snapshot:

TiKV 源码解析系列文章(九)Service 层处理流程解析

2019-07-08
阅读 5 分钟
1.5k
之前的 TiKV 源码解析系列文章介绍了 TiKV 依赖的周边库,从本篇文章开始,我们将开始介绍 TiKV 自身的代码。本文重点介绍 TiKV 最外面的一层——Service 层。

TiDB Binlog 源码阅读系列文章(二)初识 TiDB Binlog 源码

2019-07-05
阅读 3 分钟
1.5k
TiDB Binlog 主要由 Pump 和 Drainer 两部分组成,其中 Pump 负责存储 TiDB 产生的 binlog 并向 Drainer 提供按时间戳查询和读取 binlog 的服务,Drainer 负责将获取后的 binlog 合并排序再以合适的格式保存到对接的下游组件。

TiDB 3.0 GA,稳定性和性能大幅提升

2019-06-29
阅读 4 分钟
1.5k
TiDB 是 PingCAP 自主研发的开源分布式关系型数据库,具备商业级数据库的数据可靠性,可用性,安全性等特性,支持在线弹性水平扩展,兼容 MySQL 协议及生态,创新性实现 OLTP 及 OLAP 融合。

DM 源码阅读系列文章(八)Online Schema Change 同步支持

2019-06-20
阅读 3 分钟
1.6k
本文为 DM 源码阅读系列文章的第八篇,上篇文章 对 DM 中的定制化数据同步功能进行详细的讲解,包括库表路由(Table routing)、黑白名单(Black & white table lists)、列值转化(Column mapping)、binlog 过滤(Binlog event filter)四个主要功能的实现。

TiDB Binlog 源码阅读系列文章(一)序

2019-06-18
阅读 3 分钟
1.3k
TiDB Binlog 组件用于收集 TiDB 的 binlog,并准实时同步给下游,如 TiDB、MySQL 等。该组件在功能上类似于 MySQL 的主从复制,会收集各个 TiDB 实例产生的 binlog,并按事务提交的时间排序,全局有序的将数据同步至下游。利用 TiDB Binlog 可以实现数据准实时同步到其他数据库,以及 TiDB 数据准实时的备份与恢复。随着...

TiKV 源码解析系列文章(八)grpc-rs 的封装与实现

2019-06-13
阅读 7 分钟
1.2k
上一篇《gRPC Server 的初始化和启动流程》为大家介绍了 gRPC Server 的初始化和启动流程,本篇将带大家深入到 grpc-rs 这个库里,查看 RPC 请求是如何被封装和派发的,以及它是怎么和 Rust Future 进行结合的。

DM 源码阅读系列文章(六)relay log 的实现

2019-06-03
阅读 7 分钟
1.9k
本文为 DM 源码阅读系列文章的第六篇,在 上篇文章 中我们介绍了 binlog replication 处理单元的实现,对在增量复制过程中 binlog event 的读取、过滤、路由、转换以及执行等逻辑进行了分析。

TiKV 源码解析系列文章(七)gRPC Server 的初始化和启动流程

2019-05-16
阅读 4 分钟
1.3k
本篇 TiKV 源码解析将为大家介绍 TiKV 的另一周边组件—— grpc-rs。grpc-rs 是 PingCAP 实现的一个 gRPC 的 Rust 绑定,其 Server/Client 端的代码框架都基于 Future,事件驱动的 EventLoop 被隐藏在了库的内部,所以非常易于使用。本文将以一个简单的 gRPC 服务作为例子,展示 grpc-rs 会生成的服务端代码框架和需要服务...

What’s New in TiDB 3.0.0-rc.1

2019-05-13
阅读 2 分钟
1.2k
2019 年 5 月 10 日,TiDB 3.0.0-rc.1 版本正式推出,该版本对系统稳定性,性能,安全性,易用性等做了较多的改进,接下来逐一介绍。

TiDB 3.0.0-rc.1 Release Notes

2019-05-13
阅读 4 分钟
1.3k
2019 年 5 月 10 日,TiDB 发布 3.0.0-rc.1 版,对应的 TiDB-Ansible 版本为 3.0.0-rc.1。相比 3.0.0-beta.1 版本,该版本对系统稳定性、易用性、功能、优化器、统计信息以及执行引擎做了很多改进。

TiKV 源码解析(六)raft-rs 日志复制过程分析

2019-04-25
阅读 6 分钟
1.9k
RawNode::ready_since 从 Raft 节点中获取最近的更新,包括新近追加的日志、新近确认的日志,以及需要给其他节点发送的消息等;

DM 源码阅读系列文章(三)数据同步处理单元介绍

2019-04-11
阅读 3 分钟
1.2k
本文为 DM 源码阅读系列文章的第三篇,上篇文章 介绍了 DM 的整体架构,DM 组件 DM-master 和 DM-worker 的入口代码,以及两者之间的数据交互模型。本篇文章详细地介绍 DM 数据同步处理单元(DM-worker 内部用来同步数据的逻辑单元),包括数据同步处理单元实现了什么功能,数据同步流程、运行逻辑,以及数据同步处理单...

一个从基础到实战的学习机会:Go & Rust、分布式数据库系统 | PingCAP Talent Plan

2019-04-04
阅读 3 分钟
2.9k
TiDB 每一次微小进步都离不开广大社区小伙伴们的支持,但也有很多同学反映 TiDB 是一个非常复杂的分布式数据库系统,如果没有相关知识和经验积累,在参与之初难免会遇到各种问题。因此我们决定全面升级 PingCAP Talent Plan 计划,为社区小伙伴开放一系列关于编程语言、数据库及分布式系统的线上课程,线上考核成绩优异...

TiKV 源码解析(五)fail-rs 介绍

2019-04-01
阅读 5 分钟
2.3k
fail-rs 的设计启发于 FreeBSD 的 failpoints,由 Rust 实现。通过代码或者环境变量,其允许程序在特定的地方动态地注入错误或者其他行为。在 TiKV 中通常在测试中使用 fail point 来构建异常的情况,是一个非常方便的测试工具。

DM 源码阅读系列文章(二)整体架构介绍

2019-03-26
阅读 4 分钟
2.2k
本文为 DM 源码阅读系列文章的第二篇,第一篇文章 简单介绍了 DM 源码阅读的目的和规划,以及 DM 的源码结构以及工具链。从本篇文章开始,我们会正式开始阅读 DM 的源码。