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

仓库系统erp好学吗制作网站找云优化

仓库系统erp好学吗,制作网站找云优化,珠宝商城网站模板免费下载,网站建设图片居中代码1. 什么是缓存穿透#xff0c;怎么解决#xff1f; 缓存穿透是指用户请求的数据在缓存中不存在即没有命中#xff0c;同时在数据库中也不存在#xff0c;导致用户每次请求该数据都要去数据库中查询一遍。如果有恶意攻击者不断请求系统中不存在的数据#xff0c;会导致短时…1. 什么是缓存穿透怎么解决 缓存穿透是指用户请求的数据在缓存中不存在即没有命中同时在数据库中也不存在导致用户每次请求该数据都要去数据库中查询一遍。如果有恶意攻击者不断请求系统中不存在的数据会导致短时间大量请求落在数据库上造成数据库压力过大甚至导致数据库承受不住而宕机崩溃。 缓存穿透的关键在于在Redis中查不到key值它和缓存击穿的根本区别在于传进来的key在Redis中是不存在的。假如有黑客传进大量的不存在的key那么大量的请求打在数据库上是很致命的问题所以在日常开发中要对参数做好校验一些非法的参数不可能存在的key就直接返回错误提示。 正常的查询流程 缓存穿透查询流程 解决方法 方案一缓存空数据 将无效的key存放进Redis中 当出现Redis查不到数据数据库也查不到数据的情况也将其缓存起来但设置一个较短的过期时间这样即使后续的恶意请求再次访问相同的键也能够从缓存中获取结果减轻数据库压力。但这种处理方式是有问题的假如传进来的这个不存在的Key值每次都是随机的那存进Redis也没有意义。 优点实现简单 缺点消耗内存可能会发生数据不一致的问题。 方案二布隆过滤器 使用布隆过滤器 在缓存之前再加一个布隆过滤器将数据库中的所有key都存储在布隆过滤器中在查询Redis前先去布隆过滤器查询 key 是否存在如果不存在就直接返回不让其访问数据库从而避免了对底层存储系统的查询压力。 布隆过滤器的设计实现原理 如果数据比较少可以把数据库中的数据全部放到内存的一个map中。这样能够非常快速的识别数据在缓存中是否存在。如果存在则让其访问缓存。如果不存在则直接拒绝该请求。但如果数据量太大全都放到内存中会占用太多的内存空间。因此要使用布隆过滤器。 布隆过滤器的底层使用bit数组存储数据该数组中的元素默认值为0。布隆过滤器第一次初始化的时候会把数据库中所有已存在的key经过一些列的hash算法比如三次hash算法计算每个key都会计算出多个位置然后把这些位置上的元素值设置成1。之后有用户key请求过来的时候再用相同的hash算法计算位置。 如果多个位置中的元素值都是1则说明该key在数据库中已存在。这时允许继续往后面操作。如果有1个以上的位置上的元素值是0则说明该key在数据库中不存在。这时可以拒绝该请求而直接返回。 但若布隆过滤器中存储的数据量过大会出现误判的情况即原本这个key在数据库中是不存在的但布隆过滤器确认为存在。同时如果数据库中的数据更新了需要同步更新布隆过滤器。但它跟数据库是两个数据源就可能存在数据不一致的情况。因此需要及时同步更新修改的内容。 误判率数组越小误判率就越大数组越大误判率就越小但是同时带来了更多的内存消耗。 优点内存占用较少没有多余key 缺点实现复杂存在误判 如何选择针对一些恶意攻击攻击带过来的大量key是随机那么我们采用第一种方案就会缓存大量不存在key的数据。那么这种方案就不合适了我们可以先对使用布隆过滤器方案进行过滤掉这些key。所以针对这种key异常多、请求重复率比较低的数据优先使用第二种方案直接过滤掉。而对于空数据的key有限的重复率比较高的则可优先采用第一种方式进行缓存。 2. 缓存雪崩及解决方案 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机导致大量请求到达数据库带来巨大压力。 解决方案 方案一均匀过期 设置不同的过期时间让缓存失效的时间尽量均匀避免相同的过期时间导致缓存雪崩造成大量数据库的访问。如把每个Key的失效时间都加个随机值setRedisKeyvaluetime Math.random() * 10000保证数据不会在同一时间大面积失效。 方案二构建缓存高可用集群针对缓存服务故障情况 方案三服务熔断、限流、降级等措施保障。 3. 缓存击穿及解决方案 缓存击穿跟缓存雪崩有点类似缓存雪崩是大规模的key失效而缓存击穿是某个热点的key失效大并发集中对其进行请求就会造成大量请求读缓存没读到数据从而导致高并发访问数据库引起数据库压力剧增。这种现象就叫做缓存击穿。 解决方案 方案一互斥锁 在缓存失效后通过互斥锁或者队列来控制读数据写缓存的线程数量比如某个key只允许一个线程查询数据和写缓存其他线程等待。这种方式会阻塞其他的线程此时系统的吞吐量会下降。单机通过synchronized或lock来处理分布式环境采用分布式锁。 原理线程1在查询缓存发现未命中的情况下获取互斥锁然后查询数据库重建缓存数据写入缓存后释放互斥锁。在线程1重建数据的时候线程2也未命中缓存想重建时在获取互斥锁时会失败只能休眠一会儿再次尝试直至线程1完成重建缓存的流程释放互斥锁后线程2再查询缓存并命中。 优点强一致性适用于严格要求缓存一致性的场景 缺点性能差 方案二 热点数据缓存永远不过期。永不过期实际包含两层意思 物理不过期针对热点key不设置过期时间逻辑过期把过期时间存在key对应的value里如果发现要过期了通过一个后台的异步线程进行缓存的构建。 原理线程1在查询缓存发现逻辑时间快过期时获取互斥锁然后后台开启一个新的线程查询数据库重建缓存数据写入缓存重置逻辑过期时间再释放锁。当线程2在查询缓存也发现逻辑时间快过期时获取互斥锁失败此时直接从缓存中返回过期的数据。 优点可用性高性能高 缺点存在数据不一致的情况适用于不严格要求缓存一致性的场景
http://www.hkea.cn/news/14270495/

