动态高速缓存服务多单元和多核心组失效
动态高速缓存服务多单元和多核心组失效可使得无需跨单元边界复制高速缓存条目,即可使在不同单元中创建的高速缓存同步。为 Servlet 和对象高速缓存实例启用了此功能时,在单元处理同一流量时,会将数据高速缓存在这两个单元中。当高速缓存条目失效时,使用 Java 消息服务 (JMS) 将已失效的高速缓存条目的标识发送至对等单元。接收单元使用服务集成总线来处理失效。还可以使用此功能将失效传播到同一单元中的其他核心组。
动态高速缓存外部高速缓存适配器 ExternalCacheAdapter (ECA) 用来从服务器捕获失效。JMS/服务集成总线用来在远程单元或核心组中发送和接收失效。创建了其他应用程序服务器来主管失效应用程序。这些服务器将自动成为服务集成总线的成员。这些应用程序服务器将处理来自远程单元的失效(由 JMS 消息组成),并将它们发送至本地单元中的集群成员。
外部高速缓存适配器 com.ibm.websphere.servlet.cache.RemoteInvalidator 用来将已失效的高速缓存的标识发送至远程单元中的服务集成总线。此类型的外部高速缓存适配器使用 JMS 队列连接工厂 JNDI 名称和远程服务集成总线的队列目标名称作为地址,而不是指定地址的 host:port:
Adapter bean name = com.ibm.websphere.servlet.cache.RemoteInvalidator
Address = JMS_QUEUE_CONNECTION_FACTORY_JNDI_NAME, REMOTE_QUEUE_DESTINATION_NAME
- 每一个单元或核心组都包含用于主管生产应用程序的集群。必须在单元或核心组中都使用相同的生产应用程序才能确保正确处理失效标识。
- 在每个单元或核心组中创建了由两个服务器组成的单独集群,用于主管服务集成总线。此集群的成员无法定义外部高速缓存组 RemoteJMSInvalidator。如果为这些集群成员定义了外部高速缓存组 RemoteJMSInvalidator,那么会发生无限回送的情况,在单元之间将来回反复发送失效。
- 定义了数据源,可从服务集成总线集群成员访问该数据源。如果这两个单元共享该数据库,请确保在为每一个单元定义每一个数据源时,使用唯一的数据库名称。
- 每一个单元或核心组都包含复制域,该复制域同时包含服务集成总线集群以及用于主管生产应用程序的所有集群。
- com.ibm.ws.cache.CacheConfig.interCellReplication
- enableInterCellInvalidation
配置注意事项
WAS_INSTALL_ROOT/profiles/Dmgr01/bin)
Servlet 或对象高速缓存实例的配置应当可用于核心组中的两个集群。可以使用属性文件、工厂或者管理控制台来配置 Servlet 或对象高速缓存实例。必须在单元范围设置此配置,并且此配置必须同时可用于服务集成总线以及核心组中的生产集群。确保此可用性的最容易的方法是,安装应用程序时,在 Web 生产集群和服务集成总线集群中都创建和定义高速缓存实例。
cache.instance.0=/services/cache/instance_one
cache.instance.0.cacheSize=1000
cache.instance.0.enableInterCellInvalidation=true
Properties p = new Properties();
==>p.put("com.ibm.ws.cache.CacheConfig.enableInterCellInvalidation", "true");
DistributedMap map1 = DistributedMapFactory.getMap("myMap", p);
要在管理控制台中设置这些属性,请单击服务器 > 应用程序服务器 >server_name,然后在“服务器基础结构”部分单击 Java™ 和流程管理 > 流程定义 > 控制 > Java 虚拟机 > 定制属性,或者单击资源 > 高速缓存实例 > 对象高速缓存实例 > cache_instance_name。
要在管理控制台中设置这些属性,请单击服务器 > 应用程序服务器 > server_name,然后在“服务器基础结构”部分单击 Java 和流程管理 > 流程定义 > Java 虚拟机 > 定制属性,或者单击资源 > 高速缓存实例 > 对象高速缓存实例 > cache_instance_name。
- 配置入站 JMS/服务集成总线,在此步骤中将执行下列操作:
- 创建服务集成总线以及指定服务集成总线目标。
- 创建 JMS 队列。
- 激活 JMS。
- 在服务集成总线集群中安装 WAS_INSTALL_ROOT/installables/DynacacheMessageHandler.ear 文件,这是一个消息驱动的 Bean。
- 配置出站 JMS/服务集成总线,这包括配置 JMS 队列连接工厂。
- 配置外部高速缓存组,这包括配置外部高速缓存组以及在用于主管生产应用程序的每个集群成员上配置外部高速缓存适配器。
调整注意事项
- dynacache.jms.connRetryInterval
- 指定集群成员在尝试重新连接至服务集成总线服务器之前将等待的秒数。缺省值为 30。
- dynacache.jms.numStoredInvalidations
- 指定集群成员在等待服务集成总线服务器变得可用时可以存储的失效标识的最大数目。达到该阈值之后,将移除最旧的失效。缺省值为 10000。
- dynacache.jms.cacheInstance
- 指定要用于处理失效的高速缓存实例。将此属性设置为“*”将致使对所有高速缓存实例处理失效标识。缺省情况下,将使用 baseCache 高速缓存实例。此属性仅适用于服务集成总线服务器。
- dynacache.jms.invProcessingDelay
- 指定服务集成总线服务器在处理失效标识之前使其进行排队的秒数。缺省值为 20。