TIDB初识

前言:又好久没写博客了,估计又要水一篇了,先写写看吧。

介绍:

           数据现阶段大致分为三种,sql数据库,nosql数据库,newsql数据库,sql数据库最具代表就是我们常用的mysql数据库,这种数据库是关系型数据库,表,主外键关联,nosql数据库我们常用的如mongdb数据库,他以文档形式存储,每个类似json字符串的存储方式,发展到最近又出现了newsql数据库,简单的来说newsql数据库既有nosql数据库存储大数据的特性,又有sql数据库关系表,能用sql语句查询,事物等特性,TiDB数据库就是newsql数据库。

特性:

         分布式,支持水平扩展

         高可用,机器挂了部分不影响服务

         ACID ,强一致

         sql特性,关系型数据库

架构:

TIDB初识

三大核心组件

TiDB

         TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展。

PD

           Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。

         PD 通过 Raft 协议保证数据的安全性。Raft 的 leader server 负责处理所有操作,其余的 PD server 仅用于保证高可用。建议部署奇数个 PD 节点。

TiKV

         TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。

Kikv 分四层

1 Transaction 事物支持

2 MVCC分层 并发控制乐观锁

3 Raft  做高可用

4 Local KV Storage本地存储引擎

数据容灾        

             1 多数派写入,比如3个数据库,写入一个数据,写入2个数据库就算成功,3个挂一个也不会有数据丢失

             2 强leader

             3 leader选举

             4 成员变更

分片方式

             1 全局有序Hash

             2 使用Range分片

             3 数据的存储、访问、复制、调度都是以Region为单位

水平扩展

             增加Range 会将之前需要拆分的数据库中Range需要拆分出来的数据复制到新的数据库中,再删除以前数据库中的Range

事物模型

              用PD中的主,单点时间戳分配,用乐观锁,摩恩隔离级别SI

 

 

 

————————————————————————————chenchen————————————————————