初次了解TiDB

    这周末参加了一个 TiDB 技术大会,传说这是 年度最高规格的TiDB技术大会,大会展示了海内外动态及成果的综合呈现

    最新核心技术解读;

    多个成果首次亮相;

    2019 RoadMap 展望;

    14 位海内外基础架构领域技术大咖;

    8 个跨行业多场景的用户实战经验;

    1 小时 Demo Show。

    只为向你描述可以预见的,数据库的未来。

讲师介绍:

初次了解TiDB_第1张图片

会议内容:

    社区实践专场 1    

    - 美团数据库架构演变及展望

      美团点评 - 赵应钢    

      1. 美团数据库现状;

      2. 快速发展的美团需要新一代数据库;

      3. TiDB 在美团的深入实践;

      4. 分布式数据库在美团的未来规划。

    - 智能物联网的高写入场景解决之道

      小米 - 潘友飞

      1. 高写入场景下数据库选型过程;

      2. TiDB 在小米的深度实践过程;

      3.TiDB 在小米的规划。    

    - 新东方新一代报名系统数据库选型

      新东方 - 傅少峰

      1. 新东方基础设施云服务介绍;

      2. 报名系统数据库选型;

      3. TiDB 在新东方的实践和规划。    

    - TiDB 在银行核心金融领域的研究与实践

      北京银行 - 于振华

      1. 金融级、开源 NewSQL 数据库选型思路及评测体系;

      2. 全栈式 Scale-out 的应用系统架构与 TiDB 对接实践;

      3. 总结系统建设经验以及对新兴、开源技术的理解。

The Way to TiDB 3.0

    申砾,PingCAP Engineering VP  

   - 最近一段时间我们对 TiDB 3.0 版本以及明年一年的事项做了规划,这个版本会继续在稳定性、易用性方面做出改进,当然还会有不少激动人心的新功能。

   - 稳定性是数据库核心的需求,我们又增加了 100 多台测试服务器,用于在超大规模数据集上做长时间的稳定性测试,尝试多种负载以及各种环境干扰手段,不断地解决发现的问题。除了数据库内核之外,各种工具也需要提高稳定性,比如如何用 Lightning 稳定迅速地导入上百 TB 的数据,如何提高 Binlog 的同步速度。

   - 易用性的提升可以显著降低用户的使用成本,包括各种兼容性提升、定位问题手段简化、完善的工具链、友好的错误提示,这些需要比较细致的改进,也需要多听取用户的声音。

   - 新功能方面会增加 View、WindowFunction、QueryTracing、QueryPlanManagement 等 SQL 层功能,还有能够显著提升性能的多线程 Raft,全新的存储引擎 Titan。

    社区实践专场 2    

    - TiDB 在微众银行的实践与应用

      微众银行 - 黄巍

      1. WeBank 数据库平台架构现状;

      2. 金融核心应用场景 TiDB 落地实践;

      3. WeBank 与 PingCAP 联合开发。

    - All in!转转 TiDB 大规模实践之旅

      转转 - 孙玄    

      1. 转转业务高速发展下传统数据库架构痛点;

      2. TiDB 在转转公司的大规模使用实践;

      3. ALL in TiDB。

    - TiDB 在哔哩哔哩的实践  

      小红书 - 张俊骏

      1. MySQL 困境;

      2. NewSQL 曙光;

      3. TiDB 在哔哩哔哩的未来展望。     

    - How to Add a New Feature to TiDB - From a Contributor’s “View”

      某金融机构 - 潘迪

      1. How to add a new feature to TiDB;

      2. TiDB View 功能开发进度及 RoadMap;

      3. 社区开发的经验和感想。

 

    会议主要是TiDB产品用户对该产品选型的缘由和使用过程中遇到问题的阐述(也算是PingCAP在宣传、推广该产品的一种不错的方式),目前随着公司的数据量不断增大、业务逻辑不断复杂,大家对数据库的选型也越来越“挑剔”,下面来简单说说TiDB的简介及优势:

一、TiDB简介
     TiDB 是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing:混合事务处理和分析处理) 数据库,结合了传统的 RDBMS(关系型数据库) 和NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 是一个分布式 NewSQL (SQL 、 NoSQL 和 NewSQL 的优缺点比较 )数据库。TiDB 的目标是为 OLTP(Online Transactional Processing:在线事务处理) 和 OLAP (Online Analytical Processing:在线分析处理) 场景提供一站式的解决方案。TiDB 具备如下核心特点:
     1.高度兼容 MySQL
          大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。
     2.水平弹性扩展
          通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。
     3.分布式事务
          TiDB 100% 支持标准的 ACID 事务。
     4.真正金融级高可用
          相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。
     5.一站式 HTAP 解决方案
          TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP解决方案,一份存储同时处理OLTP & OLAP(OLAP、OLTP的介绍和比较 )无需传统繁琐的 ETL 过程。
     6.云原生 SQL 数据库
          TiDB 是为云而设计的数据库,同 Kubernetes (十分钟带你理解Kubernetes核心概念 )深度耦合,支持公有云、私有云和混合云,使部署、配置和维护变得十分简单。
          TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,更复杂的 OLAP 分析可以通过 TiSpark 项目来完成。 TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力。

二、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 为单位进行调度。

三、TiDB核心特性

    1 水平扩展
          无限水平扩展是 TiDB 的一大特点,这里说的水平扩展包括两方面:计算能力和存储能力。TiDB Server 负责处理 SQL 请求,随着业务的增长,可以简单的添加 TiDB Server 节点,提高整体的处理能力,提供更高的吞吐。TiKV 负责存储数据,随着数据量的增长,可以部署更多的 TiKV Server 节点解决数据 Scale 的问题。PD 会在 TiKV 节点之间以 Region 为单位做调度,将部分数据迁移到新加的节点上。所以在业务的早期,可以只部署少量的服务实例(推荐至少部署 3 个 TiKV, 3 个 PD,2 个 TiDB),随着业务量的增长,按照需求添加 TiKV 或者 TiDB 实例。
    2 高可用
          高可用是 TiDB 的另一大特点,TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,不影响整个集群的可用性。下面分别说明这三个组件的可用性、单个实例失效后的后果以及如何恢复。
    TiDB
          TiDB 是无状态的,推荐至少部署两个实例,前端通过负载均衡组件对外提供服务。当单个实例失效时,会影响正在这个实例上进行的 Session,从应用的角度看,会出现单次请求失败的情况,重新连接后即可继续获得服务。单个实例失效后,可以重启这个实例或者部署一个新的实例。
    PD
          PD 是一个集群,通过 Raft 协议保持数据的一致性,单个实例失效时,如果这个实例不是 Raft 的 leader,那么服务完全不受影响;如果这个实例是 Raft 的 leader,会重新选出新的 Raft leader,自动恢复服务。PD 在选举的过程中无法对外提供服务,这个时间大约是3秒钟。推荐至少部署三个 PD 实例,单个实例失效后,重启这个实例或者添加新的实例。
    TiKV
          TiKV 是一个集群,通过 Raft 协议(raft一致性哈算法以及Raft 为什么是更易理解的分布式一致性算法 )保持数据的一致性(副本数量可配置,默认保存三副本),并通过 PD 做负载均衡调度。单个节点失效时,会影响这个节点上存储的所有 Region。对于 Region 中的 Leader 结点,会中断服务,等待重新选举;对于 Region 中的 Follower 节点,不会影响服务。当某个 TiKV 节点失效,并且在一段时间内(默认 30 分钟)无法恢复,PD 会将其上的数据迁移到其他的 TiKV 节点上。

    当然,如果并发不大,完全没必要考虑TiDB,mysql足矣。

 

 

 

 

你可能感兴趣的:(TiDB)