骏彩竞猜分布式解决方案之路

业务挑战:

彩票业务中,售彩及算奖等核心业务由于其复杂且高并发等特点,极具挑战。中体骏彩在积极探索微服务+分布式数据库架构组合模式来满足业务需求。在数据库层面的几个痛点是:

一、高性能,高并发:高并发以及快速计算的要求

二、高可用:在主机乃至机房出现故障,故障恢复的时间比较长;

三、扩展性:业务高速发展之后,目前架构的性能扩展性非常困难;

四、维护性:虽然一些单机开源数据库可以通过分库分表来实现容量和性能的扩展,但是研发和维护的代价较大;

分布式HTAP数据库解决方案:

TiDB 是一款易于维护、易于开发、高性能、高扩展性的数据库,满足此客户在业务上低延迟,弹性伸缩,高可用,日益增长的业务需求。

系统上线后,让客户有更多的精力专注于业务的开发。上线之后发生的几次故障也印证了TiDB高可用的能力。架构如下:

分布式可扩展:TiDB原生分布式数据库,计算节点和存储分离,可以在线弹性扩缩容。

HTAP: 支持混合负载

支持高并发实时交易业务和复杂分析查询

高性能:毫秒级TP、秒级AP查询

隔离性:TP/AP业务物理隔离

实时一致性:数据强一致性实时分析

高可用:跨机房高可用能力,RPO=0,RTO<30,

在线水平扩展

TiDB分布式数据库的所有节点均可以在线水平扩展,可动态扩容和水平在线扩展,仅需增加相应的节点和服务器资源即可,无业务停机时间。

新增计算节点:由于计算节点无状态,需要增加节点是,仅需启动一个新的计算进程即可,新的节点会自动全局识别集群内各模块的metedata信息和路由请求状态信息,对在线持续进行的业务请求没有任何影响。

新增存储节点: 自动通过数据的迁移和扩展完成数据的分布和扩容 ,整个过程不影响在线业务对数据库的处理,业务可以无感知的进行增删查改的在线业务处理TiDB 支持集群可以在不中断线上服务的情况下进行扩容和缩容。TiDB的扩容、缩容均支持在线完成,支持业务7*24持续允许能力。

高可用架构

TiDB保证数据库集群7*24小时不间断对外提供服务,数据库集群中任意节点失效不会影响集群提供服务,系统保障同组的raft副本之间数据强一致,数据正确、零丢失,RPO=0。应用层对底层数据库集群高可用架构透明无感知,一般数据量情况下,同机房副本延迟不超过5毫秒,同城机房副本延迟不超过50毫秒,保证整个业务高可用架构无单点故障。

两地三中心灾备方案

TiDB两地三中心的灾备架构,提供以下灾备能力:

一套集群跨同城和异地站点部署,每个站点都有 TiDB分布式 SQL 引擎节点,TiKV 分布式存储引擎节点以及 PD 集群调度器节点组成。

主站点和同城的灾备站点提供业务的读写访问,异地站点提供业务读访问。

任何一个站点完全不可用,都不会影响业务连续性和数据的安全性,所有数据的底层分片 (TiDBRegion) 默认都会以5副本高可用方式存在。PD 集群调度器可以按照指定的关键库表,设定不同的副本数策略,站点间可以容忍小于100 ms 的网络延迟,物理网络延迟的增加,会影响集群的读写性能(TiDB的数据副本之间都是强一致性同步)。

任何站点的节点损坏后,替换节点加入集群即可自动完成数据的重新平衡,可以灵活对主站点和灾备站点进行弹性扩容。

HTAP能力

TiDB 数据库提供的 HTAP 能力。同时支持 OLTP 和 OLAP 场景。

行列混合,TiKV 和 TiFlash 分别完成了行存和列存。列存(TiFlash)支持基于主键的实时更新。TiFlash 作为列存副本。OLTP 与 OLAP 业务隔离。

