滴滴:从KV存储升级到自研NewSQL应对业务挑战

1 下载量 177 浏览量 更新于2024-08-27 收藏 1.01MB PDF 举报
滴滴是一家快速发展的互联网公司,随着业务扩张,其面临了数据量剧增和请求压力的挑战。传统的分库分表策略虽能在一定程度上缓解数据量和请求压力,但难以应对业务线的频繁变动,导致数据库管理复杂,Schema变更流程繁琐,对线上服务有潜在影响,且不支持复杂的二级索引。为了解决这些问题,滴滴转向了NewSQL数据库方案,尤其是对开源的分布式NewSQL产品TiDB进行了深入研究。 TiDB虽被公认为优秀的新一代SQL数据库,但不适合滴滴的业务需求。首先,TiDB强调事务一致性,这在追求低延迟(例如毫秒级的99%响应时间)的场景下显得不适用,因为其2PC方案会增加延迟。其次,滴滴的业务大部分并不依赖分布式事务,可以通过其他补偿机制来规避。此外,TiDB的三副本存储模式会带来较高的空间成本,且内部的一些特定离线数据导入在线系统的场景无法直接与TiDB集成。 鉴于这些考虑,滴滴选择在自有的分布式键值存储系统Fusion基础上构建NewSQL解决方案。Fusion基于Codis架构,兼容Redis协议和数据结构,底层使用高效存储引擎RocksDB,已经在滴滴内部广泛应用,是重要的在线存储基础设施。Fusion采用了hash分片技术,通过proxy将用户请求路由到对应的存储节点,确保数据分布均匀,减少查询延迟。 在Fusion这个高并发、低延迟、大容量的存储层之上,滴滴构建了一个定制化的NewSQL系统,旨在提供更灵活的Schema变更能力,支持实时业务需求,同时降低成本并提高效率。这样的转变使得滴滴能够更好地适应业务发展,提升整体技术栈的性能和适应性。