TiDB

1.TiDB简介

最近所接触的项目均用到了TiDB,于是乎查阅官方相关文档研究了下,对TiDB重点知识进行了总结。

TiDB是PingCAP公司设计的开源分布式HTAP (Hybrid Transactional and Analytical Processing)数据库,结合了传统的 RDBMS和NoSQL的最佳特性。TiDB兼容MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB的目标 是为OLTP(OnlineTransactionalProcessing)和OLAP(OnlineAnalyticalProcessing)场景提供一站式的解决方案。

TiDB特性:

  • 高度兼容MySql

      在绝大部分情况下,无需修改代码即可从MySql迁移至TiDB。

  • 水平弹性扩展

      通过简单地增加新节点就可以实现TiDB的水平扩展。

  • 分布式事务

      TiDB100%支持标准的ACID事务。

  • 真正金融级高可用

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

  • 一站式HTAP解决方案

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

  • 云原生SQL数据库

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

2.TiDB架构

     要深入了解TiDB的水平扩展和高可用特点,首先需要了解TiDB的整体架构。TiDB集群主要包括三个核心组件: TiDB Server,PD Server和TiKV Server。

TiDB架构图:

               image

2.1TiDB Server

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

2.2PD Server

PlacementDriver(简称PD)是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个Key存储 在哪个TiKV节点);二是对TiKV集群进行调度和负载均衡(如数据的迁移、Raftgroupleader的迁移等);三是分 配全局唯一且递增的事务ID。 PD通过Raft协议保证数据的安全性。Raft的leader server负责处理所有操作,其余的PD server仅用于保证高可 用。建议部署奇数个PD节点。

2.3TiKV Server

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

2.4TiSpark

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

2.5TiDB Operator

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

原文地址:https://www.cnblogs.com/leebaul/p/11288571.html