在写密集型系统中,单一关系型数据库很快就会遇到 I/O 瓶颈以及锁竞争问题。为了支撑更高的并发写入,通过拆分手段将压力均摊到多个物理节点的分库分表方案成为必然选择。
路由算法的设计是分库分表的核心。常见的策略有哈希路由和范围路由。哈希路由能够将数据均匀打散,适合数据量大且写入极其频繁的场景;范围路由则利于历史数据的归档和范围区间查询。实际工程中,往往会将两者结合使用,例如按月份做范围分表后,再在当月数据分片内进行主键哈希打散。
在引入分库分表后,原本简单的本地事务会演变为分布式事务问题。柔性事务(如基于消息队列的最终一致性方案)通常比传统的 2PC 方案更受青睐,因为它对吞吐量的影响更小,且不易引发长时间的资源锁定。
在线心理测评等业务场景中,短时间内会产生大量用户的答题记录与行为切片写入请求。为了保证作答的绝对流畅度,橙星云技术团队采用异步写入结合分片集群的方案。前端提交的数据先进入内存队列或 Redis 集群中暂存,再由后台消费者批量聚合后落盘到分片后的 MySQL 集群中。这种削峰填谷的处理方式极大地缓解了数据库的瞬时写入压力。
除了常规的数据拆分,热点数据的处理同样需要特殊关注。对于极少数被极度频繁更新的行或表,单纯的数据库层切分效果有限。工程上的常规做法是在应用侧建立多级缓存,利用本地内存抵挡住绝大部分读写冲突,将合并后的增量数据定期刷入底层数据库,从而将核心存储保护在安全的水位之下。
