展开查看详情
1.孟文超
2.
3.S oftw are Load B alance
4. Redis 支持多种数据结构 高性能、高可用 携程使用情况 2000多组实例 每秒访问量200万(写入10万)
5. 多数据中心 Redis多数据中心? 业务压力 Cache 高可用 内存数据库 多数据中心阶段 备份 双活 多活
6. 数据复制 机房切换 一致性 反向复制 实时性 高可用 复制高可用 redis failover
7. console zookeeper zookeeper zookeeper zookeeper zookeeper zookeeper m eta server m eta server senti nel senti nel senti nel senti nel senti nel sentinel m aster keeper keeper keeper keeper slave slave slave slave X -P ipe O thers
8. Console 元信息配置、监控、报警 Meta Server Keeper Leader选举、状态切换 HA Keeper Redis replication log数据管理 Zookeeper Meta server集群协调
9. 数据复制 机房切换 一致性 反向复制 实时性 高可用 复制高可用 redis failover
10. redis redis w rite w rite client1 client2 client client3
11.redis redis W rite W rite proxy W rite client
12. 多个redis写同时成功? 特殊命令处理 系统时间相关 time 随机数 randomkey
13.
14. runid redis运行时生成随机id 重启之后变化 标记唯一的redis进程 Head RDB redis内存数据映像 可以导出到磁盘 ring buffer replication log(复制日志) 增量命令日志 Tail 内存 Ring buffer replication log offset(复制日志偏移量) redis启动时设置 随着写入命令增加而增加
15.slave com m ands m aster com m ands client
16. 初次(全量同步) PSYNC ? -1 FULLSYNC masterrunid offset master导出rdb,向slave传输 slave接收rdb完成,加载数据至内存 (无法对外提供服务) 向slave传输replication log Slave不可用时间 10GB内存1-2min
17. 网络中断,重连(增量同步成功) PSYNC masterrunid currentOffset CONTINUE 网络中断,重连(增量成功失败) 复制日志缺失 masterrunid不一致
18.Ring buffer复制日志有限 Master压力,多数据中心带宽
19.
20.
21. 磁盘缓存log数据 多机房Log server—log server数据传输 数据中心内redis通过log server获取数据 数据中心之间通过keeper复制 压缩 Replication log server 命名:keeper
22. 测试 5w QPS, value 100字节 测试结果 master->slave 0.2ms master->keeper->slave 0.3ms 跨机房延时 同城几毫秒 异地十几、几十毫秒
23. 实现方案 流式处理 减少gc Netty(pooled direct memory) 操作系统(ZeroCopy) 通知 JDK AbstractQueuedSynchronizer (volatile long)
24. 数据复制 机房切换 一致性 反向复制 实时性 高可用 复制高可用 redis failover
25.主备切换 runid相同 offset相同
26. 功能 keeper主备选举 Keeper主备用(active/backup) keeper管理 增加、删除 多个meta server分片,负责不同的redis实例 meta server挂,负责的分片迁移 Zookeeper Meta server leader选举 Meta server分片信息存储
27.
28. Sentinel 高可用性解决方案 流程 Sentinel选择一个slave(node2)为新的master Sentinel提升node2为master Keeper从新的master(node2)复制数据 全量同步
29. redis无全局offset 官方解决方案https://gist.github.com/antirez/ae068f95c0d084891305 全局replication id 尚未实现 Slave同步速度不一致 同步慢的slave被提升为master