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

深圳集团网站建设公司好建设银行 钓鱼网站

深圳集团网站建设公司好,建设银行 钓鱼网站,wordpress自动伪原创,网站商务通弹出窗口图片更换设置1 缓存穿透 什么是缓存穿透#xff1f; 大量请求的 key 是不合理的#xff0c;根本不存在于缓存中#xff0c;也不存在于数据库中 。导致这些请求直接到了数据库上#xff0c;根本没有经过缓存这一层#xff0c;对数据库造成了巨大的压力#xff0c;可能直接就被这么多…1 缓存穿透 什么是缓存穿透 大量请求的 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布隆过滤器 布隆过滤器是一个非常神奇的数据结构通过它我们可以非常方便地判断一个给定数据是否存在于海量数据中。我们需要的就是判断 key 是否合法有没有感觉布隆过滤器就是我们想要找的那个“人”。 具体是这样做的把所有可能存在的请求的值都存放在布隆过滤器中当用户请求过来先判断用户发来的请求的值是否存在于布隆过滤器中。不存在的话直接返回请求参数错误信息给客户端存在的话才会走下面的流程。 加入布隆过滤器之后的缓存处理流程图如下。 加入布隆过滤器之后的缓存处理流程图 但是需要注意的是布隆过滤器可能会存在误判的情况。总结来说就是布隆过滤器说某个元素存在小概率会误判。布隆过滤器说某个元素不在那么这个元素一定不在。 为什么会出现误判的情况呢? 我们还要从布隆过滤器的原理来说 我们先来看一下当一个元素加入布隆过滤器中的时候会进行哪些操作 使用布隆过滤器中的哈希函数对元素值进行计算得到哈希值有几个哈希函数得到几个哈希值。 根据得到的哈希值在位数组中把对应下标的值置为 1。 我们再来看一下当我们需要判断一个元素是否存在于布隆过滤器的时候会进行哪些操作 对给定元素再次进行相同的哈希计算 得到值之后判断位数组中的每个元素是否都为 1如果值都为 1那么说明这个值在布隆过滤器中如果存在一个值不为 1说明该元素不在布隆过滤器中。 然后一定会出现这样一种情况不同的字符串可能哈希出来的位置相同。 可以适当增加位数组大小或者调整我们的哈希函数来降低概率 更多关于布隆过滤器的内容可以看我的这篇原创《不了解布隆过滤器一文给你整的明明白白》 强烈推荐个人感觉网上应该找不到总结的这么明明白白的文章了。 2 缓存击穿 什么是缓存击穿 缓存击穿中请求的 key 对应的是 热点数据 该数据 存在于数据库中但不存在于缓存中通常是因为缓存中的那份数据已经过期 。这就可能会导致瞬时大量的请求直接打到了数据库上对数据库造成了巨大的压力可能直接就被这么多请求弄宕机了。 缓存击穿 举个例子秒杀进行过程中缓存中的某个秒杀商品的数据突然过期这就导致瞬时大量对该商品的请求直接落到数据库上对数据库造成了巨大的压力。 有哪些解决办法 设置热点数据永不过期或者过期时间比较长。 针对热点数据提前预热将其存入缓存中并设置合理的过期时间比如秒杀场景下的数据在秒杀结束之前不过期。 请求数据库写数据到缓存之前先获取互斥锁保证只有一个请求会落到数据库上减少数据库的压力。 3 缓存穿透 VS 缓存击穿 缓存穿透中请求的 key 既不存在于缓存中也不存在于数据库中。 缓存击穿中请求的 key 对应的是 热点数据 该数据 存在于数据库中但不存在于缓存中通常是因为缓存中的那份数据已经过期 。 4 缓存雪崩 什么是缓存雪崩 缓存雪崩描述的就是这样一个简单的场景缓存在同一时间大面积的失效导致大量的请求都直接落到了数据库上对数据库造成了巨大的压力。 这就好比雪崩一样摧枯拉朽之势数据库的压力可想而知可能直接就被这么多请求弄宕机了。 另外缓存服务宕机也会导致缓存雪崩现象导致所有的请求都落到了数据库上。 缓存雪崩 举个例子数据库中的大量数据在同一时间过期这个时候突然有大量的请求需要访问这些过期的数据。这就导致大量的请求直接落到数据库上对数据库造成了巨大的压力。 有哪些解决办法 针对 Redis 服务不可用的情况 采用 Redis 集群避免单机出现问题整个缓存服务都没办法使用。 限流避免同时处理大量的请求。 针对热点缓存失效的情况 设置不同的失效时间比如随机设置缓存的失效时间。 缓存永不失效不太推荐实用性太差。 设置二级缓存。 5 缓存雪崩 VS 缓存击穿 缓存雪崩和缓存击穿比较像但缓存雪崩导致的原因是缓存中的大量或者所有数据失效缓存击穿导致的原因主要是某个热点数据不存在与缓存中通常是因为缓存中的那份数据已经过期。
http://www.hkea.cn/news/14547433/

相关文章:

  • 嘉兴网站的优化台州关键词优化平台
  • 只有一个域名怎么做网站免费咨询问题
  • 天津模板建站代理云服务器建站
  • 网站域名改了以后新域名301平台宣传推广方案
  • 网站开发语言有什么微信小程序安装
  • 网站设计的基本流程是什么网页设计html代码大全动物
  • 网站设计报告模板及范文建设网站商城后台系统
  • 做新闻类网站如何盈利网址大全名称
  • 磁县邯郸网站建设百度投广告怎么收费
  • 建工厂网站的公司帮人管理网站做淘宝客
  • 网站建设亿金手指科杰上海知名网站
  • 南宁市企业网站建设制作网页的方法
  • 求推荐建设网站做品牌网站的企业
  • 玉田网站制作小程序制作开发加盟
  • 网站建设整体策划网站建设 51下拉平台
  • 景点与网站合作方案怎么做网站设计原则
  • 做网站需要用到什么技术网站路径问题
  • 沈阳h5建站如何说明学校网站建设情况
  • 召开网站建设培训会wordpress清新
  • 曾舜晞网站是哪个公司做的注册深圳公司需要多少钱
  • 电子商务网站模式苏州网站建设在哪里
  • dede 网站地图生成商丘网站推广的方法
  • 运营商网站服务密码怎么进入网络管理系统
  • 网站建设费用有哪些wordpress换个电脑登录
  • 手机网站定制 杭州wordpress 转 帝国
  • 网站什么意思wordpress 阅读更多
  • 网站推广的平台排名阿里巴巴网站建设目标
  • 离石做网站校园网二级网站的建设
  • 北京网站建设公司怎么样No酒类网站建设
  • 母婴网站建设的与功能模块广告传媒公司经营范围有哪些