跳转至

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 核心优势

  1. 极致弹性:支持 Serverless 模式,自动根据负载扩缩容计算资源,按使用量计费(精确到秒)。
  2. 海量存储:存储层与计算层解耦,支持 PB 级数据存储,容量自动扩展。
  3. 超高性能:通过内核优化和全链路 RDMA 网络,实现超低延迟和高吞吐。
  4. 数据可靠:存储层采用多副本强一致技术,计算节点故障秒级恢复。
  5. 快照备份:支持秒级快照,备份速度极快,回档无压力。

二、架构原理

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 (数据传输服务) + 异地灾备实例

  1. 部署
    • 地域 A:部署 TDSQL-C 主集群(业务中心)。
    • 地域 B:部署 TDSQL-C 灾备集群。
  2. 同步
    • 使用 DTS 配置实时数据同步任务,将地域 A 的增量数据同步到地域 B。
  3. 切换
    • 当地域 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 大促,瞬间流量巨大,传统数据库无法抗住库存扣减压力。
  • 方案
    1. 缓存预热:活动开始前将库存加载到 Redis。
    2. 原子扣减:使用 DECR 命令或 Lua 脚本扣减库存,防止超卖。
    3. 异步写入:秒杀结束后再将订单数据异步写入 MySQL。

场景三:应用加速

  • 需求:APP 首页包含大量静态配置、Banner 图片地址、用户信息。
  • 方案
    • 将热点数据(Hot Data)缓存至 Redis。
    • 开启 读写分离,利用从节点分担海量读请求。
    • 设置合理的 TTL (过期时间),防止缓存雪崩。

课程总结

知识点回顾

  1. TDSQL-C
    • 存算分离:计算节点无状态,存储节点共享数据。
    • Log is Database:减少网络 IO,提升写入性能。
    • Serverless:按实际负载计费,极致降本。
  2. Redis
    • 标准版 vs 集群版:小规模用标准版,海量数据/高并发用集群版。
    • 读写分离:通过 Proxy 透明实现,提升读性能。
    • CKV 版:适合海量低频访问数据,成本更低。

架构师实践清单 (Checklist)

  • [ ] 成本优化:对于波峰波谷明显的业务,是否考虑使用了 TDSQL-C Serverless 版?
  • [ ] 高可用:Redis 生产环境是否开启了自动备份和多可用区部署?
  • [ ] 性能:高并发读场景下,Redis 是否开启了读写分离?
  • [ ] 容灾:核心 TDSQL-C 实例是否配置了 DTS 异地灾备?

本章课程到此结束。下一章,我们将讲解 2.12 云 Redis 最佳实践 + 其他 NoSQL