• 分布式缓存-01概览


    01分布式缓存概览

    使用原因

      为什么要使用分布式缓存,很简单的一点你当前的系统性能已经不适用于你的业务量就不得不升级你的系统提高系统性能,从哪几个方面提高,优化代码,优化数据库,使用静态数据,只有在单机已经没有办法满足业务的情况下才会去考虑集群然后才是分布式

    分布式意味着你要将原来的系统拆分成多个服务,这就涉及到服务之间的调用以及数据的一致性问题。将单机变为分布式以后,系统的性能并发有了足够的提升但是数据库的压力大了起来大量的数据库I/O操作消耗大量的资源。怎么减轻数据库的压力,把从磁盘读的

    数据放到内存减少磁盘I/O操作也就是缓存,把缓存分到多台服务器就是分布式缓存。

    应用场景

      01-页面缓存

          我们在访问某一个网站的时候,请求发送到后台,后台从数据库查询到数据后并进行渲染之后返回,这个过程的资源消耗在数据的读取和渲染,所以需要在进入读数据之前从缓存中找缓存中没有再从数据库查询渲染并存入缓存

      02-状态缓存

          解决分布式Web部署的session同步问题,状态缓存.缓存包括Session 会话状态及应用横向扩展时的状态数据等,这类数据一般是难以恢复的,对可用性要求较高。

      03-并行处理

          分布式计算中,中间数据的共享问题

       04-事务处理

          分布式事务的数据在缓存与数据库中的一致性问题

        06-热点数据

          在并发量大的系统中,访问频率高的热点数据

    应用技术

      07-Ehcache

        Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。

        主要的特性有:
       1. 快速
       2. 简单
       3. 多种缓存策略
       4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
       5. 缓存数据会在虚拟机重启的过程中写入磁盘
       6. 可以通过RMI、可插入API等方式进行分布式缓存
       7. 具有缓存和缓存管理器的侦听接口
       8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
       9. 提供Hibernate的缓存实现

     09-Memcached

       1.适用于较大数据的缓存
       2.服务器端无分布式功能,取决于客户端的实现
       3.是一个纯粹的内存数据库,没有数据持久化的实现,内存挂了数据就没了
       4.多线程

     10-Redis

        1.单条线程
        2.支持多种数据结构
        3.支持数据持久化
        4.操作具有原子性,支持事务

      问题与挑战

       11-数据一致性

          在分布式系统中,由于网络或各种各样的问题可能导致数据库中的数据与缓存中的数据不一致

       参考:https://blog.csdn.net/chenyiminnanjing/article/details/82763928

        12-缓存穿透

          缓存穿透是查询缓存中根本不存在的数据,缓存中不存在就会往数据库查询,导致数据库的压力增大读数据的时间增长。

           解决方案:

         13-缓存雪崩

           在一段时间内,大量的缓存数据消失导致数据库的访问量增加

        

  • 相关阅读:
    thoughtworks家庭作业C++版本
    删除数组中等于某个key的所有元素
    一些必读的开源项目
    库函数strlen源码重现及注意问题
    判断相同树或者对称树
    约瑟夫环问题
    Loadrunner 脚本录制策略
    品味性能之道<十一>:JAVA中switch和if性能比较
    白盒静态自动化测试工具:FindBugs使用指南
    六个步骤把资料转换成知识
  • 原文地址:https://www.cnblogs.com/saozhou/p/11508017.html
Copyright © 2020-2023  润新知