36

最火的HTAP数据库 京东智联云新一代分布式数据库TiDB架构揭秘

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzU1OTgxMTg2Nw%3D%3D&%3Bmid=2247494531&%3Bidx=1&%3Bsn=19f64244db9c26987aa0d2cd455730a7
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

r2yuyuQ.png!mobile

作者丨京东智联云数据库团队

2020年伊始,一场突如其来的新冠疫情, 席卷了华夏大地。为了抵抗疫情,全国人民众志成城,共同抗疫。疫情期间,各行各业受到了巨大影响,多数线下服务和活动基本陷入了停滞状态。而与此同时,人们对线上服务的需求则大大提升。线上业务伴随着大量的数据涌入,首当其冲经受考验的就是承载核心业务的数据库系统。

我们对数百位企业用户进行了在线调研,发现绝大多数用户心目中理想的数据库都具有以下几个特点:

  • 可通过动态增加机器来满足业务增长需求,应用层可以不用关心容量和吞吐量等问题;

  • 具有完整的ACID事务,能提供数据的强一致性,支持SQL并能兼容MySQL;

  • 提供跨数据中心的高可用性,数据中心内的故障可自动快速恢复,无需人工介入;任意一个数据中心故障,不影响数据库服务。

为了满足这些需求,京东智联云联合PingCAP,打造了开箱即用的 新一代分布式数据库—— TiDB服务

TiDB是为 云而设计的数据库, 实现了一键水平伸缩,支持多数据中心部署,具有强一致性的多副本数据,可实现故障的自动恢复。同时,TiDB还具有强大的OLAP性能,可提供一站式的HTAP解决方案。

ZZbEziN.png!mobile

TiDB分布式数据库在内核设计上将整体的架构拆分成多个大的模块,大的模块之间互相通信,组成完整的TiDB系统。

BFB32mn.jpg!mobile

  • TiDB: SQL层,负责接受客户端的连接,执行SQL解析和优化,最终生成分布式执行计划。TiDB 层本身是无状态的,实践中可以启动多个TiDB节点,客户端的连接可以均匀地分摊在多个TiDB节点上以达到负载均衡的效果。TiDB 节点本身并不存储数据,只是解析SQL,将实际的数据读取请求转发给底层的存储层TiKV。

  • TiKV: 分布式KV存储,支持完全弹性的扩容和缩容,数据分布在多个TiKV存储节点中,系统会动态且自动地进行均衡,不需要人工介入。TiKV的API能够在KV键值对层面提供对分布式事务的原生支持,默认提供了SI (Snapshot Isolation)的隔离级别。TiKV中的数据都会自动维护多副本(默认为 3),天然支持高可用和自动故障转移。

  • Placement Driver (简称 PD): 整个TiDB集群的元信息管理模块,负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,并为分布式事务分配事务ID。同时PD会根据TiKV节点实时上报的数据分布状态,下发数据调度命令给具体的TiKV节点,可以说是整个集群的「大脑」。PD本身也是由至少3个对等节点构成,拥有高可用的能力。

ziMBnur.png!mobile

京东智联云上的TiDB基于Kubernetes部署,使得TiDB更加灵活可靠。具体部署架构如下图:

*(为了便于描述,TiDB的数据库实例我们称为TiDB集群,单个TiDB-server我们称之为TiDB节点)

iQFNzeI.png!mobile

用户VPC内的云主机通过 网络负载均衡(NLB) 访问TiDB集群,集群中的多个TiDB节点可以进行负载分担,共同提供服务,实现了 “双活” 乃至 “多活” 的能力。京东智联云TiDB集群支持3可用区的部署架构,默认3数据副本,每个可用区一个数据副本。即使某一可用区失效后,数据库服务仍然可用并且不发生数据丢失。同时通过设置亲和性,可保证每个可用区的TiKV实例数保持大致均衡。

此外,PD节点默认为3个节点,每一个可用区都有PD实例,保证PD的高可用。在这种架构下,集群中的所有节点,包括TiDB、TiKV及PD节点都具有高可用性,整个数据库环节无单点故障,任一节点的故障均不影响TiDB集群的对外提供服务。

同时,TiDB集群还接入了 京东智联云整体的监控告警服务及日志系统, 可全面监控TiDB实例的运行状况,用户通过控制台即可TiDB实例进行创建,扩容、删除等生命周期的管理。

下面再简要介绍一下京东智联云TiDB集群的主要能力及实现:

