数据与平台设计
data-management、design-and-implementation。
25 分钟
数据与平台设计
平台不仅是算力与网络:数据层(关系库、缓存、对象存储、备份、迁移)决定可用性上限。本课覆盖 /roadmaps/devops 的 data-management 与 design-and-implementation 节点,帮你在搭建 CodeRoadMap 平台时做出 MySQL 托管 vs 自建、读写分离、缓存、DR 等架构决策,并与 dcp-setup 的方法论、devops-cloud-essentials 的托管数据库产品、kubernetes-essentials 的有状态工作负载知识衔接。
学习目标
- 区分 OLTP、缓存、对象存储、搜索、分析 在平台中的分层职责
- 设计 CodeRoadMap MySQL 高可用 + 备份恢复 + 迁移 方案
- 理解 Connection Pool、读写分离、CQRS -lite 在 Spring Boot 中的落地要点
数据层分层
应用层 (Spring Boot / Next.js)
↓ JDBC / Prisma
连接池 (HikariCP) — 控制并发连接,避免打满 DB
↓
MySQL Primary(写 + 强一致读)
├─ Replica(读扩展、报表)
└─ 定期快照 + binlog PITR 备份
缓存层 Redis — Session、热点课程列表、Rate Limit 计数
对象存储 — 用户头像、课程附件、静态导出
| 组件 | CodeRoadMap 用途 | 托管选项示例 |
|---|---|---|
| MySQL | 用户、课程、进度 | Azure Flexible Server、RDS、Cloud SQL |
| Redis | 缓存、分布式锁 | Azure Cache、ElastiCache、Memorystore |
| Object Storage | 大文件、备份归档 | Blob、S3、GCS |
配置示例
# application-prod.yml — Spring Boot 数据源与池化
spring:
datasource:
url: jdbc:mysql://mysql-primary.internal:3306/coderoadmap?useSSL=true
username: ${DB_USER}
password: ${DB_PASSWORD}
hikari:
maximum-pool-size: 20
minimum-idle: 5
connection-timeout: 30000
idle-timeout: 600000
data:
redis:
host: redis.internal
port: 6379
ssl:
enabled: true
# 读写分离 — 概念:RoutingDataSource 或 @Transactional(readOnly=true) 路由到 Replica
datasource:
primary:
jdbc-url: jdbc:mysql://primary:3306/coderoadmap
replica:
jdbc-url: jdbc:mysql://replica:3306/coderoadmap
# 备份与 PITR — mysqldump + binlog(运维脚本概念)
mysqldump --single-transaction --routines --triggers \
-h mysql-primary -u backup coderoadmap | gzip > /backup/cr-$(date +%F).sql.gz
# 云托管:启用 automated backup retention 7-35 天 + geo-redundant storage