zoukankan      html  css  js  c++  java
  • 在集群环境中使用 EhCache 缓存系统|RMI 集群模式

    RMI 是 Java 的一种远程方法调用技术,是一种点对点的基于 Java 对象的通讯方式。EhCache 从 1.2 版本开始就支持 RMI 方式的缓存集群。在集群环境中 EhCache 所有缓存对象的键和值都必须是可序列化的,也就是必须实现 java.io.Serializable 接口,这点在其它集群方式下也是需要遵守的。

    采用 RMI 集群模式时,集群中的每个节点都是对等关系,并不存在主节点或者从节点的概念,因此节点间必须有一个机制能够互相认识对方,必须知道其它节点的信息,包括主机地址、端口号等。EhCache 提供两种节点的发现方式:手工配置和自动发现。手工配置方式要求在每个节点中配置其它所有节点的连接信息,一旦集群中的节点发生变化时,需要对缓存进行重新配置。

    由于 RMI 是 Java 中内置支持的技术,因此使用 RMI 集群模式时,无需引入其它的 Jar 包,EhCache 本身就带有支持 RMI 集群的功能。使用 RMI 集群模式需要在 ehcache.xml 配置文件中定义 cacheManagerPeerProviderFactory 节点。假设集群中有两个节点,分别对应的 RMI 绑定信息是: 节点 1 192.168.0.11 4567 /oschina_cache 节点 2 192.168.0.12 4567 /oschina_cache 节点 3 192.168.0.13 4567 /oschina_cache

    那么对应的手工配置信息如下:

    <cacheManagerPeerProviderFactory
        class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
        properties="hostName=localhost,
        port=4567,
        socketTimeoutMillis=2000,
        peerDiscovery=manual,
        rmiUrls=//192.168.0.12:4567/oschina_cache|//192.168.0.13:4567/oschina_cache"
    />
    

     其它节点配置类似,只需把 rmiUrls 中的两个 IP 地址换成另外两个节点对应的 IP 地址即可。
    接下来在需要进行缓存数据复制的区域(Region)上配置如下即可:

    <cache name="sampleCache2"
        maxElementsInMemory="10"
        eternal="false"
        timeToIdleSeconds="100"
        timeToLiveSeconds="100"
        overflowToDisk="false">
        <cacheEventListenerFactory
            class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
            properties="replicateAsynchronously=true,
        replicatePuts=true,
        replicateUpdates=true,
            replicateUpdatesViaCopy=false,
        replicateRemovals=true "/>
    </cache>
    

      

    具体每个参数代表的意义请参考 EhCache 的手册,此处不再详细说明。

    EhCache 的 RMI 集群模式还有另外一种节点发现方式,就是通过多播( multicast )来维护集群中的所有有效节点。这也是最为简单而且灵活的方式,与手工模式不同的是,每个节点上的配置信息都相同,大大方便了节点的部署,避免人为的错漏出现。 在上述三个节点的例子中,配置如下:

    <cacheManagerPeerProviderFactory
        class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
        properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,
        multicastGroupPort=4446, timeToLive=32"
    />
    

     其中需要指定节点发现模式 peerDiscovery 值为 automatic 自动;同时组播地址可以指定 D 类 IP 地址空间,范围从 224.0.1.0 到 238.255.255.255 中的任何一个地址。 

     作者:Mr.zhang&Ms.s

  • 相关阅读:
    jq中$(function(){})与原生window.onload的区别
    利用window.parent调用Iframe父页面变量、方法的爬坑之路
    前端跨域3种基本解决方案
    MySQL按日期分组统计(按天统计,按月统计)
    go读取文件内容写入另一文件中
    C++中函数返回值是一个对象时的问题
    docker构建dpdk运行环境镜像
    NFS服务安装
    tesseract-4.0.0源码编译安装
    linux系统设置cpu孤立
  • 原文地址:https://www.cnblogs.com/lowerCaseK/p/Ehcache_rmi.html
Copyright © 2011-2022 走看看