前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大厂热数据探测开源项目不能错过!

大厂热数据探测开源项目不能错过!

作者头像
永恒君
发布2022-12-06 15:32:32
3110
发布2022-12-06 15:32:32
举报
文章被收录于专栏:开源小分队开源小分队

大家好,我是爱撸码的开源大叔!

双十一的时候,各大电商的流量都是很大的,过年时候火车票也都是秒光,这些流量是可以提前预测的,可以提前加服务器,还有些流量无法提前预测,像微就博承受了太多压力,饭圈突然就来一个热点新闻,比如xxx pc被抓、xxx宣布离婚、xxx公布恋情。。。大家都懂的。

互联网会有突发性无法预先感知的热点数据,大量请求同一个商品、恶意爬虫、海量请求同一个接口,大量的请求进来,我们需要考虑的点就很多了,缓存雪崩缓存击穿缓存穿透这些都是有可能发生的,甚至DB挂了,那就很难受了,最后背锅的还是开发

今天大叔推荐的hotkey就可以解决这个问题。APP后台热数据探测框架,对任意突发性的无法预先感知的热点数据,推送到所有服务端JVM内存中,以大幅减轻对后端数据存储层的冲击,并可以由使用者决定如何分配、使用这些热key(譬如对热商品做本地缓存、对热用户进行拒绝访问、对热接口进行熔断或返回默认值)。这些热数据在整个服务端集群内保持一致性,并且业务隔离,worker端性能强悍。

系统架构

1、etcd集群

etcd作为一个高性能的配置中心,可以以极小的资源占用,提供高效的监听订阅服务。主要用于存放规则配置,各worker的ip地址,以及探测出的热key、手工添加的热key等。

2、client端jar包

就是在服务中添加的引用jar,引入后,就可以以便捷的方式去判断某key是否热key。同时,该jar完成了key上报、监听etcd里的rule变化、worker信息变化、热key变化,对热key进行本地caffeine缓存等。

3、worker端集群

worker端是一个独立部署的Java程序,启动后会连接etcd,并定期上报自己的ip信息,供client端获取地址并进行长连接。之后,主要就是对各个client发来的待测key进行累加计算,当达到etcd里设定的rule阈值后,将热key推送到各个client。

4、dashboard控制台

控制台是一个带可视化界面的Java程序,也是连接到etcd,之后在控制台设置各个APP的key规则,譬如2秒出现20次算热key。然后当worker探测出来热key后,会将key发往etcd,dashboard也会监听热key信息,进行入库保存记录。同时,dashboard也可以手工添加、删除热key,供各个client端监听。

适用场景

  • mysql热数据本地缓存
  • redis热数据本地缓存
  • 黑名单用户本地缓存
  • 爬虫用户限流 接口、用户维度限流
  • 单机接口、用户维度限流
  • 集群用户维度限流
  • 集群接口维度限流

工作流程

1、搭建搭建etcd集群

2、启动dashboard配置规则

3、启动worker集群

worker与client进行长连接,计算各个client发来的key,当某key达到规则里设定的阈值后,将其推送到该APP全部client。

4、启动client端

client与worker建立长连接,定时把待测key到对应的worker。当worker探测出来热key后,会推送回来,client里提供了方法,根据业务做相应的处理,比如限流、降级访问的部分接口等等。

性能表现

每10秒打印一行,totalDealCount代表处理过的key总量,可以看到每10秒处理量在270万-310万之间,对应每秒30万左右QPS。

经历了多次大促压测演练以及618大促、双11大促,表现相当稳定。

总结

大叔总结一下,这个项目的工作原理,client和worker都会注册到etcd集群中,在dashboard控制台中配置规则,client定时把key上报给worker集群,worker计算client发来的key,当达到系统设置的阈值,worker把key推送给全部的client,client做相应的业务处理。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源小分队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系统架构
  • 适用场景
  • 工作流程
  • 性能表现
  • 总结
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档