TiDB整体架构可参考下图

-
TiDB Server 负责处理SQL相关的逻辑,将SQL语句转成key,通过
PD
来查找数据具体在哪个TiKV。TiDB本身是无状态的,不存储数据,只负责计算。TiDB采用go语言编写。 -
PD PD储存了集群的元信息,如key在哪个 TiKV 节点;PD还负责集群的负载均衡以及数据分片等。PD通过内嵌
etcd
来支持数据分布和容错。PD采用go语言编写。 -
TiKV Server TiKV 是一个分布式的提供事务的 Key-Value 存储引擎,基于
Google Spanner
,HBase
设计,但脱离了底层较为复杂的HDFS。通过RocksDB将key-value值存在本地地盘,使用 Raft 协议做复制,保持数据的一致性和容灾。TiKV采用Rust语言编写。
节点内部之间的通信通过gRPC
完成。除了上面提到的几种类型的节点外,TiDB还提供了一些数据同步的工具。
-
syncer syncer通过binlog能方便地将 MySQL 的数据增量导入到 TiDB。
syncer
-
TiDB-Binlog 将数据备份到其他数据库,也可以TiDB 集群故障时恢复。
binlog
更多的细节可以参考官方文档
网友评论