集群应用服务器环境中会话管理(复制)的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

参考:来自我们的JCG合作伙伴 Ankur Kumar在Ankur Kumar的Blog博客上的《 集群应用服务器环境中会话管理(复制)中的Oracle Coherence最佳实践》 。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自适应居中

一、窗体居中 position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; /*height: 50px; width: 165px; */ 简析&#xff1a; position:固定位置显示&#xff08;absolute|fixed&#xff09;&#xff1b; 【absolute&#xff1a;窗口大小由上层position为ab…

linux ip地址漂移,Linux 实现高可用性(HA) —之ip 漂移方法(vrrp)

在日常的系统管理当中,某些应用对可用性要求比较高,简单的冷备是不能满足需求,所以才需要双机热备即HA.根据此应用要求,我们介绍一个软件实现高可用性.keepalived是Linux下一个双机热备的软件&#xff0c;可提供vrrp以及health-check功能&#xff0c;目前仅用它提供双机漂移ip,…

Go语言核心之美 1.5-作用域

变量的作用域是指程序代码中能够有效使用这个变量的范围。不要将作用域和生命期混在一起。作用域是代码中的一块区域&#xff0c;是一个编译期的属性&#xff1b;生命期是程序执行期间变量存活的时间段。在此时间段内&#xff0c;变量能够被程序的其他部分所引用&#xff0c;是…

BootStrap_01之全局样式

1、响应式网页&#xff1a; ①Responsive Web Page&#xff1a;一个可以根据浏览设备的不同&#xff0c;而自动更改布局、图片、文字效果的网页&#xff1b; ②构成&#xff1a;不能固定宽度&#xff0c;必须流式布局&#xff1b;文字和图片大小随容器大小而改变&#xff1b;CS…

Java安全教程–创建SSL连接和证书的分步指南

在有关应用JEE安全性的系列文章中&#xff0c;我们为您提供了另一个有关如何在Java EE应用程序中创建SSL连接和创建证书的详细教程。 如我们之前的文章中所述&#xff0c; 安全套接字层&#xff08;SSL&#xff09;/传输层安全性&#xff08;TLS&#xff09;将启用客户端和Web服…

linux带宽最小的远程桌面,【图片】linux下哪种远程桌面服务最快?_linux吧_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼I stumbled upon this while researching xrdp, which is the only one you mentioned that I havent used. Some observations:NX Server: not so speedy (v3, still awaiting v4), might pose performance issues depending on y…

CentOS Vi编辑器

vim&#xff1a;通过vim a.cfg进入文档 i&#xff1a;编辑状态 ESC&#xff1a;返回不可编辑状态 dd&#xff1a;在不可编辑状态下&#xff0c;dd可删除光标所在的行&#xff0c;2dd删除两行&#xff0c;以此类推 u&#xff1a;在不可编辑状态下&#xff0c;u可恢复删除的行 yy…

[转]CSS hack大全详解

转自&#xff1a;CSS hack大全&详解 1、什么是CSS hack? CSS hack是通过在CSS样式中加入一些特殊的符号&#xff0c;让不同的浏览器识别不同的符号&#xff08;什么样的浏览器识别什么样的符号是有标准的&#xff0c;CSS hack就是让你记住这个标准&#xff09;&#xff0c…

摆脱困境:将环境特定的Cron表达式与@Scheduled批注一起使用

Scheduled注释提供了一种在Spring驱动的应用程序中创建计划任务的简便方法。 我们可以使用它通过定期调度或cron表达式来调度我们的任务。 尽管时段调度也可能有用&#xff0c;但是cron表达式使我们对调度任务的调用有了更多的控制。 这就是为什么它们在现实生活中非常有用的原…

linux编译的so android闪退,android so库导致的闪退及tombstone分析

android中有3种crash情况&#xff1a;未捕获的异常、ANR和闪退。未捕获的异常一般用crash文件就可以记录异常信息&#xff0c;而ANR无响应表现就是界面卡着无法响应用户操作&#xff0c;而闪退则是整个app瞬间退出&#xff0c;个人感觉对用户造成的体验最差。闪退一般是由于调用…

产品经理应该具备的技能(2)如何做一个好的数据产品经理?

