一、tidb介绍


一、Tidb是什么?

Tidb是一个分布式、强一致、具有水平扩展能力的关系型数据库。

 

关键特性:

  水平扩展

  高可用

  ACID事务

  SQL支持

 

二、Tidb整体架构

 

 

 

 组件作用:

  个人理解:

  Tidb :无状态的计算引擎(通俗的讲就是和外面的应用和客户端做交互,通过MySQL的协议接受外面的请求,对于外面的用户看到的就是一个MySQL,可以通过Navicat直接连接)

  官方描述:

  TiDB Server 负责接收SQL请求,处理SQL相关的逻辑,并通过PD找到存储计算所需数据的TiKV地址,与TiKV交互获取数据,最终返回结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(LVS、HAProxy或F5)对外提供统一的接入地址。

  个人理解:

  TiKV :分布式且支持事务的分布式存储引擎(真正存储数据的地方,接受sql发来的请求)

  官方描述:

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

  个人理解:

  PD :集群的管理节点

  官方描述:

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

PD 是一个集群,需要部署奇数个节点,一般线上推荐至少部署3个节点。PD在选举的过程中无法对外提供服务,这个时间大约是3

存储:

任何持久化的存储引擎,数据终归要保存在磁盘上,TiKV 也不例外。但是 TiKV 没有选择直接向磁盘上写数据,而是把数据保存在 RocksDB 中,具体的数据落地由 RocksDB 负责。这个选择的原因是开发一个单机存储引擎工作量很大,特别是要做一个高性能的单机引擎,需要做各种细致的优化,而 RocksDB 是由 Facebook 开源的一个非常优秀的单机 KV 存储引擎,可以满足 TiKV 对单机引擎的各种要求。这里可以简单的认为 RocksDB 是一个单机的持久化 Key-Value Map

数据容灾:

 RocksDB解决了数据落地问题,但是没有解决高可用的场景,所以tidb使用Raft进行多副本复制

Raft特性:

  多数派写入(假设Raft讲数据复制三份,每一次写入都要保证两个副本写入成功,才对客户端返回成功,这就算有一个副本丢掉,还有一个副本有最新的数据)

  强leader

  多leader

  成员变更

有了Raft之后,就可以在不同的机器、机架、数据中心之间复制


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM