Skip to content

Latest commit

 

History

History
46 lines (31 loc) · 2.25 KB

hot-key.md

File metadata and controls

46 lines (31 loc) · 2.25 KB

camellia-hot-key

简介

  • 一个热key探测和缓存的工具
  • 包括SDK、Server两个模块
  • 设计时参考了以下内外部开源的项目:京东hotkey搜狐hotCaffeine 、云音乐music_hot_caffeine

特性

  • 支持热key探测
  • 支持热key本地缓存,本地缓存如果有更新,hot-key-server会自动广播给所有sdk,从而保证数据的一致性(可能有百ms级的延迟)
  • namespace维度划分服务,一个hot-key-server支持同时服务多个namespace
  • 一个namespace下可以配置多条rule
  • rule里配置key的匹配规则(字符串完全匹配、字符串前缀匹配、字符串包含、匹配所有、后缀匹配、字符串不包含),以及热key的定义(时间窗口+阈值)
  • 提供CamelliaHotKeyMonitorSdk(探测)和CamelliaHotKeyCacheSdk(探测+本地缓存)两种SDK,适配不同使用场景
  • 支持自定义热key配置数据源(默认为本地文件配置,也内置了nacos、etcd两种实现),从而可以对接到你们的配置中心或者管理后台
  • 支持topN统计(全局维度),依赖redis进行数据汇总,对redis仅有少量的调用
  • 支持服务器自定义事件回调(热key回调+topN回调),从而可以对接到你们的监控报警系统或者频控流控系统
  • 支持自定义的注册发现器(内置了zk和eureka两种实现,具体见:hot-key-discovery
  • 支持丰富的监控,用于监控服务运行状态,具体见:console

基本架构

SDK部分

包括两个SDK:

  • CamelliaHotKeyMonitorSdk(仅用于监控热key)
  • CamelliaHotKeyCacheSdk(用于监控热key,并且提供本地缓存功能)

具体见:hot-key-sdk

Server部分

  • 服务器基于namespace来管理热key相关配置
  • 每个namespace下可以配置多个rule
  • rule主要用于设置key的匹配模式、热key的定义(多少时间内多少次请求),热key缓存过期时间(只有cache模式下需要)

具体见:hot-key-server

性能测试

具体见:performance