最近某云服务器厂商发生P0级的事故,想必大家都知道了,搞得我们领导层也忧心忡忡的。
我们是一家给客户提供数据服务的小公司,所有数据基本都跑在云上,服务一旦中断,那客户肯定会找我们赔偿损失。
恰好我是负责数据部门的,领导让我看看有没有更加稳定可靠的云产品。还别说真有,最近刚看到过一份IDC MarketScape的报告,比较权威,主要提到了鹅厂的腾讯云数据库。
IDC MarketScape:IDC MarketScape厂商评估模型旨在为特定市场中信息和通信技术(ICT)厂商的竞争力提供一个概述。 研究方法采用严格的定性和定量的标准的评分方法,以单一的图形说明每个厂商在特定市场中的位置。IDC MarketScape提供了一个清晰的框架,在其中可以对IT和信息通信技术厂商的产品、服务、能力和策略以及当前和未来的市场成功因素进行有意义的比较。该框架还为技术买家提供了针对当前或潜在厂商的360度优劣势评估,为技术买家提供参考。
报告对腾讯云企业级分布式数据库TDSQL给出高度评价,认为TDSQL数据库拥有金融级分布式和云原生多引擎融合的完整数据库产品体系,提供业界领先的金融级高可用、计算存储分离、企业级安全等能力。客户覆盖金融、泛互联网和泛零售等众多行业,其专家服务团队为客户提供成熟完整的解决方案,以及基于标准方法论的体系化服务,保障项目顺利上线和客户成功。
内容很多,通篇看下来就是说鹅厂的腾讯云数据库很给力,从图上也看出来腾讯云数据库就在“领导者(Leaders)”这个类别,而且圈的大小代表市场份额,这妥妥的第一啊。
这话确实不假,我上一家公司的数据库其实就是用的腾讯云数据库,优点主要是有很多自动化的工具方便运维,而且它的稳定性和可靠性相当给力。
我记得有一次出现服务器故障,很快就切换到备用数据库上了,保障了公司业务的持续运行。
于是赶紧给领导推荐了腾讯云数据库,也顺便给大家说下我推荐腾讯云数据库的一些原因。
TDSQL产品优势
超高性能
单分片最大性能可达超24万 QPS,整个实例性能随着分片数量增加线性扩展。
计算/存储资源均可独立对业务全透明地弹性扩缩容,单实例支持 EB 级海量存储。
计算层每个节点均可读写,单实例轻松支撑千万级 QPS 流量。
支持超高压缩比存储,最高可达20倍压缩率,尤其适合大批量写入、写多读少的业务场景。
专业可靠
经过腾讯各类核心业务10余年大规模产品的验证,包括社交、电商、支付、音视频等。
提供完善的数据备份、容灾、一键升级等功能。
完善的监控和报警体系,大部分故障都通过自动化程序处理恢复。
提供数据加密能力,支持 AES 算法和国密 SM4 算法,可满足静态数据加密的合规性要求。
支持分布式数据库领域领先功能,如分布式多表 JOIN、小表广播、分布式事务、SQL 透传等。
数据库实例可用性可达到99.95%;数据的可靠性可达到99.99999%。
简单易用
使用起来如使用单机数据库,分片过程对业务透明且无需干预。
兼容 MySQL 协议(支持 MySQL、MariaDB 等内核)。
支持 Web 控制台,读写分离能力、专有运维管理指令等。
TDSQL基本原理(以Mysql为例)
水平分片
水平拆分方案是 TDSQL 的基础原理,它的每个节点都参与计算和数据存储,且每个节点都仅计算和存储一部分数据。因此,无论业务的规模如何增长,我们仅需要在分布式集群中不断的添加设备,用新设备去应对增长的计算和存储需要即可。
水平切分
水平切分(分片):是按照某种规则,将一个表的数据分散到多个物理独立的数据库服务器中,形成“独立”的数据库“分片”。多个分片共同组成一个逻辑完整的数据库实例。
常规的单机数据库中,一张完整的表仅在一个物理存储设备上读写。
分布式数据库中,根据在建表时设定的分片键,系统将根据不同分片键自动分布数据到不同的物理分片中,但逻辑上仍然是一张完整的表。
在 TDSQL MySQL版 中,数据的切分通常就需要找到一个分片键(shardkey)以确定拆分维度,再采用某个字段求模(HASH)的方案进行分片,而计算 HASH 的某个字段就是 shardkey。HASH 算法能够基本保证数据相对均匀地分散在不同的物理设备中。
写入数据( SQL 语句含有 shardkey )
1.业务写入一行数据。
2.计算引擎(即proxy)对 shardkey 进行 hash,得出 shardkey 的 hash 值。
3. 不同的 hash 值范围对应不同的分片(调度系统预先分片的算法决定)。
4. 数据根据分片算法,将数据存入实际对应的分片中。
数据聚合
数据聚合:如果一个查询 SQL 语句的数据涉及到多个分片,此时 SQL 会被路由到多个分片执行,TDSQL MySQL版 会将各个分片返回的数据按照原始 SQL 语义进行合并,并将最终结果返回给用户。
执行 SELECT 语句时,建议您在 where 条件带上 shardKey 字段,否则会导致数据需要全表扫描然后网关才对执行结果进行聚合。全表扫描响应较慢,对性能影响很大。
读取数据(有明确 shardkey 值)
1. 业务发送 select 请求中含有 shardkey 时,计算引擎通过对 shardkey 进行 hash。
2. 不同的 hash 值范围对应不同的分片。
3. 数据根据分片算法,将数据从对应的分片中取出。
读取数据(无明确 shardkey 值)
1. 业务发送 select 请求没有 shardkey 时,将请求发往所有分片。
2. 各个分片查询自身内容,发回 Proxy 。
3. Proxy 根据 SQL 规则,对数据进行聚合,再答复给业务。
读写分离
当处理大数据量读请求的压力大、要求高时,可以通过读写分离功能将读的压力分布到各个从节点上。TDSQL MySQL版 默认支持读写分离功能,架构中的每个从机都能支持只读能力,如果配置有多个从机,将由计算引擎自动分配到低负载从机上,以支撑大型应用程序的读取流量。
基本原理
读写分离基本的原理是让主节点(Master)处理事务性增、改、删操作(INSERT、UPDATE、DELETE),让从节点(Slave)处理查询操作(SELECT)。
只读账号
只读账号是一类仅有读权限的账号,默认从数据库集群中的从机(或只读实例)中读取数据。通过只读账号,对读请求自动发送到备机,并返回结果。
弹性扩展
TDSQL MySQL版 支持在线实时扩容,扩容方式分为新增分片和现有分片扩容两种方式,整个扩容过程对业务完全透明,无需业务停机。扩容时仅部分分片存在秒级的只读或中断,整个集群不会受影响。
扩容过程
TDSQL MySQL版 主要是采用自研的自动再均衡技术保证自动化的扩容和稳定。
新增分片扩容
1. 在 TDSQL MySQL版控制台 对需要扩容的 A 节点进行扩容操作。
2. 根据新加 G 节点配置,将 A 节点部分数据搬迁(从备机)到 G 节点。
3. 数据完全同步后,A、G 节点校验数据库,存在一至几十秒的只读,但整个服务不会停止。
4. 调度通知 proxy 切换路由。
现有分片扩容
基于现有分片的扩容相当于更换了一块更大容量的物理分片。
1. 按需要升级的配置分配一个新的物理分片(以下简称新分片)。
2. 将需要升级的物理分片(以下简称老分片)的数据、配置等同步数据到新分片中。
3. 同步数据完成后,在计算引擎做路由切换,切换到新分片继续使用。
强同步
传统数据复制方式有如下三种:
异步复制:应用发起更新请求,主节点(Master) 完成相应操作后立即响应应用,Master 向从节点(Slave)异步复制数据。
强同步复制:应用发起更新请求,Master 完成操作后向 Slave 复制数据,Slave 接收到数据后向 Master 返回成功信息,Master 接到 Slave 的反馈后再应答给应用。Master 向 Slave 复制数据是同步进行的。
半同步复制:应用发起更新请求,Master 在执行完更新操作后立即向 Slave 复制数据,Slave 接收到数据并写到 relay log 中(无需执行) 后才向 Master 返回成功信息,Master 必须在接受到 Slave 的成功信息后再向应用程序返回响应。
存在问题
当 Master 或 Slave 不可用时,以上三种传统数据复制方式均有几率引起数据不一致。
数据库作为系统数据存储和服务的核心能力,其可用性要求非常高。在生产系统中,通常都需要用高可用方案来保证系统不间断运行,而数据同步技术是数据库高可用方案的基础。
解决方案
MAR 强同步复制方案是腾讯自主研发的基于 MySQL 协议的并行多线程强同步复制方案,只有当备机数据完全同步(日志)后,才由主机给予应用事务应答,保障数据正确安全。
原理示意图如下:
在应用层发起请求时,只有当从节点(Slave)返回信息成功后,主节点(Master)才向应用层应答请求成功,以确保主从节点数据完全一致。
TDSQL发展阶段
第一阶段:2007-2009腾讯增值业务发展,金融级数据库的基础:强一致性、高可用性
第二阶段:2009年-2012年全民社交:分布式水平扩展、高并发访问、大数据联机分析
第三阶段:2012-2014年云计算兴起:数据库上云、多租户、标准化
第四阶段:2014-2020年数字化升级:公有云专有云结合,从腾讯的分布式数据库能力到行业的分布式数据库能力
据悉,今年3月30日权威机构国际事务处理性能委员会(TPC,Transaction Processing Performance Council)官网披露,腾讯云数据库TDSQL性能成功打破世界纪录,每分钟交易量达到了8.14亿次——这标志着我国国产数据库技术取得新的突破。
国产数据库能有今天,确实离不开这些数据库厂商的贡献,至少不会让我们在这方面受制于人,作为用户希望他们能越来越好。