TiDB特点

  • 高可用
  • 水平拓展
  • 事务
  • SQL支持

TiDB架构

​ 和MySql不同,TiDB是一个分布式的数据库而不是单个进程,所以整个TiDB是由以下角色组成: TiKV, PD, TiDB, TiSpark。每个角色都是部署在多台机器上的进程组成的集群。

TiKV PD TiDB功能

TiKV

​ TiKV负责数据的存储,对外而言,它就是一个提供key-value存储的引擎。但它存储的并不是离散的Key,而在一个范围内的Key,这个范围内的key-value是存储的基本单元,称为Region。

​ 对不同的数据类型,存储的数据格式如下:

数据类型 key value
行记录 表ID+行ID 行数据
非唯一索引 表ID+索引ID+索引值 行ID
唯一索引 表ID+索引ID+索引值+行ID

​ 而TiKV集群上的单节点上真正负责存储的是FaceBook开源的RocksDB引擎。但RocksDB自身并没有解决单点失效的问题,TiKV采用多副本的方式来解决,而实现则是在RocksDB之上封装一层支持Raft协议,以在多节点之间同步数据。仅对于同一个Region, 只有一个leader节点接收外部对其的读写,其他节点只是用来做备份(即不同机器上的同一个Region 组成一个 Raft group)。

​ 所以对外部而言,TiKV可以认为是一个可以提供无限大容量的K-V存储服务(当磁盘空间不足时,可以比较方便地通过增加机器来拓容)。

PD

​ PD全称是Placement Driver,是对整个TiDB集群管理进行管理的角色。它最重要的功能是存储数据的元数据,即Key和TiKV中节点的对应关系。此外,负责对集群进行调度和负载均衡Region迁移, Region Raft Leader迁移),以及提供全局唯一递增的事务ID。PD集群也是通过Raft协议保证数据安全,但只有一台机器(Leader)负责处理所有的操作。

TiDB

​ TiDB角色负责对外交互(mysql协议),优化sql之后,向PD获取要读取的Key对应的TiKV节点信息,之后再向TiKV上的Region Raft Leader所在节点发起请求获取数据,再返回客户端。即TiDB是无状态的,不存储任何数据。

TiDB基本架构简单总结的更多相关文章

  1. ASP.NET MVC 4 插件化架构简单实现-思路篇

    用过和做过插件的都会了解插件的好处,园子里也有很多和讨论,但大都只些简单的加载程序集什么的,这里主要讨论的就是使用 ASP.NET MVC 4 来实现每个插件都可以完全从主站点剥离出来,即使只是一个插 ...

  2. ASP.NET MVC 4 插件化架构简单实现-实例篇

    先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集. 4.定义模板引擎的搜索路径. 5.在模板引擎的查找页面方 ...

  3. 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简单介绍

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版).今天是第四篇.我尽量每周四篇 1.4 MIPS32指令集架构简单介绍 本书设计的处理器遵循MIPS32 Release 1架构,所以 ...

  4. MVC 4 插件化架构简单实现实例篇

    ASP.NET MVC 4 插件化架构简单实现-实例篇   先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集 ...

  5. MVC 4 插件化架构简单实现

    转ASP.NET MVC 4 插件化架构简单实现-思路篇   用过和做过插件的都会了解插件的好处,园子里也有很多和讨论,但大都只些简单的加载程序集什么的,这里主要讨论的就是使用 ASP.NET MVC ...

  6. delphi 三层架构简单例子(经测试成功)

    delphi 三层架构简单例子(经测试成功) 转载 2013年12月19日 09:48:57 1100 所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库 在数据访问时,使得客户端必须通过服 ...

  7. B/S和C/S架构简单理解

    B/S和C/S架构简单理解 B/S结构.C/S结构 B(browser浏览器)-S(server服务器),说简单点就是通过浏览器来请求服务器,实现数据交互.那自然了,C(client客户端软件)-S( ...

  8. openstack架构简单介绍J版(更新中)

    title : OPENSTACK架构简单介绍 openstack的发展及历史 openstack是什么? OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算‎软件,以A ...

  9. TiDB 整体架构 结合yarn zookeeper分析架构

    TiDB 简介与整体架构| PingCAP https://www.pingcap.com/docs-cn/overview/ 真正金融级高可用 相比于传统主从 (M-S) 复制方案,基于 Raft ...

随机推荐

  1. 2019.12.09 Random 随机数类

    //导包import java.util.Random;class Demo02 { public static void main(String[] args) { //创建Random对象 Ran ...

  2. Xamarin.Forms 开发热加载利器 HotReload 推荐

    https://github.com/AndreiMisiukevich/HotReload

  3. codevs 2780 ZZWYYQWZHZ

    2780 ZZWYYQWZHZ  时间限制: 1 s  空间限制: 32000 KB  题目等级: 青铜 Bronze       题目描述 Description 可爱的小管在玩吹泡泡.忽然,他想到 ...

  4. delphi调用https接口

    delphi调用http接口直接使用idhttp就可以了,但是调用https接口的时候就需要和IdSSLIOHandlerSocket1控件一起使用. 截图中是两个控件的具体配置,需要注意的是IdSS ...

  5. python 玩爬虫安装了一大堆第三方库

    之前就听说过爬虫,感觉很复杂的样子,但是看到python代码很简短.由于本机已经安装了python2.7 所以就拿来py 文件跑一下想看看效果. 结果各种代码错误.然后根据每个错误去下载对应的依赖项. ...

  6. Spark(五十三):Spark RPC初尝试使用

    基本用法主要掌握一点就行: master slave模式运用:driver 就是master,executor就是slave. 如果executor要想和driver交互必须拿到driver的Endp ...

  7. Netty执行流程分析与重要组件介绍

    一.环境搭建 创建工程,引入Netty依赖 二.基于Netty的请求响应Demo 1.TestHttpServerHandle  处理器.读取客户端发送过来的请求,并且向客户端返回hello worl ...

  8. el-cascader遇到一个坑的问题

    经仔细分析,如果二级和三级的value一样,就会出现这个问题.

  9. meta name="location" 标签的使用

    在进行一些操作的时候,我们可能会用到这个标签来什么,地理位置,不错的网站优化标签. <meta name="location" content="province= ...

  10. python笔记之按文件名搜索指定路径下的文件

    1.搜索文件名中以指定的字符串开头(如搜索dll,结果中含有dll a,dll abc等) 我的目录下有dll a.txt和dll.txt文件 其中a文件夹下还有这两个文件 我希望通过python选择 ...