当前位置: 首页 > news >正文

制作网站团队人员室内设计手绘图 基础入门

制作网站团队人员,室内设计手绘图 基础入门,大冶seo网站优化排名推荐,清镇网站建设文章目录 缓存穿透什么是缓存穿透#xff1f;缓存穿透情况的处理流程是怎样的#xff1f;缓存穿透的解决办法缓存无效 key布隆过滤器 缓存雪崩什么是缓存雪崩#xff1f;缓存雪崩的解决办法 缓存击穿什么是缓存击穿#xff1f;缓存击穿的解决办法 区别对比 在如今的开发中缓存穿透情况的处理流程是怎样的缓存穿透的解决办法缓存无效 key布隆过滤器 缓存雪崩什么是缓存雪崩缓存雪崩的解决办法 缓存击穿什么是缓存击穿缓存击穿的解决办法 区别对比 在如今的开发中使用缓存中间件 Redis 已经成为一项很广泛的技术Redis 的高性能大大优化了我们的服务器性能缓解了在高并发的情况下服务器的压力。它基于缓存的形式在内存中保存数据减少对磁盘的 IO 操作。然而尽管 Redis 有着很多的优点但仍然有三朵乌云漂浮在 Redis 的上空穿透击穿雪崩。 缓存穿透 什么是缓存穿透 请求的数据既不在缓存中也不在数据库中如恶意攻击、非法ID查询。 缓存穿透说简单点就是大量请求的 key 根本不存在于缓存中导致请求直接到了数据库上根本没有经过缓存这一层。举个例子某个黑客故意制造我们缓存中不存在的 key 发起大量请求导致大量请求落到数据库。 缓存穿透情况的处理流程是怎样的 用户的请求最终都要跑到数据库查询一遍。 缓存穿透的解决办法 最基本的就是首先做好参数校验一些不合法的参数请求直接抛出异常信息返回给客户端。比如查询的数据库 id 不能小于 0、传入的邮箱格式不对的时候直接返回错误消息给客户端等等。 缓存无效 key 如果缓存和数据库都查不到某个 key 的数据就写一个到 Redis 中去并 设置过期时间具体命令如下 SET key value EX 10086 。这种方式 可以解决请求的 key 变化不频繁的情况如果黑客恶意攻击每次构建不同的请求 key会导致 Redis 中缓存大量无效的 key 。很明显这种方案并不能从根本上解决此问题。如果非要用这种方式来解决穿透问题的话尽量将无效的 key 的过期时间设置短一点比如 1 分钟。 另外这里多说一嘴一般情况下我们是这样设计 key 的 表名:列名:主键名:主键值 。 如果用 Java 代码展示的话差不多是下面这样的 public Object getObjectInclNullById(Integer id) {// 从缓存中获取数据Object cacheValue cache.get(id);// 缓存为空if (cacheValue null) {// 从数据库中获取Object storageValue storage.get(key);// 缓存空对象cache.set(key, storageValue);// 如果存储数据为空需要设置一个过期时间(300秒)if (storageValue null) {// 必须设置过期时间否则有被攻击的风险cache.expire(key, 60 * 5);}return storageValue;}return cacheValue; }布隆过滤器 更具体的布隆过滤器原理以及实现可以查看Redis—布隆过滤器-CSDN博客 布隆过滤器是一个非常神奇的数据结构通过它我们可以非常方便地判断一个给定数据是否存在于海量数据中。我们需要的就是判断 key 是否合法有没有感觉布隆过滤器就是我们想要找的那个“人”。 具体是这样做的把所有可能存在的请求的值都存放在布隆过滤器中当用户请求过来先判断用户发来的请求的值是否存在于布隆过滤器中。不存在的话直接返回请求参数错误信息给客户端存在的话才会走下面的流程。 加入布隆过滤器之后的缓存处理流程图如下。 但是需要注意的是布隆过滤器可能会存在误判的情况。总结来说就是 布隆过滤器说某个元素存在小概率会误判。布隆过滤器说某个元素不在那么这个元素一定不在。 为什么会出现误判的情况呢? 我们还要从布隆过滤器的原理来说 我们先来看一下当一个元素加入布隆过滤器中的时候会进行哪些操作 使用布隆过滤器中的哈希函数对元素值进行计算得到哈希值有几个哈希函数得到几个哈希值。根据得到的哈希值在位数组中把对应下标的值置为 1。 我们再来看一下当我们需要判断一个元素是否存在于布隆过滤器的时候会进行哪些操作 对给定元素再次进行相同的哈希计算得到值之后判断位数组中的每个元素是否都为 1如果值都为 1那么说明这个值在布隆过滤器中如果存在一个值不为 1说明该元素不在布隆过滤器中。 然后一定会出现这样一种情况不同的字符串可能哈希出来的位置相同。 可以适当增加位数组大小或者调整我们的哈希函数来降低概率 缓存雪崩 什么是缓存雪崩 缓存雪崩描述的就是这样一个简单的场景缓存在同一时间大面积的失效后面的请求都直接落到了数据库上造成数据库短时间内承受大量请求。 这就好比雪崩一样摧枯拉朽之势数据库的压力可想而知可能直接就被这么多请求弄宕机了。 举个例子系统的缓存模块出了问题比如宕机导致不可用。造成系统的所有访问都要走数据库。 还有一种缓存雪崩的场景是有一些被大量访问数据热点缓存在某一时刻大面积失效导致对应的请求直接落到了数据库上。 这样的情况有下面几种解决办法 举个例子 秒杀开始 12 个小时之前我们统一存放了一批商品到 Redis 中设置的缓存过期时间也是 12 个小时那么秒杀开始的时候这些秒杀的商品的访问直接就失效了。导致的情况就是相应的请求直接就落到了数据库上就像雪崩一样可怕。 缓存雪崩的解决办法 针对 Redis 服务不可用的情况 采用 Redis 集群避免单机出现问题整个缓存服务都没办法使用。限流避免同时处理大量的请求。 针对热点缓存失效的情况 设置不同的失效时间比如随机设置缓存的失效时间。缓存永不失效。 缓存击穿 什么是缓存击穿 缓存击穿是指 ‌某个热点数据在缓存过期失效的瞬间‌大量并发请求直接穿透缓存全部打到数据库上导致数据库负载骤增甚至崩溃的现象。 缓存击穿的解决办法 互斥锁 原理‌当缓存失效时只允许一个线程去查询数据库并重建缓存其他线程等待锁释放后直接读取新缓存。 ‌实现方式‌ ‌分布式锁‌如 Redis 的 SETNX 或 Redisson 的 RLock。‌本地锁‌单机环境下可用 synchronized 或 ReentrantLock。 永不过期 原理‌缓存不设置过期时间通过 ‌异步线程定期更新缓存‌如定时任务或消息队列触发。 ‌实现方式‌ 缓存设置为永久有效。通过后台任务或事件驱动更新数据。 缓存预热 ‌原理‌在系统启动或低峰期提前加载热点数据到缓存避免首次请求穿透。 ‌实现方式‌ 统计历史热点数据如 Top-N 访问 Key。通过脚本或定时任务预加载缓存。 ‌适用场景‌ 电商大促前预加载秒杀商品数据。新闻类应用预加载头条内容。 区别对比 维度缓存穿透缓存雪崩缓存击穿‌触发条件‌请求的数据‌既不在缓存也不在数据库‌如无效ID、恶意攻击‌大量缓存同时失效‌如集体过期或缓存服务宕机‌单个热点数据过期失效‌如秒杀商品缓存到期‌影响范围‌单个或多个无效数据请求‌全局性‌大量缓存失效导致数据库压力骤增‌局部性‌仅某个热点数据失效但并发极高‌请求特征‌大量‌无效请求‌恶意或业务缺陷大量‌有效请求‌因缓存失效直接访问数据库大量‌有效请求‌集中访问同一失效热点数据‌解决方案‌1. 布隆过滤器2. 缓存空值3. 接口鉴权1. 随机过期时间2. 多级缓存3. 熔断降级1. 互斥锁2. 逻辑过期3. 永不过期策略‌典型场景‌爬虫恶意扫描不存在的ID缓存服务宕机或批量设置相同TTL微博热搜、秒杀活动等高并发场景
http://www.dnsts.com.cn/news/11716.html

