概述
Infinispan提供了两种模式:
- 本地模式 - Infinispan提供的非集群的模式,在本地模式下,Infinispan可看作是一个单节点的,在内存中的数据缓存。与集群模式相比,因为我们不会考虑集群的可扩展性,容错能力,等,这使得Infinispan性能更高,使用更高效。
- 集群模式 - 集群模式是多个Infinispan服务器(Infinispan实例)组成一个集群,集群中所有点构成一个数据网格。网格中某一节点的状态需要复制到其他所有节点,或节点的一个子集上。这个子集中节点数的多少确定了Infinispan数据网格的容错能力和可扩展性,子集节点数太大会阻碍Infinispan网格的可扩展性。集群模式中节点之间是通过JGroups来复制状态,我们在后面会做详细讨论。根据复制策略的不同,集群模式又可分为分布式模式,复制模式和模式
本地模式
尽管Infinispan主要特性体现在集群模式,Infinispan本地模式提供了需要实用高效的特性,Infinispan的Cache接口继承JDK的ConcurrentMap,和普通Map相比,Infinispan提供了如下特性:
- 缓存条目可通过缓存存储器保存到第三方存储服务器(关系数据库,No-SQL,云),并且可通过同步,异步的模式通过缓存存储器操作第三方存储服务器
- 缓存条目的逐出阻止Java虚拟机内存溢出
- 缓存条目的过期确保长时间未被使用的条目被移除
- JTA和XA支持使缓存操作有事务性的保证
- 基于MVCC的并发读处理确保缓存实体可被告诉的非阻塞的读取
Infinispan服务器的缓存容器
Infinispan服务器相当与一个缓存容器,容器中可以有多个缓存实体,这些缓存可以是本地的,也可以是集群的。Infinispan服务器提供协议(HotRod,Rest,Memcached)供客户端应用连接到服务器,对容器中的缓存进行操作。Infinispan服务器配置文件中cache-container属性表示缓存容器,这个属性中包括多个缓存的配置,包括本地缓存和集群缓存。如下为缓存容器简单配置,我们从JDG/standalone/configuration/standalone.xml中摘出。
-