TiDB集群主要包括三个核心组件:TiDB Server,PD Server 和 TiKV Server。此外,还有用于解决用户复杂 OLAP 需求的 TiSpark 组件和简化云上部署管理的 TiDB Operator 组件。

TiDB核心特性
TiDB具备如下众多特性,其中两大核心特性为:水平扩展与高可用

TiDB架构图解


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

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

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

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

TiSpark
TiSpark 作为 TiDB 中解决用户复杂 OLAP 需求的主要组件,将Spark SQL 直接运行在 TiDB 存储层上,同时融合 TiKV 分布式集群的优势,并融入大数据社区生态。至此,TiDB 可以通过一套系统,同时支持 OLTP 与 OLAP,免除用户数据同步的烦恼。

TiDB Operator
TiDB Operator 提供在主流云基础设施(Kubernetes)上部署管理 TiDB 集群的能力。它结合云原生社区的容器编排最佳实践与 TiDB 的专业运维知识,集成一键部署、多集群混部、自动运维、故障自愈等能力,极大地降低了用户使用和管理 TiDB 的门槛与成本。

TiDB 核心特性
TiDB 具备如下众多特性,其中两大核心特性为:水平扩展与高可用

1、高度兼容 MySQL

大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。

对于用户使用的时候,可以透明地从MySQL切换到TiDB 中,只是“新MySQL”的后端是存储“无限的”,不再受制于Local的磁盘容量。在运维使用时也可以将TiDB当做一个从库挂到MySQL主从架构中。

2、分布式事务

TiDB 100% 支持标准的 ACID 事务。

3、一站式 HTAP 解决方案

HTAP: Hybrid Transactional/Analytical Processing

TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP 解决方案,一份存储同时处理 OLTP & OLAP,无需传统繁琐的 ETL 过程。

4、云原生 SQL 数据库

TiDB 是为云而设计的数据库,支持公有云、私有云和混合云,配合 TiDB Operator 项目 可实现自动化运维,使部署、配置和维护变得十分简单。

5、水平弹性扩展

通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。

6、真正金融级高可用

相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。

TiDB水平扩展
无限水平扩展是 TiDB 的一大特点,这里说的水平扩展包括两方面:计算能力(TiDB)和存储能力(TiKV)。

TiDB Server 负责处理 SQL 请求,随着业务的增长,可以简单的添加 TiDB Server 节点,提高整体的处理能力,提供更高的吞吐。

TiKV 负责存储数据,随着数据量的增长,可以部署更多的 TiKV Server 节点解决数据 Scale 的问题。

PD 会在 TiKV 节点之间以 Region 为单位做调度,将部分数据迁移到新加的节点上。

所以在业务的早期,可以只部署少量的服务实例(推荐至少部署 3 个 TiKV, 3 个 PD,2 个 TiDB),随着业务量的增长,按照需求添加 TiKV 或者 TiDB 实例。

TiDB高可用
高可用是 TiDB 的另一大特点,TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,不影响整个集群的可用性。下面分别说明这三个组件的可用性、单个实例失效后的后果以及如何恢复。

1、TiDB

TiDB 是无状态的,推荐至少部署两个实例,前端通过负载均衡组件对外提供服务。当单个实例失效时,会影响正在这个实例上进行的 Session,从应用的角度看,会出现单次请求失败的情况,重新连接后即可继续获得服务。单个实例失效后,可以重启这个实例或者部署一个新的实例。

2、PD

PD 是一个集群,通过 Raft 协议保持数据的一致性,单个实例失效时,如果这个实例不是 Raft 的 leader,那么服务完全不受影响;如果这个实例是 Raft 的 leader,会重新选出新的 Raft leader,自动恢复服务。PD 在选举的过程中无法对外提供服务,这个时间大约是3秒钟。推荐至少部署三个 PD 实例,单个实例失效后,重启这个实例或者添加新的实例。

3、TiKV

TiKV 是一个集群,通过 Raft 协议保持数据的一致性(副本数量可配置,默认保存三副本),并通过 PD 做负载均衡调度。单个节点失效时,会影响这个节点上存储的所有 Region。对于 Region 中的 Leader 节点,会中断服务,等待重新选举;对于 Region 中的 Follower 节点,不会影响服务。当某个 TiKV 节点失效,并且在一段时间内(默认 30 分钟)无法恢复,PD 会将其上的数据迁移到其他的 TiKV 节点上。

TiDB遵循Mysql的协议,则项目可以无缝的将Mysql数据库切换到TiDB,正常情况下我们执行Sql语句,都是通过tidb sever进行解析优化,生成TiKV可以执行的语句,TIDB server 相当于sql层面的转换工具,本身不存储数据。而pd cluster则相当于TiDB的大脑,存放一些系统相关的信息,当进行数据存储的时候,tidb server 会向pd申请data location确定数据存放在具体的哪一个TI KV上,而data localtion就是这条数据的基本信息,而tso是保证数据强一致性(时间快照),每次进行操作的时候,pd cluster会维护一个一直在更新的时间戳,不管事务如何的并发,pd cluster都会对事务进行一个先后的的排序,并且开启一次事务就会去pd cluster申请一个tso,数据存放在tikv的region(tikv的一个内存分区)里面,,region是TiKV map中一个小单元,默认为96M,为什么会存在region这个内存分区呢,如果事务的更新的粒度为 一条的数据时候,数据从leader到follwer的更新,这样会造成大量的网络IO次数,所以TiDB的最小更新单元就是region,减少网络IO的次数,这里有必要提到raft一致性协议,TiDB里面的server cluster、pd cluster 以及storage cluster(数据分区regino都是采用 raft协议保证数据一致性)

