《专场20.4-vivo KV存储探索与实践-汪翔.pdf》由会员分享,可在线阅读,更多相关《专场20.4-vivo KV存储探索与实践-汪翔.pdf(25页珍藏版)》请在三个皮匠报告上搜索。
1、vivo KV存储探索与实践汪翔vivo互联网专家工程师关于个人网易,APM系统研发以及云游戏的探索腾讯,数据库智能化运维平台研发以及数据库中间件研发过往履历过往履历分布式数据库/分布式系统/存储引擎/编程语言/系统架构等技术方向兴趣方向兴趣方向汪翔vivo数据库技术专家负责项目负责项目负责 Redis 方向的研发,主导 Redis 双活项目从0到1的研发,及 Redis 内核的改进负责 KV 方向的研发,主导 KV 存储项目从0到1的研发负责 MySQL 方向的研发,包括MySQL Proxy、MySQL HA以及SQL审核服务负责 DTS 项目的研发,构建数据订阅、数据同步、数据迁移的一体
2、化平台目录背景目标背景目标系统架构系统架构设计细节设计细节性能指标性能指标周边生态周边生态未来展望未来展望背景和目标当前公司内部没有统一的磁盘 KV 存储服务,很多业务都将 Redis 当作 KV 存储服务在使用,但是部分业务可能不需要 Redis 如此高的性能,却承担着巨大的成本(内存价格相对磁盘来说更加昂贵)。基于降低存储成本的需求,同时为了尽可能减少业务迁移的成本,我们基于 TiKV 研发了一套磁盘KV 存储服务。背景背景兼容 Redis 协议,便于业务进行数据库迁移支持大容量存储,承载业务大规模数据高性能,满足业务对性能的需求高可用,能够容忍部分节点失效易运维,降低整体运维成本目标目标
3、系统架构-整体架构兼容 Redis 协议存储计算分离支持横向扩展高可用性系统架构-TiKV 架构简介Placement DriverPlacement Driver:PD是集群的管理者,它会周期性检查TiKV状态,根据需要进行负载和数据的自动均衡StoreStore:Store 表示一个存储点,每个Store中有一个RocksDB实例,负责将数据持久化到本地磁盘RegionRegion:Region是 Key-Value数据移动的基本单元,每个 region 的数据会使用raftraft协议协议复制到多个节点,共同组成一个 Raft GroupNodeNode:Node表示集群中的一个物理节点
4、。每个Node上可以有一到多个Stores,每个Store上有多个Regions系统架构-TiKV 架构简介Transaction ModelTransaction Model:TiKV使用类似于google percolator 的事务模型,支持snapshot isolation级别的事务隔离Raft:Raft:TiKV使用Raft协议来进行数据复制,支持线性一致性RocksDBRocksDB:TiKV使用rocksdb作为底层存储引擎系统架构-Tula架构Connection Management模块管理客户端连接RESP Encoder 和 Decoder 负责对协议数据进行编解码Ex
5、ecutor 将 Redis Command 转换为事务型的KV请求Expire Checker 负责检查Key是否过期GC Worker 负责异步删除过期数据Connetion ManagementRESP DecoderExecutorTiKVRESP EncoderCientsExpire CheckerFlow ControllerGC Woker设计细节 数据编码Meta Meta KeyKey:1.namespace,命名空间2.version:编码版本,为了前向兼容3.元数据Key标记4.用户keyValueValue:1.reserved,保留字段2.object_versio
6、n,对象版本,用于快速删除3.expire_time,过期时间4.data_type,数据类型5.encode_type,编码类型6.user_value,用户valueStringreservedobject_versionexpire_timedata_typeencode_typeuser_valuenamespaceversionMuser_key设计细节 数据编码Data KeyData Key:1.namespace,命名空间2.version,编码版本3.D,Data Key标记4.user_key,用户Key5.object_version,数据版本,用于异步快速删除6.fie