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-
    欢迎订阅我的微信订阅号『老兵笔记』,请扫描二维码关注:
    老兵笔记订阅号二维码
  • 相关阅读:
    杭电 Problem
    杭电Problem 5053 the sum of cube 【数学公式】
    杭电 Problem 2089 不要62 【打表】
    杭电 Problem 4548 美素数【打表】
    杭电 Problem 2008 分拆素数和 【打表】
    杭电 Problem 1722 Cake 【gcd】
    杭电 Problem 2187 悼念512汶川大地震遇难同胞——老人是真饿了【贪心】
    杭电Problem 1872 稳定排序
    杭电 Problem 1753 大明A+B
    东北林业大 564 汉诺塔
  • 原文地址:https://www.cnblogs.com/zhengyun_ustc/p/55solution10.html
Copyright © 2011-2022 走看看