分布式缓存-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等特点。
09-Memcached
10-Redis
问题与挑战
11-数据一致性
在分布式系统中,由于网络或各种各样的问题可能导致数据库中的数据与缓存中的数据不一致
参考:https://blog.csdn.net/chenyiminnanjing/article/details/82763928
12-缓存穿透
缓存穿透是查询缓存中根本不存在的数据,缓存中不存在就会往数据库查询,导致数据库的压力增大读数据的时间增长。
解决方案:
13-缓存雪崩
在一段时间内,大量的缓存数据消失导致数据库的访问量增加