相关文章:

  • 企业网站备案那么麻烦吗公司广告牌制作
  • 做文案策划需要用到的网站拼多多推广引流软件免费
  • 营商环境建设监督局网站网站开发毕业设计指导记录
  • 网站制作软件大全南宁建设学院官网
  • server 2012 做网站深圳宝安区天气预报
  • 学做室内效果图的网站个人网站申请空间
  • 建立网站大概投入互联网行业前景
  • 海淀做网站的网络公司电子商城网站建设方案
  • 小学英语教师做应用相关网站陕西省网站备案
  • 网站建设主要学什么软件17一起做网店网站
  • 三合一网站建站南京百度seo公司
  • 手机网站建设西安做网站哪个行业比较有前景
  • 吉林市网站建设清远手机网站建设
  • 公司网站建设劳伦阿里云支持wordpress
  • 长沙电信网站备案互联网
  • 手机网站会员中心模板下载做网站的基本流程
  • 广州建设行业信息网站sem是什么意思
  • 如何提升网站的收录量seo官网制作规划
  • 麻阳建设局网站网站制作公司网址
  • 企业网站管理系统 软件著作权电商推广技巧
  • 装修网站设计图推荐宝塔建站网址
  • 门户网站好处4000套微信小游戏源码
  • 网站开发怎么学唐山万唯网络科技有限公司
  • 网站建设 6万元怎样建设网站免费
  • 简单做网站的软件外国网站后台设计
  • 淘客手机网站模板wordpress discuz整合
  • 嘉兴路街道网站建设网站研发公司
  • 网站建设网页设计WordPress判断设备
  • 谁知道做网站的电话南通建设公司网站
  • 招生网站模板网络营销师报考条件