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

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月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 的请求合理分配到不同的服务实例上,提高系统的整体响应能力。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
消息中间件 分布式计算 算法
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析(上)
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析
996 0
|
负载均衡 Java API
深入了解Spring Cloud Netflix:构建微服务架构的利器
在当今快速发展的软件开发领域,微服务架构已经成为了构建高度可伸缩、灵活性强的应用程序的首选方式。然而,微服务架构也带来了一系列的挑战,包括服务发现、负载均衡、容错处理、配置管理等问题。Spring Cloud Netflix是一组用于构建分布式系统的开源工具,它基于Netflix的一些开源项目,为开发人员提供了强大的解决方案,帮助他们轻松地构建和管理微服务应用程序。本文将深入介绍Spring Cloud Netflix的主要组件以及它们如何帮助开发人员构建稳健的微服务架构。
|
存储 NoSQL 中间件
软件体系结构 - 数据分片
【4月更文挑战第20天】软件体系结构 - 数据分片
524 15
|
负载均衡 算法 应用服务中间件
5大负载均衡算法及原理,图解易懂!
本文详细介绍负载均衡的5大核心算法:轮询、加权轮询、随机、最少连接和源地址散列,帮助你深入理解分布式架构中的关键技术。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
5大负载均衡算法及原理,图解易懂!
|
人工智能
从零开始学写歌词:关键技巧和方法一网打尽,妙笔生词AI智能写歌词软件
从零开始学写歌词,掌握关键技巧和方法,探索歌词创作的奇妙世界。借助“妙笔生词智能写歌词软件”,利用AI智能生成、优化和解读歌词等功能,轻松找到灵感,提升创作水平,创作出动人的歌词。
|
机器学习/深度学习 人工智能 算法
未来已来:AI如何重塑我们的世界
【10月更文挑战第13天】 在21世纪的今天,人工智能(AI)不再是科幻小说中的幻想,而是实实在在地融入了我们的日常生活。从智能助手到自动驾驶汽车,AI正以前所未有的速度改变着我们与世界的互动方式。本文将深入探讨AI技术的最新进展,以及它们对社会、经济和文化可能产生的深远影响。
322 1
|
SQL 关系型数据库 MySQL
【超全整理】SQL日期与时间函数大汇总会:MySQL与SQL Server双轨对比教学,助你轻松搞定时间数据处理难题!
【8月更文挑战第31天】本文介绍了在不同SQL数据库系统(如MySQL、SQL Server、Oracle)中常用的日期与时间函数,包括DATE、NOW()、EXTRACT()、DATE_ADD()、TIMESTAMPDIFF()及日期格式化等,并提供了具体示例。通过对比这些函数在各系统中的使用方法,帮助开发者更高效地处理日期时间数据,满足多种应用场景需求。
1734 1
|
安全 测试技术 数据库
图书馆信息管理系统(项目需求和计划、项目设计)(上)
图书馆信息管理系统(项目需求和计划、项目设计)(上)
572 1