TiDB整体架构详解TiDB核心特性相关推荐

  1. 支付系统整体架构详解

    2019独角兽企业重金招聘Python工程师标准>>> 支付系统整体架构详解 http://www.dataguru.cn/article-11263-1.html http://w ...

  2. 架构设计-支付宝、京东、美团、去哪儿的支付系统架构整体设计详解!!!

    架构设计-支付宝.京东.美团.去哪儿的支付系统架构整体设计详解!!! 支付产品模块是按照支付场景来为业务方提供支付服务.这个模块一般位于支付网关之后,支付渠道之前. 它根据支付能力将不同的支付渠道封装 ...

  3. java调用webservice_笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解...

    原标题:笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解 Java开发网站架构演变过程,到目前为止,大致分为5个阶段,分别为单体架构.集群架构.分布式架构.SOA架构和微服务架构.下 ...

  4. 高并发高流量网站架构详解

    (推荐)高并发高流量网站架构详解 Web2.0的兴起,掀起了互联网新一轮的网络创业大潮.以用户为导 向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人 ...

  5. SOA(Service-Oriented Architecture)面向服务的分布式架构详解

    导语:SOA作为一种面向服务的架构,是一种软件架构设计的模型和方法论.从业务角度来看,一切以最大化"服务"的价值为出发点,SOA利用企业现有的各种软件体系,重新整合并构建起一套新的 ...

  6. SOA面向服务的分布式架构详解

    导语: SOA作为一种面向服务的架构,是一种软件架构设计的模型和方法论.从业务角度来看,一切以最大化"服务"的价值为 出发点,SOA利用企业现有的各种软件体系,重新整合并构建起一套 ...

  7. DL之FCN:FCN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之FCN:FCN算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 FCN算法的简介(论文介绍) 0.FCN性能-实验结果 1.全卷积神经网络的特点.局限性.缺点 FCN算法的架 ...

  8. Nginx 架构详解

    Nginx 架构详解 nginx的下篇将会更加深入的介绍nginx的实现原理.上一章,我们了解到了如何设计一个高性能服务器,那这一章将会开始讲解,nginx是如何一步一步实现高性能服务器的. Ngin ...

  9. DL之DSSD:DSSD算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之DSSD:DSSD算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 相关文章 DL之DSSD:DSSD算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 DL之DSSD ...

最新文章

  1. 剑指Offer(书):链表的倒数第K个节点
  2. Django 部署基础【使用 Nginx + uWSGI 的方式来部署来 Django】
  3. $.ajax data怎么处理_AJAX
  4. Java:Swing篇,实现JList、JTextArea的自动滚动,实时刷新功能
  5. 【转】如何打包发布基于Qt4 Windows的软件
  6. 35岁以后,被社会无情抛弃,放下面子赚钱
  7. ViewHolder模式超简洁写法
  8. angularjs绑定属性_AngularJS隔离范围绑定表达式教程
  9. BERT 的演进和应用
  10. 多商户商城小程序源码有何优势?
  11. 微信小程序搜索关键字高亮和ctrl+f搜索定位实现
  12. Excel高手都会的Shift快捷键7个用法,让工作效率翻倍
  13. go语言打印日期_专访Go语言布道师Dave Cheney:Go语言这十年,只能用“成功”一词总结...
  14. 深入理解GO语言:GC原理及源码分析
  15. 超人:钢铁之躯 Man of Steel (2013)
  16. 【Selenium】控制当前已经打开的 chrome浏览器窗口
  17. 九龙证券|重大利好,这板块全线大涨!
  18. 错误代码: SEC_ERROR_REUSED_ISSUER_AND_SERIAL(解决办法)
  19. Linux tar命令详解
  20. 零基础数据挖掘入门系列(三) - 数据清洗和转换技巧

热门文章

  1. 那些测试员面试中的“潜规则”,千万不要踩坑
  2. Android简单、高性能的高斯模糊(毛玻璃)效果(附源码)
  3. Transformer五部曲
  4. 【拾】理·财不被割韭菜
  5. 学习篇 | 浮点数的表示规则
  6. 运营商大数据的作用有哪些
  7. 命令计算机组装机器人,一种计算机组装机器人的制作方法
  8. 哔哩哔哩视频合并 B站缓存视频合并 安卓版 音视频合并 基于ffmpeg
  9. 【每日一题】字符串解码
  10. 计算机实验报告心得体会100字左右,[物理实验心得体会] 物理实验心得100字