Golang equality and ordering

Golang equality and ordering Golang doesn’t include explicit interfaces for equality and ordering, which is a deliberate design choice aimed at maintaining language simplicity. The compiler automatically handles equality and ordering operations for basic types. In this post, I’ll explore how the Go compiler implements these fundamental comparison operations under the hood.

January 11, 2025 · 1 min · Rustin liu

TiCDC 架构和数据同步链路解析

TiCDC 是 TiDB 生态中的一个数据同步工具,它通过拉取 TiKV 的变更日志实现数据的增量同步。它除了可以将 TiDB 的数据同步至 MySQL 兼容的数据库之外,还提供了同步至 Kafka 的能力,支持 canal 和 avro 多种开放消息协议供其他系统订阅数据变更。 基本概念 以下这些都是理解 TiCDC 架构之前需要熟悉的基本概念,主要是对 TiDB 内部的一些组件和概念的解释。 TiDB: 下文中提到的 TiDB 主要是指它作为是一个计算层的抽象提供执行 SQL 的能力,没有真实的存储数据。 TiKV: 一个支持 ACID 的键值数据库,它可以作为 TiDB 的存储层。 Region: 它是 TiKV 数据移动的基本单位,可以将它认为是一组键值对集合。每个 Region 被复制到多个 TiKV 节点。 两阶段提交:一种分布式算法,它协调所有参与分布式原子事务的进程,决定是否提交或中止(回滚)该事务。 StartTs: TiDB 在开始两阶段提交时获取到的一个全局唯一递增的时间戳作为当前事务的唯一事务 ID,这里称为该事务的 start_ts。 CommitTs: TiDB 在提交两阶段提交事务时获取到另外一个全局唯一递增的时间戳作为该事务的 commit_ts。 什么是 CDC? CDC 的全称为 Change Data Capture,它是指从源数据库捕获数据并且将其同步到其他数据库或者应用程序的过程。它作为一种很常见的数据集成方式被大量的应用在数据仓库中。当然任何的数据库系统都可以构建自己的 CDC,比如 SQL Server 的 CDC。TiCDC 就是专属于 TiDB 的 CDC,它的上游只能是 TiDB,但是它的下游可以是其他 MySQL 兼容的数据库系统,也可以是消息队列。...

July 11, 2022 · 5 min · Rustin liu