pd 写入数据库_京东智联云联合PingCAP,分布式数据库TiDB架构揭秘

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

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

  • 可通过动态增加机器来满足业务增长需求,应用层可以不用关心容量和吞吐量等问题;
  • 具有完整的ACID事务,能提供数据的强一致性,支持SQL并能兼容MySQL;
  • 提供跨数据中心的高可用性,数据中心内的故障可自动快速恢复,无需人工介入;任意一个数据中心故障,不影响数据库服务。

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

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

TiDB架构解析:

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

adcd6ad62b16fb9c4159553861b7ac66.png
  • 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 个对等节点构成,拥有高可用的能力。

京东智联云 TiDB 集群的主要能力及实现架构:

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

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

3416f22886bb684756fbbbc3da3d6545.png


用户 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 实例,最大程度的保证用户数据的安全,防止误操作。

4cdf34c3a4b89d4b2f1992f3197a932e.png

在线水平扩容

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

  • TiDB 节点负责处理 SQL 请求,随着业务的增长,可以简单的添加 TiDB 节点,提高整体的处理能力,提供更高的吞吐量。
  • TiKV 节点负责存储数据,随着数据量的增长,可以部署更多的 TiKV 解决数据扩展的问题。TiKV 节点之间以 Region 为单位做调度,将部分数据迁移到新加的节点上。

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

2f377bcfc89abaad54cfdd3c071ddb6c.png

在线分析

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

8b787c77e2e30a965acf3d39ea509917.png

数据迁移

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

2a470f09213f79bcf8366c5420d02eb9.png

主从集群

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

e7b6cf878f644335a5b4e4ca8ff65b19.png

监控告警

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

  • 一是资源层面的报警,由 Task Monitor 组件监控数据库中资源状态和使用情况,例如 CPU,存储以及集群中各个节点的运行状态等。如果发现资源状态或使用异常则会产生告警,并通过邮件或短信方式进行通知。
  • 另一类报警是通过日志采集 K8s 集群中 POD 和 TiDB 集群中的节点的日志,通过配置报警规则过滤对应的关键字触发报警。

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

767fb6b8fd0b46fc34f2363ba46bb6f8.png

TiDB 最佳使用场景:

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

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

cf4ac8ea0d7b582ece485eba15a27dc4.png

海量数据高性能实时分析


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

da351a366f17914234a96ff7cac2dd40.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值