京东智联云TiDB可 自动进行全量备份,并将备份数据存储在对象存储(OSS)中。 在备份过程中,TiDB不会直接把数据写到本地磁盘上,而是先缓存在内存中,然后再传送到对象存储上,通过这种方式不但提高了备份的效率,也降低了对磁盘的消耗。在进行恢复时,也支持将对象存储上的备份数据恢复到一个新的TiDB集群里面,而不覆盖原TiDB实例,最大程度的保证用户数据的安全,防止误操作。

RJfYfi2.png!mobile

TiDB在京东智联云上的升降配是通过在线动态增加节点(或减少节点),来达到扩容的目的。TiDB可提供近似无限的水平扩展能力,这是 TiDB 的最大特点。这里说的水平扩展包括两方面: 计算能力 存储能力

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

  • TiKV节点负责存储数据,随着数据量的增长,可以部署更多的 TiKV解决数据扩展的问题。TiKV节点之间以Region为单位做调度,将部分数据迁移到新加的节点上。

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

MRRfUjN.png!mobile

京东智联云TiDB通过TiFlash节点可以支持在线分析功能。TiFlash是TiDB HTAP形态的关键组件,它是TiKV的列存扩展,TiFlash实时复制TiKV集群中的数据,并同时提供与TiKV一样的一致性读取,且可以保证读取到最新的数据。TiDB可以自动选择使用TiFlash列存或者TiKV行存,甚至在同一查询内混合使用提供最佳查询速度。

NB3Mvan.png!mobile

TiDB集群支持CSV格式的数据文件高速导入到TiDB集群,导入速度每小时可达 500G ,是传统SQL导入速度的数倍。TiDB使用对象存储(OSS)存储要导入的数据文件,首先会对数据源进行解析,筛选出DDL这些建表的语句,并在目标集群建立库和表;然后对表数据进行解析和编码,转换成与 TiDB相同编码的键值对,并对键值对排序,写入本地临时存储文件中。最后批量将这些键值对写到各个TiKV节点中。导入后,TiDB会对比导入数据源及目标集群的校验和 (checksum),确保导入的数据是正确的。

ayeY3iq.png!mobile

京东智联云TiDB可支持主从集群,可通过binlog进行数据同步,准实时的将主集群的数据同步到从集群(本地或异地)。主集群负责应用接入提供读写服务,从集群负责同步主集群数据以及故障接管。同时从集群还可以承载如数据查询,报表分析等数据查询业务,分担主集群业务压力,提高资源利用率的影响。(该功能即将推出)

Z3YzYrB.png!mobile

TiDB具有完善的监控和告警功能。TiDB的报警分为两类:

  • 一是资源层面的报警, 由Task Monitor组件监控数据库中资源状态和使用情况,例如CPU,存储以及集群中各个节点的运行状态等。如果发现资源状态或使用异常则会产生告警,并通过邮件或短信方式进行通知。

  • 另一类报警是通过日志采集K8S集群中POD和TiDB集群中的节点的日志, 通过配置报警规则过滤对应的关键字触发报警。

此外,TiDB集群自身也提供了极其丰富的监控指标,用户可以直接使用浏览器访问TiDB集群的监控端口,查看TiDB上百个指标的详细信息。

i6vIV3E.png!mobile

IzYFNzV.png!mobile

  • 高并发、海量数据的OLTP系统

由于TiDB可提供无上限的、线性扩展的高并发、高吞吐的集群处理能力,因此可简单地把TiDB 当作一个可无限扩展的MySQL使用, 可极大的简化程序设计,降低运维复杂度,是传统数据库中间件、数据库分库分表等方案优雅而理想的替换产品。

iIZriqQ.png!mobile

  • 海量数据高性能实时分析

TiDB可以提供可扩展的、无上限的实时写入能力,同时,TiDB独有的强大分布式查询引擎可提供比MySQL快1~2个数量级的复杂查询性能,用户可将TiDB用于各种实时分析场景。

UjMzYvj.png!mobile

目前,京东智联云和PingCAP公司深度合作推出的TiDB产品已正式发布,欢迎大家点击 【阅读原文】 来体验云时代的新一代分布式数据库。

RjaQ7v7.png!mobile

uA3Ajmn.png!mobile

7f2uuqI.png!mobile

3YbARbN.png!mobile

JZ7v63Q.gif!mobile

aeiYvuy.gif!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK