资讯详情

【原创,太厉害了

以下是一些集群结构,Proxy可以是Twemproxy,是统一的入口。Proxy层层收集报告,但缺点明显,不是全部redis都有集群结构proxy。

方法四:用redis自带命令

(1)monitor该命令可以实时捕获redis服务器接收到的命令,然后编写代码统计热量key是什么?当然也有现成的分析工具的分析工具,比如redis-faina。但是该命令在高并发的条件下,有内存增暴增的隐患,还会降低redis的性能。

(2)hotkeys参数,redis 4.0.3提供了redis-cli的热点key发现功能,执行redis-cli时加上–hotkeys选项可以。但是,如果执行该参数,如果key多,执行慢。

方法五:自行抓包评估

Redis客户端使用TCP协议与服务器互动,通信协议采用RESP。自己写程序监控端口,按照RESP协议规则分析数据进行分析。缺点是开发成本高,维护困难,可能丢包。

以上五种方案各有优缺点。根据自己的业务场景做出选择。然后发现热。key之后,如何解决?

如何解决

目前行业内有两种方案。

(1)使用二次缓存

比如利用ehcache,或者一个HashMap都可以。当你发现热量时key以后,把热key加载到系统JVM中。

针对这种热key请求,将直接从jvm而不是去redis层。

假设此时有10万人针对同一个key如果没有本地缓存,这10万个请求将直接连接到同一个请求redis上了。

假设你的应用层有50台机器,OK,你也有jvm缓存了。这十万个请求平均分散开来,每个机器有2000个请求,会从JVM中取到value值,然后返回数据。避免10万个请求到同一个。redis上的情形。

(2)备份热key

这个计划也很简单。不要让它。key走到同一台redis没关系。我们把这个放在一边。key,在多个redis存一份不好。接下来,有热。key当请求进来时,我们有备份redis随机选择一个,访问取值,返回数据。

假设redis集群数量为N,步骤如下图所示

注:不一定是2N,你想取3N,4N可以,看要求。

伪代码如下

 const M = N * 2  //生成随机数  random = GenRandom(0, M)  //构造备份新key  bakHotKey = hotKey   “_”   random  data = redis.GET(bakHotKey)  if data == NULL {      data = GetFromDB()      redis.SET(bakHotKey, expireTime   GenRandom(0,5))  }  

业内方案

OK,其实看完上面的内容,大家可能会有一个疑问。

嗯,好问题,我们来谈谈行业是怎么做到的。其实只有两步。

(1)监控热key

(2)处理通知系统

碰巧前几天有一篇题为《透明多级缓存解决方案》的文章(TMC)》,里面还提到了热点key我们刚刚解释了问题。

(1)监控热key

在监控热key方面,赞用的方式二:

有赞透明多级缓存解决方案(TMC)》有句话提到

也就是说,人改写了jedis原生的jar包,加入了Hermes-SDK包。

那Hermes-SDK为什么包用?

OK,就是做

从监控的角度来看,包对Jedis-Client的每次key值访问请求,Hermes-SDK 通过其通信模块将通过其通信模块key异步报告访问事件Hermes根据上报数据,服务端集群进行热点探测。

当然,这只是其中之一,有些公司在监控方面使用了五种方法:

具体来说,首先使用它flink建立一个流式计算系统。然后自己写一个抓包程序。redis监控端口数据,抓取数据后往往kafka里丢。

接下来,流式计算系统的消费kafka内部的数据可以通过统计数据来监控热量key的目的。

(2)处理通知系统

从这个角度来看,赞成的是上述解决方案1:使用二次缓存进行处理。

监控到热的赞key后,Hermes服务集群将通过各种手段通知各业务系统Hermes-SDK,告诉他们:兄弟,这个key是热key,记得做本地缓存。

于是Hermes-SDK就会将该key本地缓存,以下请求。Hermes-SDK发现这是热key,直接从问集群的情况下,直接从。

除了这个通知。我们也可以这样做,比如你的流式计算系统监控热量key了,往zookeeper写在里面的节点里。然后你的业务系统监控节点,发现节点数据发生了变化,这意味着发现热key。最后写在本地缓存里也可以。

通知方式多种多样,大家可以自由发挥。本文只提供了一个想法。

总结

希望通过过这篇文章,我们能理解如何处理生产中遇到的热量key问题。

Ending

(阿里对MySQL底层实现和索引实现有很多问题)

(阿里对MySQL底层实现和索引实现有很多问题)

[外链图片转存中…(img-aLZhtbxw-1630667109130)]

[外链图片转存中…(img-D77JJx2e-1630667109132)]

吃透后这份pdf,你也可以和面试官谈谈MySQL。其实像阿里p7.岗位需求没那么难(但也不简单),扎实Java基础 无短板知识面 深入学习一些开源技术 阅读过源码 算法刷题,这套p7个差不多没问题,还是希望大家都能拿到高薪。offer吧。

标签: jjx拉绳位移传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台