Tidb适合高可用,强一致要求较高,数据规模较大等各种应用场景。
1、对数据一致性及高可靠、高可用、可扩展性、容灾要求较高的金融行业属性的场景;
2、对存储容量、可扩展性、并发要求高的海量数据及高并发的OLTP场景;
3、real-time HTAP场景(实时写入,实时更新,实时分析)
4、数据汇聚,二次加工处理的场景;五大核心特性:
1、一键水平扩缩容
得益于 TiDB 存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者缩容过程中对应用运维人员透明。
2、金融级高可用
数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略,满足不同容灾级别的要求。
3、 实时 HTAP
提供行存储引擎 TiKV、列存储引擎 TiFlash 两款存储引擎,TiFlash 通过 Multi-Raft Learner 协议实时从 TiKV 复制数据,确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。
4、云原生的分布式数据库
专为云而设计的分布式数据库,通过 TiDB Operator 可在公有云、私有云、混合云中实现部署工具化、自动化。
5、兼容 MySQL 协议和 MySQL 生态
兼容 MySQL 协议、MySQL 常用的功能、MySQL 生态,应用无需或者修改少量代码即可从 MySQL 迁移到 TiDB。提供丰富的数据迁移工具帮助应用便捷完成数据迁移。
-
tidb分布式数据库在初期就从内核设计上将整体架构拆分成了多个模块,各模块之间互相通信,然后组成一套完整的Tidb系统。
949cca04358fb9b74497f5c2aef6cdd5.png
TiDB server
1、SQL层,负责接受客户端的连接
2、执行SQL解析和优化,最终生成分布式执行计划
3、对外连接展示的是MySQL协议
4、TiDB层本身是无状态的,实践中可以启动多个TiDB实例,通过负载均衡组件(如LVS、HAProxy、F5)对外提供统一的接入地址,客户端的连接可以均匀地分摊在多个Tidb实例上已达到负载均衡的效果。
5、TiDB server本身并不存储数据,只解析SQL,将实际的数据读取请求转发给底层的存储节点TiKV(或TIFlash).
PD SERVER
1、整个tidb集群的元信息管理模块
2、负载存储每个TIKV节点实时的数据分布情况和集群的整体拓扑结构
3、提供tidb dashboard管控界面
4、为分布式事务分配事务ID
5、根据TIKV节点实时上报的数据分布状态,下发数据调度命令给具体的TIKV节点,可以说是整个集群的大脑。
6、PD本身也就是由至少3个节点构成,拥有高可用的能力(建议部署奇数个PD节点)
TIKV SERVER
1、负载存储数据,从外部看tikv是一个分布式的提供事务的KEY-VALUE存储引擎
2、存储数据的基本单位是region,每个region负载存储一个key range的数据,每个tikv节点会负责多个region
3、tikv的API在KV键值对层面提供对分布式事务的原生支持,默认提供了SI的隔离级别,这也是tidb在sql层面支持分布式事务的核心
4、tidb的sql层做完sql解析后,会将sql的执行计划转换为对tikv api的实际调用,所以,数据都存储在TIKV中
5、tikv中的数据都会自动维护多副本(默认3副本),天然支持高可用和自动故障转移。
TIFLSAH
1、是一类特殊的存储节点,是列式的存储引擎。
2、和普通TIKV节点不一样的是在tiflash内部,数据是以列式的形式进行存储,主要的功能是为OLAP分析型的场景加速。
TICDC
是4.0版本开始支持的TIDB增量数据同步工具,支持多种下游(TIDB/MYSQL/MQ)。相比于tidb binlog,ticdc有延迟更低,天然高可用等优点。
TISPARK
是pingCAP为解决用户复杂OLAP需求而推出的产品,借助spark平台本身的优势,同时融合tikv分布式集群的优势,和TIdb一起为用户一站式解决HTA需求。