一、如何做一个好的数据产品经理&#xff1f; PD&#xff08;指产品经理&#xff0c;下同&#xff09;本身就是在做牛做马&#xff0c;关系圈异常复杂。数据PD也不例外。而且打交道的人更多。以下是我用PPT绘制的数据产品经理关系圈。如果你也做过 数据产品的产品经理&#xff…

C#取整函数Math.Round、Math.Ceiling和Math.Floor 【非原创,用来收藏,分享】

1.Math.Round&#xff1a;四舍六入五取偶 引用内容Math.Round(0.0) //0Math.Round(0.1) //0Math.Round(0.2) //0Math.Round(0.3) //0Math.Round(0.4) //0Math.Round(0.5) //0Math.Round(0.6) //1Math.Round(0.7) //1Math.Round(0.8) //1Math.Round(0.9) //1说明&#xff1a;对于…

谈谈一些有趣的CSS题目(十)-- 结构性伪类选择器

开本系列&#xff0c;谈谈一些有趣的 CSS 题目&#xff0c;题目类型天马行空&#xff0c;想到什么说什么&#xff0c;不仅为了拓宽一下解决问题的思路&#xff0c;更涉及一些容易忽视的 CSS 细节。解题不考虑兼容性&#xff0c;题目天马行空&#xff0c;想到什么说什么&#x…

基于linux的netfilter处理数据包的过程分析,基于Netfilter的网络数据包分析

前面的几篇文章我已经对Netfilter的大概的机制作了比较详细的介绍&#xff0c;这篇文章我就说一下如何分析网络数据包。我刚刚写了一个程序&#xff0c;程序的功能很简单&#xff0c;就是提取出网络数据包的源地址和改包所使用的网络协议&#xff0c;大家可以看看源代码&#x…

Java EE CDI程序化依赖关系消歧示例–注入点检查

在本教程中&#xff0c;我们将看到在注入Java EE CDI bean时如何避免程序依赖消除歧义。 我们已经在Jave EE依赖关系消除歧义示例中展示了如何避免CDI Bean中的依赖关系歧义消除。 在这里&#xff0c;我们将向您展示如何以动态方式避免依赖消除歧义。 我们将通过检查注入另一个…

机器学习算法整理(四)集成算法—随机森林模型

随机&#xff1a;数据采样随机&#xff0c;特征选择随机 &#xff08;数据采样&#xff0c;有放回&#xff09; 转载于:https://www.cnblogs.com/douzujun/p/8386930.html

CSS 布局入门

概述 Web 兴起之后&#xff0c;关于CSS的介绍和学习资料已经铺天盖地。 本文不涉及具体的CSS语法之类的&#xff0c;而是希望从初学者的角度&#xff0c;让没有接触或很少接触CSS的人能快速的了解 CSS 到底是什么以及如何使用。 什么是 CSS 了解一个概念&#xff0c;首先看到…

迷你搜索引擎–使用Neo4j,Crawler4j,Graphstream和Encog的基础知识

继续执行正在实现搜索引擎的Programming Collection Intelligence &#xff08;PCI&#xff09;的第4章。 我可能比做一次运动所咬的东西要多。 我认为&#xff0c; 与其一直使用本书中使用的普通关系数据库结构&#xff0c;不如说我一直想看看Neo4J&#xff0c;所以现在是时候…

linux人脸识别视频推流,RTMP推流协议视频智能分析/人脸识别/直播点播平台EasyDSS接口调用注意事项介绍...

TSINGSEE青犀视频目前推出了前端支持不同协议设备接入的视频智能分析平台&#xff0c;包括RTSP协议的EasyNVR、GB28181协议的EasyGBS&#xff0c;RTMP推流协议的EasyDSS&#xff0c;还有能够进行人脸识别、车牌识别的EasyCVR&#xff0c;这些平台均提供了视频转码分发的能力&am…

js高级写法

名称 一般写法优化取整(不四舍五入) parseInt(a,10); //Before Math.floor(a); //Before a>>0; //Before ~~a; //After a|0; //After 取整(四舍五入&#xff09; Math.round(a); //Beforenum.toFixed(0) a.5|0; //After未定义 undefined; //Before void 0; //After, 快…