分布式缓存(二)

分布式缓存:EHcache、Memcached、Redis等缓存框架,主要的特点是什么?分别适用于哪些业务场景?

 EHcache: 是java 平台上比较优秀的缓存框架,是从hibernate的缓存开始被广泛使用起来的。数据可以伸缩到数G字节,节点可以到数百个,提供了对JSR107 JCACHE API最完整的实现。节点发现,冗余器和监听器都可以插件化。同时,提供了许多对缓存事件发生后的处理机制,兼具灵活性和扩展性。EHcache 在很多企业级应用中应用广泛。

(mybatis整合一级二级缓存是ehcache)

1.特点:

 

  • 存取速度非常快,性能很不错。
  • 可以应用多种缓存策略。
  • 分级缓存,用户可以指定哪些数据在硬盘中缓存,哪些数据在内存中缓存。
  • 可以通过RMI、可插入API等方式进行分布式缓存。
  • 具有缓存和缓存管理器的侦听接口。
  • 支持多缓存管理器实例,以及一个实例的多个缓存区域。
  • 默认提供Hibernate的缓存实现。
2.缓存数据淘汰策略

FIFO:先进先出
LFU:最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。
LRU:最近最少使用,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。

3.数据过期策略 

Ehcache采用的是懒淘汰机制,每次往缓存放入数据的时候,都会存一个时间,在读取的时候要和设置的时间做TTL比较来判断是否过期。

4.Ehcache在集群、分布式的情况下表现如何
1)RMI组播方式
当缓存改变时,ehcache会向组播IP地址和端口号发送RMI UDP组播包。
缺陷:Ehcache的组播做得比较初级,功能只是基本实现(比如简单的一个HUB,接两台单网卡的服务器,互相之间组播同步就没问题),对一些复杂的环境(比如多台服务器,每台服务器上多地址,尤其是集群,存在一个集群地址带多个物理机,每台物理机又带多个虚拟站的子地址),就容易出现问题。 

2)P2P方式
原理:P2P要求每个节点的Ehcache都要指向其他的N-1个节点。

3)JMS消息模式

这种模式的核心就是一个消息队列,每个应用节点都订阅预先定义好的主题,同时,节点有元素更新时,也会发布更新元素到主题中去。各个应用服务器节点通过侦听MQ获取到最新的数据,然后分别更新自己的Ehcache缓存,Ehcache默认支持ActiveMQ,我们也可以通过自定义组件的方式实现类似Kafka,RabbitMQ。

4)Cache Server模式
原理:这种模式会存在主从节点。

 

Memcached:是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。Memcached 支持对象缓存,一度成为很多互联网应用的首选,尤其是与mysql数据库的高度集成。

 

Redis: 是一款高级键值对缓存和存储系统,在应用级缓存中的作用举足轻重。Redis支持主从同步,可执行单层树状复制。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树的时侯,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有作用。Redis 3.0版本加入cluster功能,解决了Redis单点无法横向扩展的问题。Redis 是当前互联网应用的主流缓存架构

posted @ 2019-08-29 15:53  暖暖-木木  阅读(172)  评论(0编辑  收藏  举报