`
newleague
  • 浏览: 1499565 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

分布式缓存集群环境配置

 
阅读更多

ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序列实现集群。

首推荐官方文档:http://ehcache.org/documentation/distributed_caching.html

下面是来自javaeye的一篇文章,略有补充,算是实践总结吧

Ehcache支持的分布式缓存支持有三种RMI,JGroups,JMS,这里介绍下MRI和JGrpups两种方式,Ehcache使用版本为1.5.0,关于ehcache的其他信息请参考http://ehcache.sourceforge.net/EhcacheUserGuide.html

关于jgroups的信息请参考http://www.jgroups.org/manual/html_single/index.html。

环境为两台机器 server1 ip:192.168.2.154,server2 ip:192.168.2.23

1. RMI方式:

rmi的方式配置要点(下面均是server1上的配置,server2上的只需要把ip兑换即可)

a. 配置PeerProvider:

Xml代码

<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
properties="peerDiscovery=manual,rmiUrls=//192.168.2.23:40001/userCache|//192.168.2.23:40001/resourceCache" />
 

配置中通过手动方式同步sever2中的userCache和resourceCache。

b. 配置CacheManagerPeerListener:

Xml代码

<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" 
properties="hostName=192.168.2.154, port=40001,socketTimeoutMillis=2000" />
 

配置中server1监听本机40001端口。

c. 在每一个cache中添加cacheEventListener,例子如下:

Xml代码

<cache name="userCache" maxElementsInMemory="10000" eternal="true" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0" diskPersistent="false" diskExpiryThreadIntervalSeconds="120">
        <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"     properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " />
</cache>

属性解释:

必须属性:

        name:设置缓存的名称,用于标志缓存,惟一

        maxElementsInMemory:在内存中最大的对象数量

        maxElementsOnDisk:在DiskStore中的最大对象数量,如为0,则没有限制

        eternal:设置元素是否永久的,如果为永久,则timeout忽略

        overflowToDisk:是否当memory中的数量达到限制后,保存到Disk

可选的属性:

        timeToIdleSeconds:设置元素过期前的空闲时间

        timeToLiveSeconds:设置元素过期前的活动时间

        diskPersistent:是否disk store在虚拟机启动时持久化。默认为false

   diskExpiryThreadIntervalSeconds:运行disk终结线程的时间,默认为120秒

        memoryStoreEvictionPolicy:策略关于Eviction

缓存子元素:

    cacheEventListenerFactory:注册相应的的缓存监听类,用于处理缓存事件,如put,remove,update,和expire

    bootstrapCacheLoaderFactory:指定相应的BootstrapCacheLoader,用于在初始化缓存,以及自动设置。

参考另外一篇学习笔记http://wozailongyou.javaeye.com/blog/230252,也有集群的说明

2. JGroups方式:

ehcache 1.5.0之后版本支持的一种方式,配置起来比较简单,要点:

a. 配置PeerProvider,使用tcp的方式,例子如下:

Xml代码

<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory"
        properties="connect=TCP(start_port=7800):
        TCPPING(initial_hosts=192.168.2.154[7800],192.168.2.23[7800];port_range=10;timeout=3000;
        num_initial_members=3;up_thread=true;down_thread=true):
        VERIFY_SUSPECT(timeout=1500;down_thread=false;up_thread=false):
        pbcast.NAKACK(down_thread=true;up_thread=true;gc_lag=100;retransmit_timeout=3000):
        pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;
        print_local_addr=false;down_thread=true;up_thread=true)" 
        propertySeparator="::" />

 

b.为每个cache添加cacheEventListener:

Xml代码

<cache name="userCache" maxElementsInMemory="10000" eternal="true"
        overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0"
        diskPersistent="false" diskExpiryThreadIntervalSeconds="120">
        <cacheEventListenerFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory"
            properties="replicateAsynchronously=true, replicatePuts=true,
                   replicateUpdates=true, replicateUpdatesViaCopy=false, replicateRemovals=true"/>
</cache>

JGroup方式配置的两个server上的配置文件一样,若有多个server,在initial_hosts中将server ip加上即可。

一个完整的ehcache.xml文件:

Xml代码

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ehcache.sf.net/ehcache.xsd">
    <diskStore path="java.io.tmpdir" />
 
    <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory"
        properties="connect=TCP(start_port=7800):
        TCPPING(initial_hosts=192.168.2.154[7800],192.168.2.23[7800];port_range=10;timeout=3000;
        num_initial_members=3;up_thread=true;down_thread=true):

<script type="text/javascript"></script>

分享到:
评论

相关推荐

    本地缓存与分布式缓存优缺点,使用

    本地缓存与分布式缓存优缺点、使用场景 缓存是计算机系统中的一种优化技术,通过将频繁访问的数据存储在内存中,以减少对外部存储设备的访问次数,提高系统的响应速度和性能。本文将详细介绍本地缓存与分布式缓存的...

    Ehcache分布式缓存与其在SpringBoot应用

    1. **环境配置**:首先,你需要在SpringBoot的`pom.xml`文件中添加Ehcache和相关依赖。同时,在`application.properties`或`application.yml`文件中配置Ehcache的相关参数,例如缓存的大小、过期时间等。 2. **...

    浅谈电商支撑系统中分布式缓存管理技术的研究与实现.pdf

    在维护分布式缓存集群时,监控模块是不可或缺的。它通常包含缓存服务器监控、缓存实例监控、缓存应用拓扑监控和缓存集群监控四个部分。缓存服务器监控的目的是确保缓存集群中的服务器本身运行良好,监控其CPU使用率...

    java缓存实现与spring托管

    0. 文档介绍 2 0.1 文档目的 2 0.2 文档范围 2 0.3 读者对象 2 0.4 参考文献 2 0.5 术语与缩写解释 2 1. 概述 3 1.1背景 3 1.2 主要特征 3 ...4. 分布式缓存集群环境配置 19 4.1 集群配置方式 19 5. 测试用例 28

    基于ZooKeeper的分布式缓存的设计与实现.pdf

    ZooKeeper被设计为一个高性能的分布式协调服务框架,可以管理分布式环境中各个缓存服务器之间的共享状态数据,以支持分布式缓存系统的稳定运行。ZooKeeper本质上是一个分布式的小文件存储系统,可以维护和协调分布式...

    分布式缓存服务器memcacaed的源代码

    分布式缓存服务器Memcached是互联网应用中广泛使用的内存对象缓存系统,用于减轻数据库的负载,提高应用程序的性能。Memcached的设计目标是简单且高效,它通过在内存中存储数据来提供快速的数据访问。让我们深入了解...

    云计算环境下分布式缓存技术的现状与挑战.pdf

    利用分布式缓存系统的高可用架构设计,如使用集群、副本等技术来提高系统的容错性;以及采用先进的加密技术和访问控制策略来增强数据安全性。 分布式缓存技术的发展还处在不断进步中,它在云计算环境下的应用前景...

    MDCAdminTool 微软分布式缓存 管理工具

    这通常包括设置缓存节点、配置缓存集群、定义缓存策略等步骤。一旦Velocity环境准备就绪,你可以启动MDCAdminTool来监控和管理缓存实例,查看性能指标,进行添加、删除、更新缓存项的操作,以及配置和调整缓存设置。...

    基于JGROUPS的ehcache的分布式缓存复制

    在压缩包文件“ehcache”中,可能包含了Ehcache的相关文档、示例代码或者配置文件,这些资源可以帮助开发者更深入地理解Ehcache的使用和配置,以及如何利用JGROUPS实现高效的分布式缓存复制。 总的来说,基于...

    JAVA分布式缓存文档

    ### JAVA分布式缓存知识点概述 #### 一、引言 Hazelcast作为一款高性能的分布式内存数据网格系统,在Java领域内被广泛应用于构建分布式应用程序。本文档基于版本2.6.5,旨在深入探讨Hazelcast的核心功能及其应用...

    分布式缓存EhCache用户指南.docx

    1. **集群环境中的其他缓存发现**:在分布式环境中,节点需要知道其他节点的存在,以便进行数据同步。EhCache提供了两种成员发现机制,即自动和手动。自动发现通过TCP广播实现,节点定期发送“心跳”,如果5秒内未...

    Redis分布式缓存安装和使用

    总结来说,安装并配置 Redis 分布式缓存涉及多个步骤,包括安装依赖、编译源码、配置服务脚本、创建配置文件以及注册服务。正确配置后,Redis 将作为一个高效的缓存系统,为应用程序提供快速的数据访问。

    分布式缓存架构11.docx

    ### 分布式缓存架构与Ehcache集群详解 #### 一、为什么使用缓存? 在现代互联网系统中,为了提高系统的响应速度和降低数据库的压力,缓存技术被广泛应用。缓存通过暂时存储数据副本的方式来加快数据访问的速度,...

    物联网云计算分布式缓存技术及其在物联网中的应用.pdf

    监控和管理分布式缓存集群通常通过操作控制台进行,可以查看集群成员关系、访问负载和数据分布,以便进行配置和调整。这种灵活性和可管理性确保了分布式缓存能够在物联网环境中有效地支持实时数据处理、分析和决策...

    云计算分布式缓存技术及其在物联网中的应用.docx

    在云计算环境中,分布式缓存技术提供了以下关键特性: 1. **高可扩展性**:通过在多台服务器上分配数据,分布式缓存能够轻松处理大规模的数据量,随着硬件的增加,系统处理能力线性增长。 2. **高可用性**:采用无...

    spring缓存

    4. 分布式缓存集群环境配置 4.1 集群配置方式 为了实现分布式缓存,可以使用RMI、Terracotta或JGroups等通信机制。例如,使用Terracotta服务器进行集群配置,需要在`ehcache.xml`中配置`terracottaConfig`元素,并在...

    云平台技术选型之五:分布式缓存

    分布式缓存是一种高性能的数据存储技术,它可以显著提升数据库的处理能力,特别是在数据访问频繁的场景下。...根据实际的业务需求和环境,合理选择和配置分布式缓存,可以有效地提升整个云平台的性能和稳定性。

    memcache缓存分布式集群

    在标题提到的“memcache缓存分布式集群”中,主要涉及以下知识点: 1. **分布式存储原理**:分布式存储是将数据分散存储在多台独立的设备上,以提高系统的可扩展性和可用性。Memcache分布式集群就是通过将数据分散...

    分布式缓存1.0

    一致性哈希通过虚拟节点和哈希环的机制,确保了在缓存集群中数据分布的相对稳定,减少了因节点变动导致的重新分配。 描述中提到,第二个版本计划在1个月后开源,并支持读写分离。读写分离是数据库优化的一个常见...

Global site tag (gtag.js) - Google Analytics