50W+ 小程序开发者背后的数据库降本增效实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 50W+小程序开发者背后的数据库降 本增效实践 TDSQL-C Serverless 研发负责人 杨珏吉
2. 大纲 腾讯自研上云使用 Serverless 数据库的实 践 • 计算存储分离对 Serverless 的影响 • TDSQL-C Serverless 数据库特点 • 总结和展望 •
3. 腾讯自研上云使用 Serverless 数据库的实践
4. 微信小程序 简化客户端发布流程
5. 微信小程序开发者面临问题 云服务成本高 • • 个人、小团队开发者 按时付费不划算、包年包月不灵活 资源利用率低 • • • 开发测试环境 活动结束后,申请的资源浪费 用户规模小 后端配置复杂 • • 云产品太多,如何选择,学习成本大 多种产品配置,运维成本大
6. 微信云托管-简化小程序开发运维流程
7. 微信云托管-架构简介
8. 微信云托管-数据库选择 A 云托管后端自行管理分库 • • • 管理复杂度高 不同业务间相互影响 资源成本高 B 使用 TDSQL-C Serverless • • • 无需管理数据库分库 业务间隔离性好 Serverless 计费模式对用户友好 小程序 A 小程序 B 小程序 C 小程序 A 小程序 B 小程序 C Docker Docker Docker Docker Docker Docker TDSQL-C Serverless TDSQL-C Serverless TDSQL-C Serverless MySQL DB DB DB
9. 腾讯乐享
10. 腾讯乐享-架构简介 客户 B 客户 A 客户 C 接入层 逻辑层 数据层 乐享 H5 乐享权限服务 乐享API服务 乐享直播服务
11. 腾讯乐享-SaaS 服务痛点 通过 MySQL 实例按公司分库 • 大部分公司社区使用度比较低 • 公司活动可能带来资源相互影响 公司A 公司B 公司C 乐享后台 固定规格 16 核 32G MySQL DB DB DB
12. 腾讯乐享-SaaS 解决方案 出于管理便利性依然分库 • 得益于 TDSQL-C Serverless 的按量计费 特点,帮助降低乐享 80% 的成本 公司A 公司B 公司C 乐享后台 TDSQL-C Serverless DB 计费贴近实际使用 DB DB
13. 计算存储分离对 Serverless 的影响
14. Serverless = FaaS + BaaS 函数即服务 FaaS (函数计算) • • • • • • 无需运维 以 API 形式提供服务 实时弹性伸缩 按调用次数计费 无使用无费用 高可用 后端即服务 BaaS • • • • • 无需运维 以 API 形式提供服务 按实际使用计费(访问次数) 无使用无费用 高可用 用户浏览器 CDN 静态内容 动态内容 函数计算 云数据库 对象存储
15. 传统数据库实现 Serverless 难点 目前常用业界云数据库 ✓ × × × 帮助开发者实现高可用、自动备份 自动扩缩容 按使用量计费 无使用无费用 传统云数据库 传统云数据库 计算资源10% 计算资源90% 云原生数据库 TDSQL-C - 计算存储分离 90% 10% 60% 计算层 TXSQL VS 存储资源90% 存储资源10% 同机部署计算和存储,剩余资源难以利用 存储池 50% 解耦计算与存储,资源利用率高,跨机扩容快 存储层 TXSTORE
16. 打个比方-租房-解耦需求 两个朋友一起租房,周末一起打主机游戏 或 两房 两房一厅 两房 门口传送到按 次付费的游戏 室 两房 隔壁有按次付 费的游戏室
17. Serverless = FaaS + BaaS 用户浏览器 CDN 只有计算 函数计算 云数据库 对象存储 只有存储
18. TDSQL-C 架构图 设计原则 - 复用云上已有的成熟组件 TXSQL RW 计算层 同步 Redo 计算层 DBClient - 基于 TXSQL 内核,复用bugfix和新特性 TXSQL RO DBClient - 物理复制:准实时同步redo到备机(<1ms) - 日志下沉:通过 DBClient 组件,实现日志分发 读 Page 写 Redo 存储层 - 统一存储平台:基于 CBS 打造 HiSTOR 存储平台 数据安全:复用副本同步,故障自动迁移,数据校验 DBStore DBStore 存储层 备份/回档:快照以MB粒度并发(速度达GB/s) 成本:提供SSD、混存、EC版本,满足多种场景 - 可计算存储:增加 DBStore 插件 数据多版本:通过日志回放,返回指定版本数据 算子下推:加速条件查询 COS 备份
19. TDSQL-C Serverless 数据库特点
20. Serverless 数据库三个目标-像自来水一样 自动扩缩容 按使用量计费 无使用无费用 根据业务负载扩缩容实例,开发 以实际使用的负载进行计费,开 无数据请求时,不对计算资源计 者无需预测负载并提前扩容资源 发者无需为自己没有使用到的资 费 源付费
21. 场景-慢查询 大固定规格将承担更 多成本 业务偶发慢查询 - 通常消耗较多 CPU 资源 小固定规格将无法满 足慢查询性能,甚至 影响在线业务
22. 场景-活动 大固定规格将承担更 多成本 活动期间高负载 小固定规格将无法满 足活动需求,甚至影 响在线业务
23. 场景-定时任务 大固定规格将承担 更多成本 每天夜间清理过期数据、生 成报表等 每个月初计算上月的账单 小固定规格将无法满 足全表扫描性能,甚 至影响在线业务
24. TDSQL-C Serverless 自动扩缩容 ✓ 购买时指定最小-最大规格 比如: [1核 2G, 2 核 4G] 能满足用户需求吗? CPU Mem 自动扩缩容 根据业务负载扩缩容实例,开发 ① 低负载 CPU 使用 0.1 核 Buffer pool 使用 1G 其他内存 使用 100MB ② 高负载-触发扩容前 CPU 使用 1 核 Buffer pool 使用 1G 其他内存 使用 500MB ③ 高负载-触发扩容后 CPU 使用 1.8 核 Buffer pool 使用 2G 其他内存 使用 500MB 者无需预测负载并提前扩容资源 资源限制为 1核 2G 资源限制为 2核 4G
25. TDSQL-C Serverless 自动扩缩容 ✓ 购买时指定最小-最大规格 ✓ CPU、内存资源限制到最大规格 比如: [1核 2G, 2 核 4G] ✓ CPU、内存不存在扩容时间 ✓ Buffer pool 根据监控分钟级调整 CPU 自动扩缩容 根据业务负载扩缩容实例,开发 者无需预测负载并提前扩容资源 Mem ① 低负载 CPU 使用 0.1 核 Buffer pool 使用 1G 其他内存 使用 100MB ② 高负载-触发扩容前 CPU 使用 1.8 核 Buffer pool 使用 1G 其他内存 使用 500MB 资源限制为 2核 4G ③ 高负载-触发扩容后 CPU 使用 1.8 核 Buffer pool 使用 2G 其他内存 使用 500MB
26. 问题-计费近似 1.1 核按 2 核计费? 0.6 核按 1 核计费?
27. 场景-小规格实例 小于 1 核的负载、微服 务
28. TDSQL-C Serverless 按使用量收费 ✓ 每 5 秒进行一次资源使用采样 ✓ CCU(TDSQL-C Compute Unit)= max(CPU, MEM/2, 最小规格) ✓ 按实时的 CCU 进行计费 按使用量计费 以实际使用的负载进行计费,开 发者无需为自己没有使用到的资 源付费 时刻点 CPU(核) MEM(GB) 最小规格(核) CCU 10:12 0 0.1 0.25(0.25核 0.5G 内存) 0.25 10:13 3 1.0 0.25 3 … … … 10:18 0 1.6 … … 0.25 0.8
29. 场景-归档数据库 业务数据长期不访问 - 不对 CPU 和内存进行计费 相比与直接存对象存储,当用 户想使用时可以立刻提供更强 的分析能力
30. 场景-低频访问的业务 - 个人博客 - 垂直社区论坛 - 微信小程序 每天请求量少,请求结 束后无计算资源收费
31. 场景-开发测试环境 工作时间:周一至 周五的工作时间使 用时则收费 下班时间:夜 间以及周末不 使用不收费
32. TDSQL-C Serverless 无使用无费用 ✓ 10 分钟内没有用户连接,回收计算资源,无计算资源扣费 ✓ 收到用户请求时,自动唤醒计算资源,继续提供数据库服务 用户访问 接入层 无使用无费用 计算层 TXSQL 无数据请求时,不对计算资源计 费 存储层 DBSTORE 管控平台 监控与计费
33. TDSQL-C Serverless 无使用无费用 ✓ 10 分钟内没有用户连接,回收计算资源,无计算资源扣费 ✓ 收到用户请求时,自动唤醒计算资源,继续提供数据库服务 用户访问 接入层 监控与计费 无使用无费用 无数据请求时,不对计算资源计 费 管控平台 存储层 DBSTORE
34. TDSQL-C Serverless 无使用无费用 ✓ 快速恢复:广播小表获取 VDL(最后连续一致性日志点) ✓ BP并行初始化: 多线程初始化 BP chunk + lazy 初始化 block mutex ✓ 事务系统并行化:多线程加载 undo page last-vdl vdl • Running阶段:vdl推进后,将该vdl值异步持久化到后端(last-vdl) • Recovery阶段: ① 从后端获取last-vdl(checkpoint) 无使用无费用 无数据请求时,不对计算资源计 费 ② 广播所有相关小表获取>=last-vdl的lsn序列(lsn1,len1)(lsn2,len2)… ③ 使用败者树获取最后连续点(vdl) ④ 给有大于vdl日志的小表发送truncate命令进行日志截断 日志下沉 写日志
35. 总结和展望
36. 满足初创企业述求 - 低成本:按 CPU 使用量收费,无使用 无费用 - 减少运维人力:单主节点高可用,智能 管家诊断 SQL - 迭代试错快:发货速度快,回档 GB 每 秒,搁置项目暂停实例 - 用户数激增:自动扩缩容 - 小微项目:小规格实例 如果说中小企业是一片片沿溪而耕的农田……
37. 满足初创企业述求 那么我们的愿景就是建一座大坝来管理好上游的水资 源,用来灌溉下游企业 TDSQL-C Serverless: - 自动扩缩容:瞬间能达到最大规格负载 - 按使用量计费:按 CPU 使用量,单位秒粒度 - 无使用无费用:冷启动 2 秒
38. Take away 降本增效实践: - 解耦资源的相互依赖关系 - 尝试使用 Serverless 化的云组件 云计算的发展: - 从面向硬件资源到面向用户服务
39.

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-16 02:15
浙ICP备14020137号-1 $Carte des visiteurs$