文档章节

#研发解决方案#discache-分布式缓存查询与管理系统

旁观者-郑昀
 旁观者-郑昀
发布于 2015/06/01 15:33
字数 1212
阅读 234
收藏 10
郑昀 基于马海元和闫小波的文档
关键词: 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-

© 著作权归作者所有

旁观者-郑昀
粉丝 101
博文 77
码字总数 162785
作品 0
朝阳
私信 提问
如何从零开始搭建一个技术平台

郑昀 创建于2016/3/30 最后更新于2016/4/8 关键词:技术预研课题,平台设计,应用场景,故事,信息架构,业务流程,数据流程 本文档适用人员:全体研发 提纲: 如何从零开始搭建一个技术平台...

旁观者-郑昀
2016/04/26
137
0
北京某创业公司招聘:高级PHP开发工程师、PHP项目研发组长、PHP架构师,大家都来呵!

职位名称:PHP项目研发组长 薪水待遇:20K起 任职要求: 1、5年以上PHP相关开发经验,2年以上团队管理经验; 2、精通PHP语言,熟练掌握PHP开发框架,熟悉ZEND FRAMEWORK者优先; 3、精通MYS...

Iris_糖姐
2011/10/13
438
9
#研发解决方案介绍#IdCenter(内部统一认证系统)

关键词:LDAP、认证、权限分配、IdCenter、 本文档适用人员:研发 曾经一个IT内部系统配一套帐号体系和授权 线上生产环境里,技术人员需要登录许多内部系统,如: memcached/redis/mongodb ...

郭恩洲_OSC博客
2015/02/26
156
0
构建高可用的缓存集群的开源解决方案

很多应用都通过使用缓存来避免所有的请求都查询数据库,以加快系统的响应速度,Memcached是常用的缓存服务器(现在比较流行的还有Redis),它一个高性能的分布式内存对象缓存系统,旨在通过缓...

lateron
2014/10/28
1.8K
0
备份监控工具--TSM monitor

TSM监测是一种Web应用PHP写成的,以帮助管理员快速TSM报告和健康状况的信息从他们的TSM服务器。它的内容动态生成,使人们可以轻松地添加或 修改查询的应用,以适应自己的需要。它具有可定制的...

匿名
2009/01/31
4.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

WPF中的StaticResource和DynamicResource有什么区别?

在WPF中使用画笔,模板和样式等资源时,可以将它们指定为StaticResources <Rectangle Fill="{StaticResource MyBrush}" /> 或者作为DynamicResource <ItemsControl ItemTemplate="{DynamicR......

javail
26分钟前
49
0
Day07继承中的面试题 答案

1. 每一个构造方法的第一条语句默认都是:super() Object类最顶层的父类。 class Zi extends Fu{ public int num = 20; public Zi(){ //super(); System.out.println("zi"); } 2.class Test......

Lao鹰
32分钟前
42
0
每天AC系列(四):四数之和

1 题目 Leetcode第18题,给定一个数组与一个target,找出数组中的四个数之和为target的不重复的所有四个数. 2 暴力 List<List<Integer>> result = new ArrayList<>();if (nums.length == 4 &......

Blueeeeeee
42分钟前
54
0
git clone --mirror和git clone --bare有什么区别

git clone帮助页面上有关于--mirror : 设置远程存储库的镜像。 这意味着--bare 。 但没有详细介绍--mirror克隆与--bare克隆--mirror不同。 #1楼 克隆将从远程服务器复制参考,并将其填充到名...

技术盛宴
57分钟前
72
0
代码生成器技术乱弹二十六,未来之野望,未实现的功能:动态Controller名字后缀

现在,光1.5.0的Controller后缀是固定的。比如:UserController, PrivilegeController之类的。而动态Controller名字后缀功能实现后,您只需要定义 controllernamingsuffix:Adaoter Control...

火箭船
今天
53
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部