(一)分布式数据库tidb-简介

  由于数据磁盘问题,最近进行了更换库,因此决定写关于这方面的专题的博客,博客信息参考的官方文档。html

1、分布式数据库使用背景

  随着互联网的飞速发展,业务量可能在短短的时间内爆发式地增加,对应的数据量可能快速地从几百 GB 涨到几百个 TB,传统的单机数据库提供的服务,在系统的可扩展性、性价比方面已经再也不适用。好比MySQL数据库,缺点是无法作到水平扩展。MySQL 要想能作到水平扩展,惟一的方法就业务层的分库分表或者使用中间件等方案。可是,这些中间层方案也有很大局限性,执行计划不是最优,分布式事务,跨节点 join,扩容复杂等。数据库

2、分布式数据库TiDB简介

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

TiDB 具有以下特性:架构

  • 高度兼容 MySQL

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

  • 水平弹性扩展

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

  • 分布式事务

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

  • 真正金融级高可用

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

  • 一站式 HTAP 解决方案

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

  • 云原生 SQL 数据库

  TiDB 是为云而设计的数据库,支持公有云、私有云和混合云,使部署、配置和维护变得十分简单。工具

  TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,更复杂的 OLAP 分析能够经过 TiSpark 项目来完成。

  TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专一于业务开发,极大的提高研发的生产力。

3、TiDB总体架构

要深刻了解 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 是一个集群,须要部署奇数个节点,通常线上推荐至少部署 3 个节点。

  • TiKV Server

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

4、核心特性

  • 水平扩展

  无限水平扩展是 TiDB 的一大特色,这里说的水平扩展包括两方面:计算能力和存储能力。TiDB Server 负责处理 SQL 请求,随着业务的增加,能够简单的添加 TiDB Server 节点,提升总体的处理能力,提供更高的吞吐。TiKV 负责存储数据,随着数据量的增加,能够部署更多的 TiKV Server 节点解决数据 Scale 的问题。PD 会在 TiKV 节点之间以 Region 为单位作调度,将部分数据迁移到新加的节点上。因此在业务的早期,能够只部署少许的服务实例,随着业务量的增加,按照需求添加 TiKV 或者 TiDB 实例。

  • 高可用

  高可用是 TiDB 的另外一大特色,TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,不影响整个集群的可用性。

5、TiDB原理与实现

  TiDB 架构是 SQL 层和 KV 存储层分离,至关于 InnoDB 插件存储引擎与 MySQL 的关系。从下图能够看出整个系统是高度分层的,最底层选用了当前比较流行的存储引擎 RocksDB,RockDB 性能很好可是是单机的,为了保证高可用因此写多份,上层使用 Raft 协议来保证单机失效后数据不丢失不出错。保证有了比较安全的 KV 存储的基础上再去构建多版本,再去构建分布式事务,这样就构成了存储层 TiKV。有了TiKV,TiDB 层只须要实现 SQL 层,再加上 MySQL 协议的支持,应用程序就能像访问 MySQL 那样去访问 TiDB 了。

分布式数据库TiDB总体概述

 

原文出处:https://www.cnblogs.com/hang-on/p/11484828.html

相关文章
相关标签/搜索