星空网 > 软件开发 > 数据库

ehcache应用场景及集群同步(RMI)

背景介绍:
      基于shiro新开发的权限认证系统,在授权部分采用ehcache作为缓存。系统采用分布式集群部署,因此需要配置ehcache支持集群间缓存的同步
1、配置两台tomcat,ip一致为本机IP
2、采用rmi方式实现缓存同步。修改ehcache配置文件,一般为ehcache.2.1<cacheManagerPeerProviderFactory
           
            properties="hostName=localhost,
        port=40001,
        socketTimeoutMillis=2000,
        peerDiscovery=manual,
        rmiUrls=//192.168.1.109:40002/sys-roleCache"/>
该配置用于发现集群中的CacheManager伙伴,也就是发现其他节点。采用peerDiscovery=manual人工配置的方式发现其他缓存管理器节点。
目前配置的发现节点为:192.168.1.109,端口为:40002,需要同步到cache名称为:sys-roleCache。
同时指定当前节点的hostName为localhost,端口为40001。通知远程超时时间:socketTimeoutMillis=2000ms
2.2<cacheManagerPeerListenerFactory

properties="hostName=localhost, port=40001,
socketTimeoutMillis=2000"/>
该配置为缓存同步消息的**工厂,用于创建缓存管理listener。
有效的属性是:
hostname (可选) – 运行**的服务器名称。标明了做为集群群组的成员的地址,同时也是你想要控制的从集群中接收消息的接口。
在CacheManager初始化的时候会检查hostname是否可用。
如果hostName不可用,CacheManager将拒绝启动并抛出一个连接被拒绝的异常。
如果指定,hostname将使用InetAddress.getLocalHost().getHostAddress()来得到。
警告:不要将localhost配置为本地地址127.0.0.1,因为它在网络中不可见将会导致不能从远程服务器接收信息从而不能复制。在同一台机器上有多个CacheManager的时候,你应该只用localhost来配置。
port – **监听的端口。 这里的端口要和PeerProviderFactory中port一致,否则将不会同步。
socketTimeoutMillis (可选) – Socket超时的时间。默认是2000ms。当你socket同步缓存请求地址比较远,不是本地局域网。你可能需要把这个时间配置大些,不然很可能延时导致同步缓存失败。
2.3<cache name="sys-roleCache"
           maxEntriesLocalHeap="2000"
           eternal="false"
           timeToIdleSeconds="3600"
           timeToLiveSeconds="0"
           memoryStoreEvictionPolicy="LFU"
           overflowToDisk="false"
           statistics="true">
        <cacheEventListenerFactory
               
                properties="replicateAsynchronously=true,
                            replicatePuts=true,
                            replicateUpdates=true,
                            replicateUpdatesViaCopy=false,
                            replicateRemovals=true"/>
        <bootstrapCacheLoaderFactory
                />
    </cache>
该配置为缓存事件**,指定创建缓存复制**的工厂为:RMICacheReplicatorFactory。
同时指定在容器启动的时候进行缓存同步。
缓存策略为:LFU,最近最少命中。
properties解释:
replicatePuts=true | false – 当一个新元素增加到缓存中的时候是否要复制到其他的peers. 默认是true。
replicateUpdates=true | false – 当一个已经在缓存中存在的元素被覆盖时是否要进行复制。默认是true。
replicateRemovals= true | false – 当元素移除的时候是否进行复制。默认是true。
replicateAsynchronously=true | false – 复制方式是异步的(指定为true时)还是同步的(指定为false时)。默认是true。
replicatePutsViaCopy=true | false – 当一个新增元素被拷贝到其他的cache中时是否进行复制指定为true时为复制,默认是true。
replicateUpdatesViaCopy=true | false – 当一个元素被拷贝到其他的cache中时是否进行复制(指定为true时为复制),默认是true。
 
思考问题:
1、为什么用ehcache及其使用场景
简单,快捷
支持分布式扩展
支持内存缓存和磁盘缓存
有多种缓存策略
适合最重要
缺点:内存不独立,多机器同步会出现延迟问题。
使用于更新少,单进程的应用场景。如果分布式部署建议还是用redis:
redis是键值对缓存服务器,可设置储存到硬盘中.
也就可以当数据库用.其访问效率较高.java中可使用jedit框架来操作redis.
虽然jedis提供了很多方法,如果只是使用缓存的话可不必关心太多,直接使用set/get方法即可.



原标题:ehcache应用场景及集群同步(RMI)

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

海外集运仓怎么联系:https://www.goluckyvip.com/tag/95446.html
海外品仓特卖是正品吗:https://www.goluckyvip.com/tag/95448.html
美国海外仓组费多少:https://www.goluckyvip.com/tag/95449.html
中邮渠道:https://www.goluckyvip.com/tag/9545.html
海外仓发货是正品吗:https://www.goluckyvip.com/tag/95450.html
哪些跨境电商有海外仓的:https://www.goluckyvip.com/tag/95455.html
一夜之间大批卖家货物被偷,又迎大量Listing将被下架!跨境赚钱"好日子"到头了?:https://www.goluckyvip.com/news/220219.html
晚上沈阳市区哪里好玩的地方 晚上沈阳有什么好玩的地方:https://www.vstour.cn/a/410235.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流