- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
3.浅谈先进生产力之Tendis-冯浩
内容介绍
1.Tendis发展历程
2.Tendis开源解读
3.Tendis社区建设
4.未来发展规划
作者信息
冯浩 十年互联网数据库与运维工作经验,现任晓多AI运维总监。主要关注应用系统数据存储架构,RDBMS,NOSQL,分布式数据库,容器化与devops。
展开查看详情
1 .浅谈先进⽣产⼒之Tendis —晓多AI运维总监 冯浩
2 .Agenda 什么是先进⽣产⼒? Tendis能帮你解决什么问题? 如何优雅的使⽤Tendis? 最佳实践
3 .什么是先进⽣产⼒?
4 .什么是先进⽣产⼒? 业务主动增⻓ 成本显著降低 效率明显提升 可靠性明显提升
5 .Tendis能帮你解决什么问题?
6 .Tendis能帮你解决什么问题? • 集群架构图
7 .Tendis能帮你解决什么问题? • 复制架构图
8 .Tendis能帮你解决什么问题? • 线程架构图
9 .Tendis能帮你解决什么问题? • 发现Tendis的优势 • 原⽣兼容Redis协议,迁移成本低 • 基于rocksdb实现磁盘kv存储,成本优化90%以上 • 引⼊binlog,解决官⽅Redis Cluster复制上的短板 • 引⼊多线程,提⾼资源使⽤率,降低维护成本 • 更⾼效稳定的slot迁移⽅案 • 基于LSM树,写⼊能⼒优于常⻅关系型数据库
10 .Tendis能帮你解决什么问题? • 发现Tendis的劣势 • 延时略⾼于Redis,TP95响应延时⾼6ms • QPS低于Redis,在我们的业务常场景⾥做基准测试,相同硬 件资源前提下,⼤概是redis的40~50% Tips:以上响应延时和QPS都是基于我们业务场景value⻓度为 1024byte测试,Tendis官⽹测试的数据是使⽤128byte测试。
11 .Tendis能帮你解决什么问题? Storage Cache 性能换成本 Cache OLTP
12 .如何优雅的使⽤Tendis? • 业务功能验证 • Tendis官⽅⽂档的Redis兼容性章节 • 关注两个地⽅(命令是否⽀持,命令实现成本是否O(n))
13 .如何优雅的使⽤Tendis? • 部署规划(原Redis Cluster集群) • 92台8C64G 机器,每个机器部署7个实例 ,⼀共644个实 例,322主/322从,主从端⼝⼀致,确保主从不会落到同⼀ 台机器上。单机7个Redis实例主要考虑更好的利⽤cpu,以 及⼤促期间可以通过failover进⾏扩容,⽽不是进⾏耗时的 slot迁移。
14 .如何优雅的使⽤Tendis? • 部署规划(新Tendis集群) • 7台8C64G机器,每个机器部署2个实例,⼀共14个实例,7 主7从,主从端⼝⼀致,确保主从不会落到同⼀台机器上, 因Tendis是多线程的,具备较好的slot迁移能⼒,以及向上 扩展的能⼒,所以单机并未规划过多实例
15 .如何优雅的使⽤Tendis? • 部署规划(参考图) IP Master Slave 10.0.0.1 6701 6702 10.0.0.2 6702 6703 10.0.0.3 6703 6701
16 .如何优雅的使⽤Tendis? • 数据迁移 • 数据迁移是⼀个痛点,通常需要将Redis切换成Tendis的集 群都是属于低qps,⼤容量的Redis集群,所以要迁移的 key⾮常多,⼀⽅⾯要迁移⼤量历史数据,另外⼀⽅⾯需要 接收新的业务写⼊,所以迁移中的Tendis集群的处理能⼒ 要求会⽐⽇常情况⾼⼀些。
17 .如何优雅的使⽤Tendis? • 数据迁移(两种⽅法) • 使⽤开源迁移⼯具(redis-port,redisShake) • 使⽤业务双写+⾃定义迁移脚本
18 .如何优雅的使⽤Tendis? • 收益
19 .最佳实践 • 引⼊代理中间件,例如predixy • 减少move产⽣的⽆效qps • ⽀持读写分离 • ⽀持响应延时监控数据 • ⽀持权限控制 • https://github.com/joyieldInc/predixy/blob/master/ README_CN.md
20 .最佳实践 • 服务器硬件选择 • 基于KV的场景,以及rocksdb有写放⼤的问题,所以磁盘⼀定 要是⾼IOPS,⾼吞吐的SSD盘 • 由于Tendis是多线程,所以不必追求单核的⾼主频,多核也⼀ 样可以利⽤起来
21 .最佳实践 • 操作系统内核优化 • 关闭内存⼤⻚/sys/kernel/mm/transparent_hugepage/ enabled,/sys/kernel/mm/transparent_hugepage/defrag • 增加open les • 增加 nf_conntrack_max • 设置vm.swappiness = 1 • 设置vm.overcommit_memory = 1 • 优化⽹卡中断 • …. fi
22 .最佳实践 • Tendis配置优化 • netiothreadnum • executorthreadnum • rocks.blockcachemb • rocks.level0_compress_enabled,rocks.level1_compress_ enabled • ….
23 .最佳实践 • Tendis dumpbinlog定时清理 • Slave的binlog会从rocksdb转储到dump⽬录中,以便⼿⼯ 回滚到历史版本,这个暂时没有参数控制,需要⼿⼯或者定时 清理。
24 .谢谢⼤家 Q&A