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

个人门户网站模板网站配色的原理和方法

个人门户网站模板,网站配色的原理和方法,50m专线做视频网站,wordpress 数据库挂马缓存穿透 什么是缓存穿透#xff1f; 缓存穿透说简单点就是大量请求的 key 是不合理的#xff0c;根本不存在于缓存中#xff0c;也不存在于数据库中 。这就导致这些请求直接到了数据库上#xff0c;根本没有经过缓存这一层#xff0c;对数据库造成了巨大的压力#xf…缓存穿透 什么是缓存穿透 缓存穿透说简单点就是大量请求的 key 是不合理的根本不存在于缓存中也不存在于数据库中 。这就导致这些请求直接到了数据库上根本没有经过缓存这一层对数据库造成了巨大的压力可能直接就被这么多请求弄宕机了。 举个例子某个黑客故意制造一些非法的 key 发起大量请求导致大量请求落到数据库结果数据库上也没有查到对应的数据。也就是说这些请求最终都落到了数据库上对数据库造成了巨大的压力。 有哪些解决办法 最基本的就是首先做好参数校验一些不合法的参数请求直接抛出异常信息返回给客户端。比如查询的数据库 id 不能小于 0、传入的邮箱格式不对的时候直接返回错误消息给客户端等等。 1缓存无效 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; } 2布隆过滤器 布隆过滤器是一个非常神奇的数据结构通过它我们可以非常方便地判断一个给定数据是否存在于海量数据中。我们可以把它看作由二进制向量或者说位数组和一系列随机映射函数哈希函数两部分组成的数据结构。相比于我们平时常用的 List、Map、Set 等数据结构它占用空间更少并且效率更高但是缺点是其返回的结果是概率性的而不是非常准确的。理论情况下添加到集合中的元素越多误报的可能性就越大。并且存放在布隆过滤器的数据不容易删除。 Bloom Filter 会使用一个较大的 bit 数组来保存所有的数据数组中的每个元素都只占用 1 bit 并且每个元素只能是 0 或者 1代表 false 或者 true这也是 Bloom Filter 节省内存的核心所在。这样来算的话申请一个 100w 个元素的位数组只占用 1000000Bit / 8 125000 Byte 125000/1024 KB ≈ 122KB 的空间。 具体是这样做的把所有可能存在的请求的值都存放在布隆过滤器中当用户请求过来先判断用户发来的请求的值是否存在于布隆过滤器中。不存在的话直接返回请求参数错误信息给客户端存在的话才会走下面的流程。 加入布隆过滤器之后的缓存处理流程图如下。 更多关于布隆过滤器的详细介绍可以看看我的这篇原创不了解布隆过滤器一文给你整的明明白白 强烈推荐。 3接口限流 根据用户或者 IP 对接口进行限流对于异常频繁的访问行为还可以采取黑名单机制例如将异常 IP 列入黑名单。 后面提到的缓存击穿和雪崩都可以配合接口限流来解决毕竟这些问题的关键都是有很多请求落到了数据库上造成数据库压力过大。 限流的具体方案可以参考这篇文章服务限流详解。 缓存击穿 什么是缓存击穿 缓存击穿中请求的 key 对应的是 热点数据 该数据 存在于数据库中但不存在于缓存中通常是因为缓存中的那份数据已经过期 。这就可能会导致瞬时大量的请求直接打到了数据库上对数据库造成了巨大的压力可能直接就被这么多请求弄宕机了。 举个例子秒杀进行过程中缓存中的某个秒杀商品的数据突然过期这就导致瞬时大量对该商品的请求直接落到数据库上对数据库造成了巨大的压力。 有哪些解决办法 永不过期不推荐设置热点数据永不过期或者过期时间比较长。提前预热推荐针对热点数据提前预热将其存入缓存中并设置合理的过期时间比如秒杀场景下的数据在秒杀结束之前不过期。加锁看情况在缓存失效后通过设置互斥锁确保只有一个请求去查询数据库并更新缓存。 缓存穿透和缓存击穿有什么区别 缓存穿透中请求的 key 既不存在于缓存中也不存在于数据库中。 缓存击穿中请求的 key 对应的是 热点数据 该数据 存在于数据库中但不存在于缓存中通常是因为缓存中的那份数据已经过期 。 缓存雪崩 什么是缓存雪崩 我发现缓存雪崩这名字起的有点意思哈哈。 实际上缓存雪崩描述的就是这样一个简单的场景缓存在同一时间大面积的失效导致大量的请求都直接落到了数据库上对数据库造成了巨大的压力。 这就好比雪崩一样摧枯拉朽之势数据库的压力可想而知可能直接就被这么多请求弄宕机了。 另外缓存服务宕机也会导致缓存雪崩现象导致所有的请求都落到了数据库上。 举个例子数据库中的大量数据在同一时间过期这个时候突然有大量的请求需要访问这些过期的数据。这就导致大量的请求直接落到数据库上对数据库造成了巨大的压力。 有哪些解决办法 针对 Redis 服务不可用的情况 Redis 集群采用 Redis 集群避免单机出现问题整个缓存服务都没办法使用。Redis Cluster 和 Redis Sentinel 是两种最常用的 Redis 集群实现方案详细介绍可以参考Redis 集群详解(付费)。多级缓存设置多级缓存例如本地缓存Redis 缓存的二级缓存组合当 Redis 缓存出现问题时还可以从本地缓存中获取到部分数据。 针对大量缓存同时失效的情况 设置随机失效时间可选为缓存设置随机的失效时间例如在固定过期时间的基础上加上一个随机值这样可以避免大量缓存同时到期从而减少缓存雪崩的风险。提前预热推荐针对热点数据提前预热将其存入缓存中并设置合理的过期时间比如秒杀场景下的数据在秒杀结束之前不过期。持久缓存策略看情况虽然一般不推荐设置缓存永不过期但对于某些关键性和变化不频繁的数据可以考虑这种策略。 缓存预热如何实现 常见的缓存预热方式有两种 使用定时任务比如 xxl-job来定时触发缓存预热的逻辑将数据库中的热点数据查询出来并存入缓存中。使用消息队列比如 Kafka来异步地进行缓存预热将数据库中的热点数据的主键或者 ID 发送到消息队列中然后由缓存服务消费消息队列中的数据根据主键或者 ID 查询数据库并更新缓存。 缓存雪崩和缓存击穿有什么区别 缓存雪崩和缓存击穿比较像但缓存雪崩导致的原因是缓存中的大量或者所有数据失效缓存击穿导致的原因主要是某个热点数据不存在与缓存中通常是因为缓存中的那份数据已经过期。 如何保证缓存和数据库数据的一致性 细说的话可以扯很多但是我觉得其实没太大必要小声 BB很多解决方案我也没太弄明白。我个人觉得引入缓存之后如果为了短时间的不一致性问题选择让系统设计变得更加复杂的话完全没必要。 下面单独对 Cache Aside Pattern旁路缓存模式 来聊聊。 Cache Aside Pattern 中遇到写请求是这样的更新数据库然后直接删除缓存 。 如果更新数据库成功而删除缓存这一步失败的情况的话简单说有两个解决方案 缓存失效时间变短不推荐治标不治本我们让缓存数据的过期时间变短这样的话缓存就会从数据库中加载数据。另外这种解决办法对于先操作缓存后操作数据库的场景不适用。增加缓存更新重试机制常用如果缓存服务当前不可用导致缓存删除失败的话我们就隔一段时间进行重试重试次数可以自己定。不过这里更适合引入消息队列实现异步重试将删除缓存重试的消息投递到消息队列然后由专门的消费者来重试直到成功。虽然说多引入了一个消息队列但其整体带来的收益还是要更高一些。
http://www.hkea.cn/news/14577172/

