定制化开发Redis缓存系统

  • 背景

        部分redis采用自建,主要是因为一些创新项目前期成本考虑,不需要高配置的硬件和软件,所以采用了自建的redis,就可以保证在很低廉的硬件配置上跑多个创新项目,同时venus-redis包括主从模式,集群模式和哨兵模式;另外一点考虑,自建redis缺乏一些自动化运维的能力,比如慢查询实时抓取和告警,对redis实例本身的监控告警等等;所以决定对redis-6.2.6的源代码做小部分修改,定制化为自研的venus-redis服务端,全面兼容标准redis和redis协议;

  • 思路分解

        venus-redis一样支持三种模式,包括主从,集群和哨兵;同时可以和标准版的redis兼容使用,比如我们采用主从模式,master-redis部署我们自研的redis系统,并且enable慢查询实时抓取以及告警功能,而从redis可以采用标准的redis也可以采用venus-redis部署;

        对于标准redis的慢查询,内存中通过一个双向链表保存一定量的慢查询日志,数量是有限的,只能通过命令去获取这些慢查询,经我们改造后的redis,可以将全量redis的慢查询持久化到MYSQL,便于问题追溯,我们记录的主要数据结构和数据模型为:

在持久化慢查询日志的时候,我们采用了SystemV的异步队列作为IPC,队列的消费者线程同样是跑在redis进程内部的(为了简化部署)。

同时,我们也实现了扩展的redis命令:

  1. 能够将慢日志持久化到数据库的开关,默认是关闭的;
  2. 命令行从数据库获取慢查询日志列表,最大一次性获取50条;
  3. 获取SystemV消息队列的状态数据;

         实例管理方面,我们也做了一些工作,我们在标准的redis配置文件中,扩展了配置,Redis启动的时候会自动进行初始化和注册,对同一个redis集群的所有实例进行统一监控和管理;

 venus-redis实例会启动内定时心跳流程,将自己的状态更新到数据库。

        性能和稳定性方面,通过redis自带的benchmark压测,稳定性保持良好,并且性能基本上没有影响;目前我们在生产上做小范围验证;监控方面,如果发现venus-redis失去心跳和慢查询都将实时的推送微信群进行告警;

客户端和Redis集群的视图;

缓存服务端主从视图;

Redis服务端监控数据

抓取的慢查询,慢查询的判断标准(时间)可配置;

 生产验证,我们按照以下部署方案实施验证,包括三个sentienl,两个redis实例;

通过telnet到主redis,执行以下命令验证慢查询持久化功能:

    1. 设置慢查询的判断时间;(Redis标准命令)

        

     2. 通过打开持久化开关

         

     3. 通过查询命令验证慢日志入库

 4. 通过消息队列查询命令验证消息队列工作正常;

5. 查看数据库写入是否正常;

 以下是venus-redis心跳功能验证;

  • 相关代码

Venus-Redis:venus-redis-6.2.6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值