集群应用服务器环境中会话管理(复制)的Oracle Coherence最佳实践

Oracle Coherence是一种内存中数据网格产品,也广泛用于跨应用程序服务器节点集群的会话复制。 它支持各种应用程序服务器,例如WebLogic,WebSphere,Tomcat,JBoss等。Coherence * Web是会话管理模块(基于Coherence构建),用于在集群环境中管理会话信息。

我将建议遵循Coherence * Web和Coherence用法的最佳实践,尤其是对于会话管理(也可以在其他Coherence方案中应用):

相干部署拓扑

Coherence支持三种部署模式:

  1. 进程内–运行Coherence * Web的应用程序服务器已启用存储功能,因此HTTP会话存储与应用程序服务器位于同一位置。 没有单独的缓存服务器用于HTTP会话存储。
  2. 进程外–运行Coherence * Web的应用程序服务器是Coherence群集中禁用存储的成员。 单独的缓存服务器用于HTTP会话存储。
  3. 带有Coherence * Extend的进程外–运行Coherence * Web的应用程序服务器不属于Coherence群集; 应用服务器使用Coherence * Extend附加到Coherence群集,该群集包含用于HTTP会话存储的缓存服务器。
建议:

如果需要Coherence将其边界扩展到核心Coherence TCMP(Coherence使用的内部协议)之外,请使用Coherence * Extend,它支持Java,.Net和C ++客户端。

在大多数情况下, 建议使用进程外拓扑,因为它具有独立运行的专用缓存服务器节点,从而促进了松耦合的物理体系结构

对于会话复制,使用进程内部署通过Coherence共享关联的应用程序服务器内存(堆)可创建可靠性。 如果应用服务器内存使用量增加,也会影响Coherence性能,反之亦然。

请确保对进程外配置执行以下操作:应用程序服务器节点以禁用存储的模式运行。 您需要将这两个命令行参数(或通过使用Coherence替代文件)传递给应用程序服务器JVM:

Dtangosol.coherence.session.localstorage=false
Dtangosol.coherence.distributed.localstorage=false

请注意,明确需要设置会话存储属性,因为默认情况下在“ session-cache-config.xml”中为“ true”:

………………….

<local-storage system-property="tangosol.coherence.session.localstorage"

………………….

一致性专用节点需要启用存储 (否则,没有人可以存储会话属性),并且应该使用“ session-cache-config.xml”或在其中配置了会话缓存的自定义缓存配置文件:

java –Xms512m -Xmx512m -cp /usr/local/coherence_3_6/lib/coherence.jar:/usr/local/coherence_3_6/lib/coherence-web-spi.war:/usr/local/coherence_3_6/lib/commons-logging-api.jar:/usr/local/coherence_3_6/lib/log4j-1.2.8.jar
 -Dtangosol.coherence.cacheconfig=../../../webapps/example/WEB-INF/classes/session-cache-config.xml -Dtangosol.coherence.log.level=6 -Dtangosol.coherence.ttl=2 -Dtangosol.coherence.log=log4j -Dtangosol.coherence.edition=EE
-Dtangosol.coherence.session.localstorage=true com.tangosol.net.DefaultCacheServer

相干缓存拓扑

Coherence支持基于四种缓存拓扑的五种不同类型的缓存:

  1. 本地缓存拓扑: 本地缓存
  2. 分区缓存拓扑: 分布式(或分区缓存)
  3. 复制缓存拓扑: 复制缓存,乐观缓存
  4. 混合拓扑(本地+分区): 近缓存

您可以使用以下简单准则来选择适当的缓存类型:

情境 推荐的缓存类型
·您需要更快的读写速度
·您不需要容错(警告:无容错)
本地缓存
·您需要更快的阅读速度和最佳的容错能力
·写比较好,但是在复制更新数据之间会有延迟
·通常用于存储元数据或配置数据

注意:横向扩展(水平可伸缩性)不能是线性的。

复制缓存
·您需要更快的写入速度但最好的容错能力
·读取速度相对较快,但取决于它是从本地节点还是从远程节点读取
分区或分布式缓存
·您需要更快的写入速度但最好的容错能力
·读取速度相对较快,但取决于它是从本地节点还是从远程节点读取
·适度写入,提高了重读应用程序的亲和力性能
近缓存(由分区缓存备份)

执行生产清单

