随着对服务器集群的负载均衡能力要求越来越高,很多服务器推出了session同步的功能。即同一个客户端在同一个访问周期里,可能第一次访问A机器,第二次跳转到B机器访问,此时在访问A机器过程中产生的session里的内容可以被同步复制到B机器上。这个功能使得负载均衡更加合理,但是也带来了一系列问题。
服务器的集群只解决了服务器自己的session同步问题,而作为报表工具,润乾报表还提供了先进的参数缓存和报表缓存。那么,当客户端第一次访问报表服务器的时候,A机器计算了报表并在A机器作了缓存,而当客户端第二次访问时,例如此时跳转到B机器,则在B机器上找不到报表的缓存,也找不到参数的缓存,于是只好报错或者重新计算,一定程度上浪费了服务器的资源,降低了服务器的性能。
润乾报表专门针对此类情形,提供了集群服务器之间通讯的能力–集群时缓存同步,彻底解决了负载均衡时服务器之间跳转访问带来的缓存同步的问题。
其原理是:
客户端第一次访问报表服务器,A机器计算了报表并在A机器作了缓存,当客户端第二次访问时,例如此时跳转到B机器,B机器根据缓存id判断出是A机器做的缓存,于是B机器向A机器发送缓存请求,A机器读取缓存并把缓存结果发送给B机器,B机器再把结果返回给客户端。
实现步骤:
1、 在reportConfig.xml文件中做如下配置:
<config> <!– 配置缓存机器和缓存端口号–>
<name>clusterMember</name>
<value>A,192.168.0.59,8087;B,192.168.0.48,8087;</value>
</config>
<config> <!– 配置是否共享缓存目录–>
<name>isCachedFileShared</name>
<value>yes</value>
</config>
<config> <!– 配置缓存共享目录–>
<name>cachedReportDir</name>
<value>\\192.168.0.59\cached</value>
</config>
这里主要的是 clusterMember属性,它指定了系统缓存前缀、所有集群的服务器结点及每个服务器结点与缓存服务器间的通讯接口。
它的格式是:缓存前缀,IP,端口;(注:润乾通信端口非web服务器端口)
2、 重起服务器,即可实现集群时缓存同步。
分享到:
相关推荐
### 集群的缓存技术 #### 一、多级缓存的构建与作用 在现代互联网系统架构中,为了提升系统响应速度和减轻后端数据库的压力,多级缓存成为了不可或缺的一部分。多级缓存策略通过在不同的层级设置缓存机制,有效地...
MapCache是纯JAVA写的,用的HashMap来缓存数据,用的RMI来同步数据。支持某台服务器关闭后启动着的服务器自动将切换成单机状态,支持关闭的服务器重启后马上能同步更新已存在的数据并将缓存切换成同步状态,支持为...
可以通过分布式锁、乐观锁、事件驱动等方式实现缓存同步,确保数据的一致性。 总结,Redis 作为一个高性能的键值数据库,广泛应用于缓存和分布式系统中。Java 开发者可以使用 Jedis 或 JedisCluster 进行连接和操作...
本项目实现了一个基于Java的对象缓存系统,其中包含了LRU(Least Recently Used)算法,以及支持集群同步功能。这里我们将深入探讨相关知识点。 **LRU算法** LRU是一种常用的页面替换算法,其核心思想是:当内存...
在分布式系统中,集群同步锁是一种重要的机制,用于在多节点间协调操作,确保数据的一致性和完整性。Spring作为一款广泛使用的Java应用框架,提供了多种方式来实现集群同步锁。本篇文章将深入探讨如何利用Spring在...
osCache的核心功能包括缓存管理、缓存同步以及集群支持,尤其在处理大数据量和高并发场景下表现优异。 一、osCache简介 osCache最初由JBOSS公司开发,后成为开源项目。它提供了一个基于内存的缓存解决方案,可以在...
"encache+jgroups集群缓存共享"这个主题聚焦于如何利用EnCache和JGroups两个技术来实现高效的集群间缓存共享。 EnCache是一个高性能、分布式、内存中的键值存储系统,通常用于缓存应用程序的数据,以减少对数据库的...
如何做到多节点缓存同步呢,可使用redis消息队列广播功能,使用Redis订阅一个主题,注册监听,当有数据变更的时候往这个主题发布一个消息,集群中的各个节点都会收到这个消息执行本地缓存的更新操作。
【Redis缓存高可用集群】是为了解决单机Redis在面临高并发、大数据量时可能出现的性能瓶颈和单点故障问题。本文将探讨Redis的两种集群方案:哨兵模式和高可用集群模式,以及如何搭建Redis高可用集群。 1. **哨兵...
在Spring Boot 2.x应用程序中,...4. 启动多个实例,它们将自动形成集群并保持缓存同步。 通过这种方式,我们可以确保在分布式环境下,即使有数据更新,也能避免使用无效的缓存数据,从而保证应用的正确性和高可用性。
3. **共享缓存**: 当多个Ehcache客户端连接到同一Terracotta Server时,它们将共享同一份缓存数据。这意味着对缓存的任何修改都会立即同步到其他节点。 4. **故障转移**: 如果一个服务器宕机,Ehcache可以自动切换...
Memcached是一款高性能、分布式内存对象缓存系统,它被广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。通过在内存中存储常用数据,Memcached能够快速响应客户端请求,避免了频繁的磁盘I/O操作。 ...
二级缓存是进程级或者集群级的,它可以跨多个会话和事务共享数据,从而进一步提高性能。二级缓存通常由第三方缓存提供商如Ehcache、Infinispan等实现。 一级缓存到二级缓存的同步是自动进行的。当对象在一级缓存中...
JGROUP是一个用于构建可靠集群通信的库,可以提供组成员资格、故障检测、传输协议等多种功能,使得Ehcache能够在多个节点之间共享和同步缓存数据。Ehcache的分布式特性允许在大型系统中进行负载均衡,提高应用性能,...
总的来说,Dubbo 和 Zookeeper 结合的缓存方案是分布式系统中实现数据一致性的一种有效方法,它利用服务发现和集群通信的能力,解决了多节点环境下缓存同步的难题。不过,任何技术都有其适用场景,实施时需综合考虑...
Apache和Tomcat的组合经常被用来搭建这样的架构,特别是在实现负载均衡和集群时。在这个场景中,session同步是一个核心问题,因为用户session数据的正确管理和共享是保持应用程序一致性和用户体验的关键。本文将深入...
即使EhCache提供了集群环境下的缓存同步策略,但是同步依然需要一定的时间,短暂的缓存不一致依然存在。 在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个...
在WebLogic集群中集成Coherence,我们可以利用Coherence的数据网格功能,创建一个分布式、高性能的缓存层。Coherence集群可以在WebLogic服务器之间透明地分布数据,使得多个服务器可以同时访问和操作同一份数据,极...
数据延迟是指缓存中的数据可能不是最新的数据,而缓存同步是指在服务器集群中,各个服务器之间的缓存需要同步化。 二、模板结果共享缓存 模板结果共享缓存是指 FineReport 报表系统中的一种缓存技术,旨在提高报表...