- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
丁俊 - 京东KV存储产品演进
展开查看详情
1 . E T B .N P U IT
2 . E T . 京东KV存储产品演进之路 B N P U IT
3 . KV存储体系简介 ••高吞吐、低延迟 E T N 内存存储-jimdb ••在线伸缩、自动故障恢复 . ••广域复制 持久化存储- U ••高可靠 B P ••强一致 sharkstore IT ••大容量 ••冷热数据存储分离 混合存储 ••内存级别的性能体验,磁盘级别的存储容量
4 . 持久化存储提供 T admcache上线(v1) 支持异地多活 锁和配置服务 2015 .N 2018 E ~ B 2014 2017 2018 P U IT jimdb上线(v2) 持久化存储上线 上线混合存储
5 . T 1 内存存储 2 持久化存储 .NE U B P 3 混合存储 IT
6 . 内存存储-运营数据 E T 日常峰值请求量 B .N 服务端实例数 亿次/秒 P U 十万级 IT
7 . Java SDK | C SDK | AP 读/写 获取拓扑 cluster1 Group1 Group2 CFS shard1 Master Slave shard2 Master Slave MySQL 存活检测 数据采集 Sentinel Pusher 报警 Alarm ContainerManager 故障恢复 弹性伸缩 Failover Scaler 获取实例 更新拓扑
8 . 内存存储-核心特性 v 高吞吐、低延迟 v 自动故障恢复 v 在线伸缩 v 广域复制
9 . 内存存储-故障检测 误判后果 sentinel Jimdb server 误判原因 防止误判
10 . 内存存储-故障自动恢复 1. notify cfs sentinel 3. Upd topo config failover 客户端容灾 大规模断电:熔断、限流 2. create Container manager
11 .内存存储-在线迁移流程 cfs 1、更新临时拓扑 4、更新正式拓扑 Client scaler 3.1、通知迁移完成 3.2、被动反馈跳转 2、先全量、后增 Old-Server New-Server 量,增量不阻塞读
12 . 内存存储-广域复制的问题 master slave slave 华 华 北 东 v 专线带宽有限,质量无法保证,延迟高 v 循环缓冲区大小有限,网络质量不可靠的情况下极易造成频繁全量同步
13 . 内存存储-广域复制 master master slave sync sync 华北 华东 v sync增量数据落盘,保证网络抖动、延时高等广域网络因素不会触发复制 v 支持双向复制 v 源端和目标端能够异构,能够各自进行故障切换
14 .1 内存存储 2 持久化存储 3 混合存储
15 . 持久化存储-核心特性 v 分布式强一致 v 支持在线分裂、自动故障恢复 v 支持schema,海量数据 v 支持范围查询,单表操作
16 . 持久化存储-逻辑视图 Primary Key Column 1 Column2 Column3 Colum4 Column5 value1-1 value2-1 value3-1 value4-2 value1-2 value2-2 value3-2 value5-2 value1-3 value2-3 value4-3 value5-3
17 .持久化存储-系统结构 jimdb Client RESTful Client Mysql parser rest parser key value api rpc rpc rpc master range range range server range range range range range range dataserver dataserver dataserver Data servers
18 .Compact影响写入
19 . Key-value分离 基于rocksdb的blobdb功能完善和改造
20 . 持久化存储-RAFT成员变更 数据迁移、负载均衡等涉及到成员变更 1、只复制 2、不发起LEADER选举 3、不投票 sharkstore raft 会在leader端监测learner的日志进度, 由leader自动发起一次raft成员变更,提升leaner成员为正常成员
21 . 持久化存储-RAFT PREVOTE follower重新加入复制组会发起选举,可能干扰正常业务 1、发起选举的follower本身就是落后节点 Give me a chance 2、现有的leader可以正常工作,不必要重新选举 Raft的作者提出了prevote算法: 在发起选举前,先进行一次预选举Pre-Candidate, 如果预选举时能得到大多数的投票,再增加term,进行正常的选举。
22 . 持久化存储-延伸 分布式锁 配置服务 sharkstore
23 . 分布式锁 数据库 条件更新->防止死锁->加时间戳检查,数据库高可用,检查死锁任务的高可用,性能 和扩展性 Redis/Memcached 服务本身的高可用、redlock算法、合理的超时时间 Etcd/zk 性能、水平扩容、网络异常后任务能否中止
24 . 分布式锁 基于心跳机制:任务中止 基于超时时间:时间设置是否合理、重启服务端等已知场景能否及时解锁 合理的超时时间+心跳续期 安全超时时间+报警检测 心跳过期+回调
25 . 分布式锁 master 1.get cluster 1.get cluster server 2.lock key 2. lock key failed success 3.check lock exist client Leader client2 1 released 3.unlock key 4.lock key follower success follower region1
26 . 配置服务 1、多range,多点写入 2、树型结构深度有限制 3、防止分离时group分组被割裂
27 .1 内存存储 2 持久化存储 3 混合存储
28 . 混合存储 hot 内存 内存与文件混合存储引擎 warn 本地flash盘 cold 远程持久化集群(sharkstore) 文件存储引擎
29 . 冷热分离引擎 核心问题:不常访问的数据淘汰到磁盘 算法:LRU、HIT DENSITY 问题: 1、KEY要不要从内存里面删除 2、少量的冷数据访问,会不会拖慢整体性能 3、链表数据怎么处理