智能选择(CBO 自动或者人工选择),在点查和范围扫复杂的环境下,CBO 实现了将数据自动路由到 TiKV 或者 TiFlash 的功能,对于 OLTP 和 OLAP 业务清晰的场景,我们也可以支持人工指定。

MPP 架构,实现了在 TiFlash 上(注意:只能在 TiFlash 上完成)对于聚合和连接操作的加速。

易于维护

TiDB分布式数据库系统为提高安装、迁移、适配及运维、使用的便捷性,提供了安装部署及操控TiUP,导入导出及迁移工具TiCDC、Dumpling和lightning,备份恢复工具BR,集群诊断监控工具Dashboard,运维监控Grafana+Prometheus组件。同时支持 Sqlyog、Navicat、Workbench 等第三方兼容 MySQL数据库协议和生态,和 MySQL图形化管理工具。

TiUP 作为TiDB的运维管理工具,承担着包管理器的角色,管理着 TiDB生态下众多的组件,如 TiDB、PD、TiKV 等。用户想要运行 TiDB生态中任何组件时,只需要执行 TiUP 一行命令即可,相比以前,极大地降低了管理难度。

TiDBDashboard 是 TiDB自 4.0 版本起提供的图形化界面,可用于监控及诊断 TiDB集群。TiDBDashboard 内置于 TiDB的 PD 组件中,无需独立部署。

TiDB使用开源时序数据库 Prometheus 作为监控和性能指标信息存储方案,使用 Grafana 作为可视化组件进行展示,并使用集成的告警模块进行告警展示和通知。目前,我们使用 Prometheus Server,来收集和存储时间序列数据。Client 代码库,在程序中定制需要的 Metric 。Push GateWay 来接收 Client Push 上来的数据,统一供 Prometheus 主服务器抓取。以及 AlertManager 来实现报警机制。其结构如下图:

我们使用 Grafana 来展示 TiDB的各项性能指标 。如下图所示:

完善的数据库人才

平凯星辰的领先技术架构和创新发展模式从TiDB项目开始的第一天,就受到开发者的高度关注,目前TiDB在全球活跃贡献者1500多人,为国产数据库之最,并持续20个月稳居国内知名数据库流行度排行榜第一名。同时,平凯星辰自主运营的培训中心已为社区培养了超过4000名数据库人才。开放的在线学习平台为200多所高校的分布式数据库爱好者提供了内核技术学习渠道。

为什么选择 TiDB:

此次 TiDB 分布式数据库承接了某彩票的主要业务,在提升持续高可用、为客户提供极致服务体验方面具有深远影响,主要价值体现在以下三个方面:

弹性架构显著提升效率

TiDB 支持分布式事务和强一致性的水平弹性扩展,无论多大的数据量,只需轻松增加节点即可解决。

便捷化应用适配和业务升级

应用如同使用单体数据库一样使用 TiDB,无需考虑底层数据管理细节。IT 人员可以将更多的精力回归到业务功能的迭代,以提供更加敏捷、创新、扩展的服务。

简化数据管理复杂度

应用无需再引入分库分表、应用级分布式事务等复杂技术栈,无需再引入额外的汇聚库处理汇总查询、多维查询等场景。

金融高可用能力

TiDB分布式数据库软件保障数据库集群7*24小时不间断对外提供服务,数据库集群中任意节点失效不会影响集群提供服务,系统保障同分片主备数据强一致,数据正确、零丢失,RPO=0,所有组件无单点故障,具备跨数据中心级的金融高可用能力。

开源开放

产品高度自研,拥有成熟、规模化、分工精密、高度专业的工程师和技术团队; 采用最宽松、商业友好的开源协议 Apache License 2 作为基础传播路径; 拥有多项专利技术,并且拥有持续创新迭代能力; 经历国内外多种复杂商业场景考验,拥有品牌优势、产品竞争力、成熟的数据合规能力、稳健的法律风控体系(包括但不限于:反垄断合规治理、反不正当竞争合规规制等)。

3赞