• Redis 使用过程中遇到的具体问题


    1.缓存雪崩和缓存穿透问题

      1.1缓存雪崩

        简介:缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。

      解决办法:

         事前:尽量保证整个 redis 集群的高可用性,发现机器宕机尽快补上。选择合适的内存淘汰策略。
         事中:本地 ehcache 缓存 + hystrix 限流&降级,避免 MySQL 崩掉
         事后:利用 redis 持久化机制保存的数据尽快恢复缓存

    encache:
      Ehcache是纯java的开源缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。它主要面向通用缓存、Java EE和轻量级容器,具有内存和磁盘存储、缓存加载器、缓存扩展、缓存异常处理程序。
      
    应用场景:

      使用纯java的ehcache作为本地缓存
      Reids 作为远程分布式缓存
      解决redis缓存压力过大,提高缓存速度,以及缓存性能。

    redis和Ehcache缓存的区别
      如果是单个应用或者对缓存访问要求很高的应用,用ehcache。
      如果是大型系统,存在缓存共享、分布式部署、缓存内容很大的,建议用redis。

    实际工作中使用Ehcache
      我们在项目中使用集中式缓存(Redis或者式Memcached等),通常都是检查缓存中是否存在
    期望值的数据,如果存在直接返回,如果不存在就查询数据库然后在将数据库缓存,这个时候如果缓存系统因为某些原因宕机,造成服务无法访问,那么大的量请求直接穿透到数据库,最数据库压力非常大。

    这时候我们让ehcache作为二级缓存,当redis服务器宕机后,可以查询ehcache缓存。
    这样能够有效的扛住服务器请求压力。
    因此, 一般 Redis作为一级缓存, ehcache作为二级缓存。


    hystrix :

      简介:在分布式系统中,单个应用通常会有多个不同类型的外部依赖服务,内部通常依赖于各种RPC服务,外部则依赖于各种HTTP服务。这些依赖服务不可避免的会出现调用失败,比如超时、异常等情况,如何在外部依赖出问题的情况,仍然保证自身应用的稳定。Hystrix的目标就是能够在1个或多个依赖出现问题时,系统依然可以稳定的运行,其手段包括隔离、限流和降级等。

    服务限流:

      通过线程池+队列的方式,通过信号量的方式。比如商品评论比较慢,最大能同时处理10个线程,队列待处理5个,那么如果同时20个线程到达的话,其中就有5个线程被限流了,其中10个先被执行,另外5个在队列中

    服务熔断:

      当依赖的服务有大量超时时,在让新的请求去访问根本没有意义,只会无畏的消耗现有资源,比如我们设置了超时时间为1s,如果短时间内有大量请求在1s内都得不到响应,就意味着这个服务出现了异常,此时就没有必要再让其他的请求去访问这个服务了,这个时候就应该使用熔断器避免资源浪费

    服务降级:

      所谓降级,就是当某个服务熔断之后,服务将不再被调用,此时客户端可以自己准备一个本地的fallback(回退)回调,返回一个缺省值。 例如:(备用接口/缓存/mock数据),这样做,虽然服务水平下降,但好歹可用,比直接挂掉要强,当然这也要看适合的业务场景


      1.2缓存穿透

         简介:一般是黑客故意去请求缓存中不存在的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。
       解决办法: 有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的 bitmap 中,一个一定不存在的数据被 这个 bitmap 拦截掉,从而避免了对底层存储系统的查询压力。另外也有一个更为简单粗暴的方法(我们采用的就是这种),如果一个查询返回的数据为空(不管是数 据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。
  • 相关阅读:
    审核系统
    ehcache 缓存
    tomcat 内存设置
    html5 开发 跨平台 桌面应用
    service thread 结合使用
    html5桌面应用
    鼠标 事件
    服务器 判断 客户端 文件下载
    使用github管理Eclipse分布式项目开发
    uub代码
  • 原文地址:https://www.cnblogs.com/crazy-lc/p/11802530.html
Copyright © 2020-2023  润新知