介绍:

热点规则:配置热 Key 的上报规则,圈出需要重点监测的 Key
热点上报:应用服务将自己的热 Key 访问情况上报给集中计算单元
热点统计:收集各应用实例上报的信息,使用滑动窗口算法计算 Key 的热度
热点推送:当 Key 的热度达到设定值时,推送热 Key 信息至所有应用实例
热点缓存:各应用实例收到热 Key 信息后,对 Key 值进行本地缓存

部署:

如果程序可以运行但是打包失败,考虑一下JDK版本的问题,要注意一下是所有要改的地方都改成 1.8

注意点:将client达成jar包以后,要下载到自己的本地仓库才行

使用:

package com.example.demo.Api;
import com.jd.platform.hotkey.client.callback.JdHotKeyStore;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
@RestController
@RequestMapping("/api/users")
public class UserController {
    public  static String key = "bilibili";
    @GetMapping("/{id}")
    public Object getUserById(@PathVariable Long id) {
        String result = "";
        if (JdHotKeyStore.isHotKey(key + id)) {
            System.out.println(key + id +"是热key");
            //注意是get,不是getValue。getValue会获取并上报,get是纯粹的本地获取
            Object skuInfo = JdHotKeyStore.get(key + id);
            if(skuInfo == null) {
                JdHotKeyStore.smartSet(key + id, "hxl");
            } else {
                result  = (String) JdHotKeyStore.getValue(key + id);
            }
        }
        else System.out.println(key + id +"不是热key");
        return result;
    }

}

常用api:

主要有如下4个方法可供使用

boolean JdHotKeyStore.isHotKey(String key)

Object JdHotKeyStore.get(String key)

void JdHotKeyStore.smartSet(String key, Object value)

Object JdHotKeyStore.getValue(String key)

1 boolean isHotKey(String key) ,该方法会返回该key是否是热key,如果是返回true,如果不是返回false,并且会将key上报到探测集群进行数量计算。该方法通常用于判断只需要判断key是否热、不需要缓存value的场景,如刷子用户、接口访问频率等。

2 Object get(String key),该方法返回该key本地缓存的value值,可用于判断是热key后,再去获取本地缓存的value值,通常用于redis热key缓存

3 void smartSet(String key, Object value),方法给热key赋值value,如果是热key,该方法才会赋值,非热key,什么也不做

4 Object getValue(String key),该方法是一个整合方法,相当于isHotKey和get两个方法的整合,该方法直接返回本地缓存的value。 如果是热key,则存在两种情况,1是返回value,2是返回null。返回null是因为尚未给它set真正的value,返回非null说明已经调用过set方法了,本地缓存value有值了。 如果不是热key,则返回null,并且将key上报到探测集群进行数量探测

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