码迷,mamicode.com
首页 > 其他好文 > 详细

热key自动发现与处理

时间:2021-02-05 11:02:16      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:命令   action   变化   client   活动   处理   兼容   大量   方式   

最新版本支持热点读的自动发现并触发客户端自动缓存,可有效保护服务端不被热点打穿,大幅提升缓存整体可用性,目前已经在线上稳定运行半年时间,欢迎大家使用。

 

热key的问题

秒杀、促销活动或突发的热点事件可能导致瞬间大量的请求去访问某个key。如此大的压力打到一个实例上,会导致该实例CPU飙升,响应变慢,甚至最终无法提供服务。当缓存无法提供服务的时候,请求会打到后端的DB上,会把DB打穿。

很多业务无法预先识别出这些热key。当热key发生不能有效地处理。

 

我们的方案

提供了毫秒级热key自动发现和热读自动处理的能力。

 

我们的优势

  •   毫秒级热key自动发现的能力,自动触发客户端本地缓存。
  1.  服务端原生支持热key发现和推送,几乎不带来额外的开销,也不引入任何第三方服务的依赖。
  2.  业务无需提前判断热key。
  3.   服务端会记录历史上出现过的热点,为业务优化提供依据。
  •  丰富的命令支持
  1.  本地缓存支持String/Hash所有类型的读命令exists、dump、mget、get、getRange、getBit、bitCount、strLen、hGet、hMGet、hExists、hLen、hKeys、hVals、hGetAll等(其中hash类型的 结构field数量默认最多支持5000)
  2.   支持同步、异步方式读取数据
  3.   API完全兼容历史版本
  •   最大程度保持数据一致性
  1. 数据发生修改,会通知客户端取消本地缓存。
  2.  key的热度变冷,会通知客户端取消本地缓存。
  • 无缝升级
  1. 2.x版本的升级无需修改任何代码,最新的2.1.10在API层兼容所有2.x版本。
  2. 1.x版本升级只需要少量代码调整。

 

注意事项

   热key的自动处理需要业务能容忍一定程度的一致性问题。如果客户端和服务器已经是当前最新版本(版本在本文最后一节),热key功能默认是开启的。如果要求强一致的业务请关闭热key功能。

 

 

历史热key查询

 

 

工作方式

1、在客户端web页面的管理配置上点击“启用热Key缓存”(默认是开启的)。

2、服务端发现热key后,会通过tcp长连接通知到客户端sdk,客户端sdk会将热key自动缓存到本地。

3、如果热key发生了写操作,服务端会通知客户端将发生变化的热key从本地缓存删除,直到key再次被打热,如下图所示:

 

 

 

版本要求

客户端:jimclient2.1.10版以上,使用方法见:https://cf.jd.com/pages/viewpage.action?pageId=367705622

服务端:端的版本>=4.1.34。对此有诉求的业务方请联系@sunshanqing进行升级。

热key自动发现与处理

标签:命令   action   变化   client   活动   处理   兼容   大量   方式   

原文地址:https://www.cnblogs.com/yaochunhui/p/14376244.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!