- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板

沈辉-喜马拉雅基于 Apache ShardingSphere 的分库分表实践-ShardingSphere Meetup 上海站
展开查看详情
1 .「Apache ShardingSphere - 喜马拉雅 2023 Meetup」 喜马拉雅基于 Apache ShardingSphere 的分库分表实践 基础架构 沈辉
2 .Catalog • 背景介绍 • 整体架构 • 统一数据源 • 实时变更事件机制 • 可靠性和容灾设计 • Database Plus 案例
3 .背景介绍 • PaaS化 • 降低资源使用成本 • DataSource不统一 • Druid,C3P0,HikariCP… • 治理成本非常高 • 没有标准化 • 大家的配置各自一套
4 .Arena—Jdbc 架构 • Consul 注册中心 • 统一Pull Frame • 可靠性 • Sharding 特性 • 多活路由
5 .统一数据源—ArenaDataSource • 业务场景 • 简单直连模式 • Sharding模式,支持分库分表的场景 • 多活模式,支持喜马核心业务双机房部署 • 低成本接入 • 业务不需要改任何代码 • 和业界接轨 • 不重复造轮子 • 引进Apache ShardingSphere
6 .统一数据源 • 接入方式,只需要换一个DataSource
7 .事件Pull机制 • 实时下发配置 • update,handover,recover,upgrade • 升级事件 • 直连—>Sharding/多活 • Sharding—>多活 • 灰度更新 • 实例级别
8 .可靠性和容灾 • 本地快照 • 远程配置本地持久化 • 远程获取失败降级使用本地配置 • 数据校验 • 没有实例的变更忽略 • 有实例会验证是否可用 • 预热机制 • 无损更新 • 先预热,后替换,再销毁
9 .多活—读写分离 • 强一致性 • 读写都路由主库 • 双读 • 没有强一致性要求的业务 • 写主机房 • 读备库—本地读 • 故障切换 • 备机房故障 • 切换为读主库
10 .Shadow Router • 影子Column • 业务入侵 • 接入成本高 • 压测标 • 对业务透明 • 影子实例 • 影子表
11 .自定义ShadowSQLRouter
12 .Shadow Config
13 .强制路由—使用方式
14 .强制路由—实现 • Default路由 • Sharding Key • Hint Context • Hint Database • 指定的DB • Hint Table • 指定的table
15 .全局路由检查 一个逻辑表没有配置分片键,那么会扫描这个逻辑表的所有实际表,在表很多的情 况下,会影响性能。 因此,我们提供了enableTableShardingValuesCheck字段
16 .唯一ID • Snowflake/UUID • 依赖时钟 • 无序 • 对索引不友好 • Xmly Boush ID • 全局唯一 • 有序递增 • 批量获取
17 .Metrics 监控 • Sql • Insert • Delete • Select • Shadow • Conn Pool • Max • Active • Idle
18 .Metrics 监控 • 响应时间 • Tp90 • Tp99 • tp999 • Shadow TP
19 .其他的优化 • 联邦查询 • 增加了开关,默认关闭,启动从3分钟以上降级到秒级启动 • 大小写强转 • 我们默认去掉了强转,业务存在大写的表 • 非Sharding表 • 支持使用数据库的自增ID
20 .总结 • 站在巨人的肩膀上 • 不要造轮子,Apache ShardingSphere已经很好用了非常方 便定制扩展,满足个性化需求 • 成本低,能快速拿结果 • 傻瓜化 • 业务接入成本要低,否则没有人会用,没有业务用那就只剩 下技术人自嗨了 • 我们半年多,70%的核心业务都已经覆盖,实现PaaS化
21 .扫描下载APP
22 .联系我们 SphereEx Apache ShardingSphere 微信公众号 微信公众号 SphereEx 官网:https://sphere-ex.cn Open SphereEx Community:https://community.sphere-ex.com Apache ShardingSphere Website:https://shardingsphere.apache.org Apache ShardingSphere GitHub: https://github.com/apache/shardingsphere Apache ShardingSphere Slack Channel:https://apacheshardingsphere.slack.com 邮箱:it@sphere-ex.com / biz@sphere-ex.com
23 .谢谢