2.11 云原生 TDSQL-C + 云数据库 Redis¶
课程简介¶
本课程将深入讲解腾讯云的两款核心数据库产品:云原生数据库 TDSQL-C 和 云数据库 Redis。 我们将探讨 TDSQL-C 的存算分离架构如何实现百万级 QPS 和 PB 级存储,以及云数据库 Redis 在高并发场景下的缓存应用与读写分离实践。
学习目标¶
通过本课程的学习,您将能够:
- ✓ 掌握 TDSQL-C 架构:理解计算与存储分离(Compute-Storage Separation)、Log is Database 等核心设计理念。
- ✓ 区分产品版本:了解 TDSQL-C MySQL 版与 PostgreSQL 版的特性差异及适用场景。
- ✓ 实施高可用容灾:学会利用 DTS 构建跨地域灾备(Geo-DR)架构。
- ✓ 精通 Redis 实践:掌握云数据库 Redis 的标准版与集群版架构,以及读写分离的实现原理。
- ✓ 场景化应用:在游戏排行、电商秒杀等场景中正确选型和配置 Redis。
第一部分:云原生数据库 TDSQL-C¶
本部分导读
TDSQL-C(原名 CynosDB)是腾讯云自研的新一代云原生关系型数据库,代表了数据库技术“Serverless 化”的未来方向。
一、产品概述¶
1.1 产品定义¶
TDSQL-C 是腾讯云自研的云原生分布式数据库,融合了传统数据库的稳定性与云计算的弹性。 - 核心架构:采用计算与存储分离架构。 - 两大版本: - TDSQL-C MySQL 版:100% 兼容 MySQL 5.7/8.0。 - TDSQL-C PostgreSQL 版:100% 兼容 PostgreSQL。 - 性能指标:单节点百万级 QPS,PB 级海量存储,秒级弹性扩缩容。
1.2 核心优势¶
- 极致弹性:支持 Serverless 模式,自动根据负载扩缩容计算资源,按使用量计费(精确到秒)。
- 海量存储:存储层与计算层解耦,支持 PB 级数据存储,容量自动扩展。
- 超高性能:通过内核优化和全链路 RDMA 网络,实现超低延迟和高吞吐。
- 数据可靠:存储层采用多副本强一致技术,计算节点故障秒级恢复。
- 快照备份:支持秒级快照,备份速度极快,回档无压力。
二、架构原理¶
TDSQL-C 基于 "Log is Database" 的设计理念。
2.1 存算分离架构 (Compute-Storage Separation)¶
graph TD
App[业务应用] --> Proxy[数据库代理 Proxy]
subgraph ComputeLayer[计算层 (无状态)]
RW[主节点 (Read-Write)]
RO1[只读节点 1]
RO2[只读节点 2]
end
subgraph StorageLayer[存储层 (共享存储池)]
Store1[存储节点]
Store2[存储节点]
Store3[存储节点]
end
Proxy --> RW
Proxy --> RO1
Proxy --> RO2
RW -- Redo Log / RDMA --> StorageLayer
RO1 -- 读取页面 --> StorageLayer
RO2 -- 读取页面 --> StorageLayer
- 计算层:
- 包含一个主节点(RW)和最多 15 个只读节点(RO)。
- 无状态:计算节点不存储数据,只缓存元数据。
- 共享数据:所有计算节点共享底层的同一份数据,增加只读节点无需复制数据,秒级完成。
- 存储层:
- 分布式共享存储,数据以 Page 为单位存储。
- 日志即数据库:主节点仅需写入 Redo Log,存储层负责重放日志生成数据页面,极大减少网络 IO。
2.2 实例类型¶
- 通用型:资源(CPU/内存)与其他实例共享,适合测试或非核心业务,性价比高。
- 独享型:独占物理核和内存,性能稳定,适合核心生产业务。
三、高可用与灾备实践¶
3.1 故障恢复¶
- 计算节点故障:由于数据在存储层,计算节点重启或切换无需搬迁数据,通常在秒级完成。
- 存储节点故障:底层多副本机制自动修复,对上层透明。
3.2 跨地域灾备 (Geo-DR)¶
需求:防止单地域(Region)级别的灾难(如地震、光纤挖断)导致业务瘫痪。
方案:DTS (数据传输服务) + 异地灾备实例
- 部署:
- 地域 A:部署 TDSQL-C 主集群(业务中心)。
- 地域 B:部署 TDSQL-C 灾备集群。
- 同步:
- 使用 DTS 配置实时数据同步任务,将地域 A 的增量数据同步到地域 B。
- 切换:
- 当地域 A 发生故障,手动断开 DTS 同步,将业务流量切换到地域 B 的灾备集群。
第二部分:云数据库 Redis (TencentDB for Redis)¶
本部分导读
Redis 是高性能 Key-Value 数据库的代名词。腾讯云 Redis 提供了超越开源版本的稳定性与企业级特性。
一、产品概述¶
TencentDB for Redis 兼容 Redis 4.0/5.0/6.0 协议,提供高性能缓存服务。 - 存储介质:内存存储(极速)、CKV 版本(磁盘存储,大容量)。 - 版本架构: - 标准版:主从架构(1 主 1 从或多从)。 - 集群版:分布式架构(多分片),支持 TB 级容量和千万级 QPS。
二、架构与读写分离¶
2.1 内存版 (Memory Edition)¶
- 架构:主从热备。
- 读写分离原理:
- 通过 Proxy 层 实现。
- Proxy 接收请求后,自动识别命令类型:
- 写请求 -> 转发给 Master 节点。
- 读请求 -> 按照权重负载均衡分发给 Slave 节点。
- 优势:业务代码无需修改,透明读写分离。
2.2 CKV 版 (磁盘版)¶
- 特点:基于 RocksDB 存储引擎,数据存放在磁盘,大幅降低海量数据存储成本。
- 读写分离原理:
- 请求通过 CLB (负载均衡) 分发。
- 基于 Slot (槽位) 路由信息转发到对应节点。
- 权重分配基于 TCP 连接的四元组(源IP、源端口、目的IP、目的端口)。
三、最佳实践场景¶
场景一:游戏排行榜¶
- 需求:实时更新玩家积分,查询 Top 100 排名。
- 方案:使用 Redis 的 Sorted Set (ZSET) 数据结构。
ZADD ranking 1000 playerA(添加积分)ZREVRANGE ranking 0 99(查询前100名)
- 优势:内存计算,毫秒级响应,无需全表扫描数据库。
场景二:电商秒杀¶
- 需求:双 11 大促,瞬间流量巨大,传统数据库无法抗住库存扣减压力。
- 方案:
- 缓存预热:活动开始前将库存加载到 Redis。
- 原子扣减:使用
DECR命令或 Lua 脚本扣减库存,防止超卖。 - 异步写入:秒杀结束后再将订单数据异步写入 MySQL。
场景三:应用加速¶
- 需求:APP 首页包含大量静态配置、Banner 图片地址、用户信息。
- 方案:
- 将热点数据(Hot Data)缓存至 Redis。
- 开启 读写分离,利用从节点分担海量读请求。
- 设置合理的 TTL (过期时间),防止缓存雪崩。
课程总结¶
知识点回顾¶
- TDSQL-C:
- 存算分离:计算节点无状态,存储节点共享数据。
- Log is Database:减少网络 IO,提升写入性能。
- Serverless:按实际负载计费,极致降本。
- Redis:
- 标准版 vs 集群版:小规模用标准版,海量数据/高并发用集群版。
- 读写分离:通过 Proxy 透明实现,提升读性能。
- CKV 版:适合海量低频访问数据,成本更低。
架构师实践清单 (Checklist)¶
- [ ] 成本优化:对于波峰波谷明显的业务,是否考虑使用了 TDSQL-C Serverless 版?
- [ ] 高可用:Redis 生产环境是否开启了自动备份和多可用区部署?
- [ ] 性能:高并发读场景下,Redis 是否开启了读写分离?
- [ ] 容灾:核心 TDSQL-C 实例是否配置了 DTS 异地灾备?
本章课程到此结束。下一章,我们将讲解 2.12 云 Redis 最佳实践 + 其他 NoSQL。