美团大规模KV存储挑战与架构实践

TL;DR

美团大规模KV存储面临扩展性和可用性挑战。为此,美团开发了Squirrel和Cellar两种KV存储系统。Squirrel通过Gossip优化、线程队列模型改造、线程RTC模型改造和内存引擎无锁化等方式解决了水平扩展和可用性问题。Cellar通过双向同步冲突自动解决等方式实现了跨地域的容灾架构。未来,美团将继续优化KV存储系统,探索新技术和硬件应用。

Summary

美团大规模KV存储挑战与架构实践

  1. 美团KV存储发展历程
    • 第一代分布式KV存储:客户端一致性哈希,后端部署多个Memcached实例
    • 第二代:引入Redis,解决宕机和扩容问题
    • 第三代:引入Tair,解决数据迁移和扩容问题
    • 第四代:自研Squirrel和Cellar,满足业务需求
  2. 大规模KV存储的挑战
    • 扩展性:水平扩展和垂直扩展
    • 可用性:保证集群可用性不会随着规模的变大而降低
  3. 内存KV Squirrel挑战和架构实践
    • 水平扩展的挑战:Gossip消息通信量膨胀,影响服务可用性
    • Gossip优化:使用Merkle Tree对Gossip消息进行摘要,减少通信量
    • 线程队列模型改造:引入调度线程和空闲线程池,实现线程资源的快速动态分配
    • 线程RTC模型改造:让网络线程直接处理读请求,减少CPU资源消耗
    • 内存引擎无锁化:使用RCU机制实现异步内存回收,解决读请求与写请求冲突
  4. 持久化KV Cellar挑战和架构实践
    • 可用性的挑战:实现跨地域的容灾架构,解决数据冲突问题
    • 双向同步冲突自动解决:使用HLC时钟解决时钟回退和两次变更写入的本地时间相同的问题
  5. 发展规划和业界趋势
    • 服务层:去掉ZK依赖,支持向量引擎能力,云原生部署和调度
    • 系统层:探索Kernel Bypass技术,降低访问延迟和成本
    • 硬件层:探索计算型硬件的应用,降低服务访问延迟和成本