基于木舟平台浅谈surging 的热点KEY的解决方法

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 【11月更文挑战第13天】本文介绍了木舟平台及Surging框架中热点KEY的概念与解决方案。热点KEY指在缓存或分布式系统中频繁访问的数据键,如电商中的热门商品ID。为避免缓存击穿等问题,文章提出了设置热点数据永不过期、多级缓存架构、缓存预热、限流和降级策略以及分布式系统层面的优化等方法。
  1. 理解木舟平台和 Surging 框架中的热点 KEY 概念
  • 木舟平台简介:木舟平台可能是一个特定的业务平台,在这个平台上 Surging 框架被用于构建服务。木舟平台也许有自己特定的业务场景,如电商交易、内容分发等。
  • Surging 热点 KEY:在 Surging 框架的上下文中,热点 KEY 通常是指在缓存或者分布式系统中被频繁访问的键。例如,在一个电商系统中,热门商品的 ID 可能就是热点 KEY。这些热点 KEY 如果处理不当,可能会导致缓存击穿、雪崩等问题。
  1. 缓存层面的解决方法
  • 设置热点数据永不过期策略
  • 对于确定是热点 KEY 的数据,可以在缓存中设置其永不过期。例如,使用 Redis 作为缓存时,可以通过配置或者代码逻辑来确保热点数据一直存在于缓存中。但这种方法需要注意数据更新的问题,因为数据可能会发生变化。
  • 可以定期(如在业务低峰期)去更新这些热点数据,以保证数据的准确性。同时,要考虑到缓存空间的占用,避免因为永不过期数据过多而占用大量缓存空间。
  • 使用多级缓存架构
  • 构建多级缓存来分担热点 KEY 的访问压力。比如,在木舟平台中,可以设置本地缓存(如使用 Caffeine 等本地缓存库)和分布式缓存(如 Redis)相结合的方式。
  • 当有对热点 KEY 的访问请求时,首先在本地缓存中查找。本地缓存速度更快,可以快速响应部分请求。如果本地缓存未命中,再去分布式缓存中查找。这样可以减少对分布式缓存的直接访问压力,提高系统的整体性能。
  • 缓存预热
  • 在系统启动或者业务低峰期,对可能成为热点 KEY 的数据进行缓存预热。例如,通过定时任务或者脚本,提前将热门商品信息、高频访问的配置数据等加载到缓存中。
  • 对于 Surging 框架,可以在服务启动阶段,利用其提供的初始化接口或者配置文件,触发缓存预热逻辑。这样在实际业务请求到来时,热点 KEY 已经存在于缓存中,减少了缓存未命中的情况。
  1. 限流和降级策略
  • 限流措施
  • 针对热点 KEY 的访问,可以在木舟平台的入口网关或者 Surging 服务内部设置限流。例如,使用 Sentinel 等限流框架,对包含热点 KEY 的请求进行流量控制。
  • 可以根据系统的处理能力,设置每秒允许访问热点 KEY 的最大请求数。当请求数超过阈值时,直接拒绝部分请求或者将其放入等待队列(需要考虑等待时间过长的问题),避免过多请求压垮系统。
  • 降级策略
  • 当热点 KEY 的访问出现异常或者系统压力过大时,启动降级策略。例如,对于展示热点商品详情的功能,如果获取商品详情(涉及热点 KEY)出现问题,可以暂时返回一个简单的默认信息,如 “商品信息加载中,请稍后”。
  • 在 Surging 框架中,可以通过配置降级规则和实现降级逻辑的接口来实现。例如,在服务发现和调用的链路中,当检测到对热点 KEY 相关服务的调用出现高延迟或者频繁失败时,自动切换到降级逻辑。
  1. 分布式系统层面的优化
  • 数据分片策略
  • 如果热点 KEY 是存储在分布式数据库或者缓存中,可以考虑优化数据分片策略。例如,在使用 Redis 集群时,根据热点 KEY 的特点重新分配数据分片。
  • 对于按照哈希分片的系统,可以通过调整哈希函数或者添加额外的分片规则,将热点 KEY 均匀分布到不同的分片上,避免某个分片因为热点 KEY 过多而成为性能瓶颈。
  • 服务发现和负载均衡优化
  • 在木舟平台的分布式服务架构中,Surging 框架可能依赖服务发现和负载均衡机制。对于热点 KEY 相关的服务,可以优化服务发现的缓存策略。
  • 同时,在负载均衡方面,采用更智能的负载均衡算法,如基于权重(考虑服务实例处理热点 KEY 的能力)的负载均衡算法,将对热点 KEY 的请求合理分配到不同的服务实例上,提高系统的整体响应能力。
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
7月前
|
缓存 Go API
Go 实现一个支持多种过期、淘汰机制的本地缓存的核心原理
本文旨在探讨实现一个支持多种 过期、淘汰 机制的 go 本地缓存的核心原理,我将重点讲解如何支持多样化的过期和淘汰策略。
165 0
|
2月前
|
缓存 监控 负载均衡
如何解决Redis热点Key问题?技术干货分享
【10月更文挑战第2天】在Redis的使用过程中,热点Key问题是一个常见的性能瓶颈。热点Key指的是那些被频繁访问的Key,它们可能导致Redis服务器的负载不均衡,进而影响整体性能。本文将深入探讨热点Key问题的成因、影响以及多种解决方案,帮助读者在实际工作中有效应对这一挑战。
71 3
|
4月前
|
Java
典型热点应用问题之启用增量编译的问题如何解决
典型热点应用问题之启用增量编译的问题如何解决
|
4月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题
【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题
|
4月前
|
Java
典型热点应用问题之修改应用启动脚本的问题如何解决
典型热点应用问题之修改应用启动脚本的问题如何解决
|
4月前
|
存储 NoSQL Redis
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
|
6月前
|
存储 缓存 NoSQL
缓存:热点key重建优化。
缓存:热点key重建优化。
74 0
|
7月前
|
Windows
win10搜索功能失效用不了如何解决|
win10搜索功能失效用不了如何解决|
58 0
|
存储 缓存 NoSQL
Redis热点大Key的优化过程
Redis热点大Key的优化过程
259 0
|
存储 NoSQL 算法
【Redis核心原理专题】(1)「技术提升系列」分析探究如何实现LFU的热点key发现机制以及内部的Scan扫描技术的原理
【Redis核心原理专题】(1)「技术提升系列」分析探究如何实现LFU的热点key发现机制以及内部的Scan扫描技术的原理
200 0
【Redis核心原理专题】(1)「技术提升系列」分析探究如何实现LFU的热点key发现机制以及内部的Scan扫描技术的原理