作者: ShawnYan
历时四个月,恭喜赵老师的《TiDB从0到1》 系列文章顺利完结,小编再次梳理一遍文稿,并附注解分享给大家。
整体架构
从 TiDB 1.0 到 8.0,TiDB 的体系结构一直在不断演进。接下来让我们一起看看整体架构的变化。
TiDB v1
TiDB v1,主核心框架已定,TiDB 由 TiDB Server, TiKV Server, PD Server 三大核心组件构成。
更多参考:星辰考古:TiDB v1.0 再回首
TiDB v2
TiDB v2,整体架构升级,引入 TiSpark,解决用户复杂的 OLAP 需求。
更多参考:星辰考古:TiDB v2.x 回忆杀
TiDB v3
TiDB v3,整体架构“焕新”,初见 TiFlash。
更多参考:星辰考古:TiDB v3.x 忆水木
TiDB v4
TiDB v4,TiFlash 重要程度提升,下图为 TiDB HTAP 形态架构。
TiCDC 从 v4.0.6 起成为正式功能,可用于生产环境。
图为 TiCDC 架构图
图为 TiCDC 集群及节点内部组件的设计图
更多参考:星辰考古:TiDB v4.0 进化前夜
TiDB v6
从 TiDB 6.0.0 开始,版本的生命维护周期重大调整,TiDB 提供两个版本系列:
- 长期支持版本(LTS)约每六个月发布一次。
- 开发里程碑版本(DMR)约每两个月发布一次。
在 TiDB v6.1.0 LTS 的文档中,TiDB 整体架构图再次更新,去 TiSpark,正式迎来 TiFlash。
目前,TiDB 已来到 v8 版本,整体架构趋于稳定,与 v6 相同。
VLDB 论文
在之前的文章中提及:
PingCAP 团队的论文《TiDB: A Raft-based HTAP Database》入选 VLDB 2020 ,成为业界第一篇 Real-time HTAP 分布式数据库工业实现的论文。
PingCAP 的目标是构建一个单一、实时事实来源的数据库,以便应用程序和其上的业务能够适应不确定性。在构建 TiDB 的过程中,其受益于 Raft 和 Spanner 等数据库和分布式系统研究。提出将 TiDB 作为混合事务和分析处理 (HTAP) 数据库,这是一种适用于 OLTP 和 OLAP 应用程序的“一刀切”解决方案。并将该方案以论文的形式回馈给学术界。
在今年刚闭幕的 VLDB 2024 会议中,TiDB 携两篇论文、一个 Demo Paper 亮相。
论文下载地址:https://asktug.com/t/topic/1031551
VLDB 是数据库领域的顶级国际会议,旨在为数据管理、可扩展数据科学、数据库研究者、供应商、从业者、应用开发者和用户提供交流平台。2024 年的 VLDB 会议涵盖了数据管理、数据库架构、图形数据管理、数据隐私与安全、数据挖掘、机器学习、人工智能和数据库系统研究等领域的问题——这些都是 21 世纪新兴应用的基本技术基石。
TiKV & RocksDB
RocksDB 是由 Facebook 基于 LevelDB 开发的一款提供键值存储与读写功能的 LSM-tree 架构引擎。用户写入的键值对会先写入磁盘上的 WAL (Write Ahead Log),然后再写入内存中的跳表(SkipList,这部分结构又被称作 MemTable)。LSM-tree 引擎由于将用户的随机修改(插入)转化为了对 WAL 文件的顺序写,因此具有比 B 树类存储引擎更高的写吞吐。
RocksDB 作为 TiKV 的核心存储引擎,用于存储 Raft 日志以及用户数据。每个 TiKV 实例中有两个 RocksDB 实例,一个用于存储 Raft 日志(通常被称为 raftdb),另一个用于存储用户数据以及 MVCC 信息(通常被称为 kvdb)。
得益于 RocksDB 优秀的产品和活跃的社区,TiKV 的产品力也在不断增强,同时 PingCAP 也在积极回馈 RocksDB 社区,下图为 RocksDB 贡献榜单,PingCAP 贡献的 PR 数排位第三。
TiUP
TiUP 当前版本为 1.16.0
。
关于 TiUP 的内容,之前介绍过,具体参阅:
- TiUP v1.16 发版,支持 PD 微服务
- TiDB 7.x 源码编译之 TiUP 篇
- TiUP:TiDBAer 必备利器
这里补充几点。
从 TiDB v8.0.0 开始:
- TiProxy 成为正式功能,并集成到 TiUP 组件中。
- 由 TiUP 默认部署的 Prometheus 版本升级到 2.49.1
- 由 TiUP 默认部署的 Grafana 版本升级到 7.5.17
关于 TiProxy 的内容,可参阅:
- 社区声音:恭喜 TiProxy 组件 GA!
- TiDB 7.x 源码编译之 TiProxy 篇
集群配置
TiDB 集群中包含若干组件,每个组件都有各自配置项,不论是日常调优还是版本升级,都需要确认配置项的变化。
在 TiDB 社区中,有两个实用工具,推荐给大家。
- tidb_config_diff: https://tidb.net/blog/2ad42384
- TiDBA: https://tidb.net/blog/299f0bdc
感谢提供工具的大佬们。
感谢
值此教师节之际,特此感谢 PingCAP Education 的老师们,是 PE 带我们了解 TiDB、熟悉 TiDB、玩转 TiDB。
一并感谢 TiDB 社区,让 TiDBer 可以在云上、线下有一个良好的沟通交流平台。
相信 TiDB 社区可以变成、保持“别人家的”理想开源社区,互助、有爱、有追求。
感谢 @表妹和她的TiDBer们
标签:架构,演进,PingCAP,TiUP,TiKV,TiDB,数据库,图带 From: https://blog.51cto.com/tidb/12017924