Coherence建议在生产环境中执行清单清单,以确保环境和基础结构具有推荐的设置/配置,尤其是在以下方面:

  • 网络:
    • 组播测试:如果您使用的是组播集群,则必须执行此测试以确保组播配置正确且工作正常。
    • 数据报测试–部署应用程序之前,必须运行它以确保网络中没有数据包丢失。 请注意,在1GbE网络中,您应该使用100MB数据包进行测试,并且最小(非平均)成功率应接近100%(〜98-99%)
    • TTL –这对于多播网络非常重要,在生产环境中通常建议使用2-5的值
  • 硬件,操作系统和JVM设置
  • 一致性版本和模式:
    • 毋庸置疑,在生产环境中,一致性模式应该是PROD。 它需要在命令行上指定,因为替代配置文件不能用于Edition&Mode。

      -Dtangosol.coherence.mode = PROD

    • 默认情况下,Coherence在GE(网格版)中运行,并且使用适当的版本(根据您的许可证和需求)来指定正确的版本非常重要。

      -Dtangosol.coherence.edition = EE

      请注意,群集中的所有节点应使用相同的版本。

执行性能调整准则

Coherence建议进行以下调整: OS,Network,JVM和Coherence Network。 有关更多详细信息,请参考Coherence性能调整准则(参考部分)。

启用JMX监视一致性

Coherence为群集,节点,缓存和其他内容的基于JMX的监视提供了OOTB支持。 它至少需要一个节点充当管理者,集群中的其余节点可以使用JMX发布其统计信息。

对于管理节点,

-Dtangosol.coherence.management=all -Dtangosol.coherence.management.remote=true
-Dtangosol.coherence.management.jvm.all=false  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port= -Dcom.sun.management.jmxremote

对于其他节点,您只需删除“ tangosol.coherence.management”命令行参数。 另外,请注意,在上述情况下,未启用JMX身份验证(需要保护),并且还需要指定JMX端口。

使用Log4J进行一致性日志

尽管Coherence有其自己的日志记录机制,但Log4J在日志轮换和控制适当的日志级别方面更有利。

请注意,您可以同时使用Coherence Log Level参数(-Dtangosol.coherence.log.level)和Log4J配置作为日志记录级别。

请按照以下步骤启用Log4J for Coherence

  • Coherence没有log4j库,因此您需要向类路径添加以下jar:
    一个。 将“ commons-logging-api.jar”“ log4j-1.2.8.jar”复制到/ lib文件夹
  • 创建/修改Log4J XML文件,并将其放在Coherence JVM的类路径中。
  • 设置命令行参数(或使用替代文件)以将日志参数值指定为“ log4j ”。

请注意,Coherence假定Log4J XML将Logger Name命名为“ Coherence”,否则您需要通过使用单独的参数“ tangosol.coherence.log.logger”来指定记录器名称。

例:

缓存服务器启动脚本
JAVA_OPTS="-Xms$MEMORY -Xmx$MEMORY -Dtangosol.coherence.log.level=6 -Dtangosol.coherence.log=log4j -Dtangosol.coherence.log.logger=MyCoherence"

$JAVAEXEC -server -showversion $JAVA_OPTS -cp "$COHERENCE_HOME/lib/coherence.jar:$ "$COHERENCE_HOME/lib/commons-logging-api.jar:$ COHERENCE_HOME/lib/log4j-1.2.8.jar" com.tangosol.net.DefaultCacheServer $1
Log4J XML
......................

<logger name="MyCoherence">

<level value="3"/>

<appender-ref ref="CoherenceAppender"/>

....................

查看Coherence * Web上下文参数

有几个Coherence Web上下文参数,在Web应用程序中安装Coherence * Web时需要调整这些参数,尤其是以下内容:

  • 连贯启用会话上下文
  • 一致性会话ID长度
  • coherence-session-urlencode-enabled
  • 一致性会话线程锁定
  • 粘性会话
  • 相干reaperdaemon假定位置
  • 连贯的可疑属性

注意:这些参数在web.xml中配置,并在调用Coherence * Web安装实用程序时进行检测。

使用一致性作为L2缓存提供程序

一致性也可以用作正在使用的ORM框架的二级缓存提供程序。 将Coherence作为L2缓存也可以为ORM L2缓存提供企业级缓存。

要配置它们,您需要将Coherence指定为L2 Cache Provider(尤其是对于Hibernate L2 Cache ):

  • 在Hibernate Configuration文件中将Coherence指定为L2缓存提供程序:
    <prop key="hibernate.cache.provider_class">
    com.tangosol.coherence.hibernate.CoherenceCacheProvider
    </prop>
  • 基于以下参数加载Hibernate L2缓存的配置。 已有默认的L2缓存配置文件。
    -Dtangosol.coherence.hibernate.cacheconfig = /hibernate-cache-config.xml

资源资源

Coherence用户指南: http : //download.oracle.com/docs/cd/E18686_01/coh.37/e18690/toc.htm


翻译自: https://www.javacodegeeks.com/2013/06/oracle-coherence-best-practices-for-session-management-replication-in-clustered-application-servers-environment.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值