相关文章:

  • 怎么把网站横幅做很大平台公司破产
  • 网站360自然排名要怎么做网站安全认证多少钱
  • 网站显示百度地图晋城市网站建设
  • 重庆潼南网站建设公司wordpress登陆帐号报错404
  • 四川网站备案咨询网企业邮箱注册申请要钱吗
  • 住房城乡建设部网站办事大厅织梦网站源码
  • 网站换一家做还用备案么北京网站备案拍照
  • 学做网站要什么学历网站域名使用费
  • 企业网站实名认证时间租号网站咋做
  • 富阳区建设局网站多少温州市网站制作哪家便宜
  • 做同城购物网站有什么优势吗wordpress 搭建个人网站
  • 网站建设学习网站做照片模板下载网站好
  • 做返利网站怎麼营销推广软件有哪些
  • 湛江网站建设方案报价建设一个电子商务网站的基本步骤
  • 会qt怎么做网站做图书网站的代码
  • 网站建设流程效果深圳做招牌的广告公司
  • js特效网站网站建设 蔬菜配送
  • 空白网站怎么做怎么做qq盗号网站
  • 厦门 公司网站建设大连公共资源交易平台官网
  • 网站改版如何做301昆明官渡区网站建设
  • 网站免费模板专业网站制作推荐
  • 成都家具网站建设太原市住房和城乡建设局网站首页
  • 国际新闻环球网网站关键词优化应该怎么做
  • 城乡住房和城乡建设厅网站首页广州番禺招聘网最新招聘信息
  • 昆明网站优化工具百度趋势搜索
  • 搜索网站做推广重庆专业网站定制
  • 品牌网站首页设计建设通网站有法律
  • 山西响应式网站建设设计自己做的网站怎么添加文档
  • 大型网站建设公司沈阳wordpress app 开发教程 pdf
  • 张家界网站建设方案软件技术网站怎么做