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

建设网站后需要什么知识郑州中心城区

建设网站后需要什么知识,郑州中心城区,同一素材 不同的布局网站设计,网站建设销售技巧在使用缓存时特别是在高并发场景下会遇到很多问题#xff0c;常用的问题有缓存穿透、缓存击穿、缓存雪崩以及缓存一致性问题。 1、缓存穿透 首先#xff0c;什么是缓存穿透呢#xff1f; 缓存穿透是指请求一个不存在的数据#xff0c;缓存层和数据库层都没有这个数据… 在使用缓存时特别是在高并发场景下会遇到很多问题常用的问题有缓存穿透、缓存击穿、缓存雪崩以及缓存一致性问题。 1、缓存穿透 首先什么是缓存穿透呢 缓存穿透是指请求一个不存在的数据缓存层和数据库层都没有这个数据这种请求会穿透缓存直接到数据库进行查询。它通常发生在一些恶意用户可能故意发起不存在的请求试图让系统陷入这种情况以耗尽数据库连接资源或者造成性能问题。 解决方案 增加校验机制 例如我们规定执行查询语句时id必须是长整型而且是固定长度的格式如果请求的id不符合则不再查询数据库。这种方案可以解决一部分的问题还是有一定的可行性的。 缓存一个空值或者特殊值 在查询数据库的时候发现数据不存在此时我们依旧进行缓存而不是直接返回。在这个时候我们可以缓存一个特殊值或者空值避免下次请求再去访问数据库从而避免缓存穿透。 使用布隆过滤器 后续更新。。。 2、缓存击穿 首先缓存击穿是什么呢 缓存击穿发生在访问热点数据大量请求访问同一个热点数据当热点数据失效后同时去请求数据库瞬间耗尽数据库资源导致数据库无法使用。前提是有大量的并发。 比如某手机新品发布当缓存失效时有大量并发到来导致同时去访问数据库。 解决方案 使用锁 单体架构下单进程内可以使用同步锁控制查询数据库的代码只允许有一个线程去查询数据库查询得到数据库存入缓存。 synchronized(obj){//查询数据库//存入缓存 } 分布式架构下多个进程之间可以使用分布式锁进行控制。 // 获取分布式锁对象 RLock lock redisson.getLock(myLock); try {// 尝试加锁最多等待99秒加锁后自动解锁时间为30秒boolean isLocked lock.tryLock(99, 30, java.util.concurrent.TimeUnit.SECONDS);if (isLocked) {//查询数据库//存入缓存} else {System.out.println(获取锁失败可能有其他线程持有锁);} } catch (InterruptedException e) {e.printStackTrace(); } finally {// 释放锁lock.unlock();System.out.println(释放锁...); } 此处分布式锁的实现方式有多种大家可自行了解我这里使用的是redisson 缓存预热 分为提前预热、定时预热。提前预热就是提前写入缓存。定时预热是使用定时程序去更新缓存。 热点数据不过期 可以由后台程序提前将热点数据加入缓存缓存过期时间不过期由后台程序做好缓存同步。 热点数据查询降级处理 对热点数据查询定义单独的接口当缓存中不存在时走降级方法避免查询数据库。 3、缓存雪崩 什么是缓存雪崩呢 缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库瞬间耗尽数据库资源导致数据库无法使用。 例如对不同的几类信息设置相同的过期时间在大量请求第一次查询这些信息时会写入缓存当中当过期时间一到就会有大量的信息访问数据库从而引发雪崩问题。 解决方案 对同一类型信息的key设置不同的过期时间 通常对一类信息的key设置的过期时间是相同的这里可以在原有固定时间的基础上加上一个随机时间使它们的过期时间都不相同。 例如 Beanpublic RedisCacheManager cacheManagerOneDay(RedisConnectionFactory connectionFactory) {int randomNum new Random().nextInt(9999);RedisCacheConfiguration config RedisCacheConfiguration.defaultCacheConfig()//过期时间为基础时间加随机数.entryTtl(Duration.ofSeconds(48 * 60 * 60L randomNum)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(JACKSON_SERIALIZER));return RedisCacheManager.builder(connectionFactory).cacheDefaults(config).transactionAware().build();}使用锁进行控制 思路同缓存击穿。 缓存定时预热 不用等到请求到来再去查询数据库存入缓存可以提前将数据存入缓存。使用缓存预热机制通常有专门的后台程序去将数据库的数据同步到缓存。 4、缓存数据不一致问题 什么数缓存数据不一致呢 缓存不一致问题是指当发生数据变更后该数据在数据库和缓存中是不一致的此时查询缓存得到的并不是与数据库一致的数据。 经典案例双写不一致 解决方案 使用分布式锁 延迟双删 延迟多长时间呢 主数据向从数据库同步的时间间隔如果延迟时间设置不合理也会导致数据不一致。 使用canalmq的方式 延迟双删的目的也是为了保证最终一致性即允许缓存短暂不一致最终保证一致性。 保证最终一致性的方案有很多比如通过MQ、Canal、定时任务都可以实现。 Canal是一个数据同步工具读取MySQL的binlog日志拿到更新的数据再通过MQ发送给异步同步程序最终由异步同步程序写到redis。此方案适用于对数据实时性有一定要求的场景。 通过Canal加MQ异步任务方式流程如下 流程如下 线程1写数据库 canal读取binlog日志将数据变化日志写入mq 同步程序监听mq接收到数据变化的消息 同步程序解析消息内容写入redis写入redis成功正常消费完成消息从mq删除。 定时任务方式流程如下 专门启动一个数据同步任务定时读取数据同步到redis此方式适用于对数据实时性要求不强更新不频繁的数据。
http://www.zqtcl.cn/news/762228/

相关文章:

  • 360建站系统徐州建设银行网上银行个人网站
  • 网站域名在哪里备案石家庄站规模
  • 重庆南川网站制作公司电话工会网站群建设
  • 深圳高端建设网站忘了网站链接怎么做
  • 郑州做网站报价wordpress中文4.8
  • 网站维护费用一年多少跨境电商平台网站建设广州
  • 辽宁网站制作公司网店装修流程
  • html5可以做交互网站吗打开网站说建设中是什么问题?
  • 彩票网站开发制作需要什么wordpress 在线预览
  • 外贸平台app衡水seo排名
  • 怎样做网站表白墙东莞商城网站推广建设
  • 郑州郑州网站建设河南做网站公司哪家好爱站长尾词挖掘工具
  • dede网站地图文章变量网站qq 微信分享怎么做
  • 越南做网站网站建设以及运营方面
  • 广西建网站哪家好网站关闭与域名备案
  • 网站开发版本号婚庆网站建设策划案费用预算
  • 厦门建设网站制作中山市哪家公司做网站
  • 网站路径wordpress制作电商网站
  • 江西网站开发哪家专业装饰设计公司网站
  • 企业网站策划实训Wordpress 主题简化
  • 做网站点击挣钱不兰州工程建设信息网站
  • 网站说服力 营销...免费看片网站
  • 深圳招聘网站大全制作网站软件下载
  • 网站建设说明哈尔滨网站建设渠道
  • 一 网站建设管理基本情况设计类的网站
  • wordpress产品编辑如何优化wordpress
  • 网站后台更新缓存失败网站平台规划方案
  • 网站开发需求分析主要内容saas建站系统是怎么实现的
  • 做qq头像的网站有哪些wordpress怎么部署到虚拟linux服务器
  • 征求网站建设企业网站建设word