分片与副本机制研究
· 阅读需 2 分钟
Gemini: https://gemini.google.com/share/f5c5f79c9d34
导读
副本
- 主从复制
- 多主复制
分片
- 数据在哪里分片?
- 在应用程序管理一个巨大的数据库连接池集合,对 JDBC 进行连接.(Apache-ShardingSphere-JDBC)
- 在应用程序与数据库之间搭建一个代理(Vitess)
- 分片策略
- 散列算法
- 范围分片
- 目录分片
- 地理位置分片
- 列表分片
- 复合/混合分片
- 读写分离
- 读请求:负载均衡🈯至所有分片
- 写请求:请求主库
- 数据聚合
- 聚合函数
- max,min
- count
- sum
- avg -> sun/count
- 关联查询
- 从分片上下功夫,将关联条件作为分片的 key
- 广播表(每个分片中都存在)
- 数据冗余,避免关联查询
- 在应用程序层面关联
- 聚合函数
- 全局唯一 ID
- UUID 的升级版(包含时间戳)
- 号段模式(美团 Leaf)
- 雪花算法(单机递增,全局趋势递增,时间回拨问题)
- Redis 自增
- Zookeeper 自增
- 分布式事务
短链系统
- 号段模式(Segment) + 混淆加密(Feistel Cipher) + Base62 编码
- 独立预发号服务(Key Generation Service,KGS)
- 独立的后台服务,在空闲时不断生成 6-7 位的 Base62 字符串
- 查询数据库是否已存在
- 从未使用密钥表中快速拿走一个可用的短字符串。
- uuid , 不推荐,长度太长
- 雪花算法,长度不符合,递增
- 哈希值,取前 6-7 位,有重复危险