zoukankan      html  css  js  c++  java
  • #研发解决方案#discache-分布式缓存查询与管理系统

    郑昀 基于马海元和闫小波的文档
    关键词:memcached、redis、分布式缓存、控制台、反序列化、Java

    本文档适用人员:研发和运维员工
    提纲:
    1. 如何查看缓存里的序列化数据?
    2. 批量删除来一个
    3. 监控每个缓存端口的访问情况是很有必要的
    4. discache 解决了这些问题

        电商系统的分布式缓存一般是 redis 和 memcached 集群,每一个节点上会起很多实例,因为一个业务类型对应于一个端口,拆分得很清楚。既然节点很多,端口很多,业务也在变化,随时都有变动,如何管理呢?当然,最迫切的需求是下面这个,不解决的话就会很麻烦。
     
    0x01.如何查看缓存里的序列化数据?
        Java 工程通常把类实例对象序列化后存储在缓存里。其次,不同端口存的类对象还不一样。最后,类对象还有版本之分,你手头不见得有正确的线上版本 class 文件来反序列化。
        总之,当你想看看键值里存的是什么内容时,会非常麻烦,所以我们迫切需要一个系统。
        
    0x02.批量删除来一个
        有时候线上缓存数据想按某个规则删掉一批,没有一个趁手的工具的话,那遇到急茬儿事还真是手忙脚乱,尤其是有时候上线预热数据预热错了的时候。假如能按照某个通配符规则批量删除,善莫大焉。
    0x03.监控每个缓存端口的访问情况是很有必要的
        慢日志
    redis 支持各种数据结构,还支持模糊查询,所以容易在线上出现慢查询。因此,有一个慢查监控还是很能发现问题的。
        指令执行情况
    缓存的指令处理速度、内存使用情况、DB Size 等等,这些能实时观测也是最好。
     
    0x04.discache 解决了这些问题
        2014年,在张鑫和闫小波的努力下,discache 如期发布,也纳入到了 IdCenter 体系下。
    什么是 discache?
    窝窝主站的分布式缓存管理平台,由节点管理、数据查询、基本信息和慢日志四部分功能组成的。
    入口在这里:
    idcenter之discache入口
    图1 idcenter的主界面
     
    discache 主界面长这样:
    discache主界面
    图2 discache节点管理界面
    你可以按关键词搜索节点名称:
    discache搜索
    图3 按order关键词搜索所有分布式缓存节点
     
    来,咱们看看慢日志。
    找到对应节点后,点击那个黄色操作按钮。
    discache慢日志
    图4 某个节点的慢日志
    慢日志列表也是可以搜索的。
    上图里的用时为什么这么慢呢?这些请求都是 redis 模式匹配式的指令,数据量大的情况下响应时间确实比 get 单个 key 要多很多。
     
    再来看看基本信息,也就是实时监控:
    discache基础信息
    图5 某个节点的实时监控信息
    选好某个节点后,页面会一直更新数据。
     
    discache 如何解决最根本的需求:反序列化键值
        选择某个缓存节点,输入 key 名,支持通配符查询,如“*index*”、“g_*”等,如果之前有人已经上传过 CLASS 文件,则点击某个 key 可以直接展示 value 内容,否则需要上传一个 CLASS 文件来反序列化。
    discache反序列化
    图6 key 模糊搜索和反序列化
        如上图所示,还展示了某个 key 的过期时间。还支持gzip解压缩功能,支持多种反序列化方式,如下图所示。
    discache反序列化选项
    图7 序列化下拉列表
        注意,可以点击“全部删除”按钮将搜到的键值都删掉。
     
        好了,我们上面演示了对某个分布式缓存节点的键值查询、批量删除和单个删除、慢日志、实时监控。discache 大大提升了窝窝项目中缓存管理效率。
        下面大致说一下查询的工作原理:
    把缓存查询转换成 memacache 或 redis 的一组命令来实现,redis 有各种数据结构,那么每种存储结构的查询指令都不一样,界面设计中只需要输入指定的 key 值,在底层 java 实现中会尝试各种查询指令,直到查询到正确值为止。
     
    -EOF-
    欢迎订阅我的微信订阅号『老兵笔记』,请扫描二维码关注:
    老兵笔记订阅号二维码
  • 相关阅读:
    2019 SDN上机第7次作业
    2019 SDN上机第六次作业
    2019 SDN上机第5次作业
    SDN课程阅读作业(2)
    2019 SDN上机第4次作业
    2019 SDN阅读作业
    2019 SDN上机第3次作业
    第09组 团队Git现场编程实战
    预习非数值数据的编码方式
    预习原码补码
  • 原文地址:https://www.cnblogs.com/zhengyun_ustc/p/55solution10.html
Copyright © 2011-2022 走看看