相关文章:

  • 上海建设牌电动三轮官方网站办公空间设计主题名称
  • 视频网站开发视频vs2015 网站开发
  • 门户网站开发哪家好小程序商城怎么推广引流
  • 企业网站建设的原则wordpress 悬浮栏
  • 梧州网站设计理念成都网站开发培训
  • 清远市专业网站制作chinacd wordpress
  • 有没有做的很炫的科技型网站互联网保险与传统保险的区别
  • 聊天软件怎么做seo诊断分析工具
  • 网站的站点的管理系统朔州海外网络推广
  • 衡阳建设网站有什么免费推广项目的好软件
  • 做网站是先买域名还是国内三大电商平台分析报告
  • 女的可以学做网站wordpress idc模板
  • 南沙网站制作云卡会员卡管理系统
  • 服务器在国外的网站内网网站建设的亮点特点
  • 成都网站建设哪里好点深圳网络推广解决方案
  • 个人网站做哪些内容购物类网站
  • 长沙网站制造培训收费网站建设
  • 网站程序开发公司徐州泉山建设局网站
  • 建立网站费用多少网站建设方案硬件支撑
  • 个人网站名商洛市住户和城乡建设局网站信息价
  • 最好的手机资源网站数码设计网站
  • 网站开发软件 连接SQL数据库企业网站整理优化
  • 如何wix 做 网站搜索引擎营销推广方案
  • 浙江海滨建设集团有限公司网站网站模板系统
  • wordpress做网站手机手机网站建设公司
  • 企业网站的视频页如何做东莞ui设计公司
  • 互联网工具型网站车载互联系统网站建设
  • 高端企业网站制作返回json数据的网站
  • 电商网站建设如何上海中高风险地区名单最新
  • 网站开发毕业设计说明孝感网站建设