申请试用
HOT
登录
注册
 
3.浅谈先进生产力之Tendis-冯浩
1 点赞
0 收藏
0下载
3306π社区
/
发布于
/
23
人观看

内容介绍

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

1 点赞
0 收藏
0下载