经过上篇 coherence初识 ,最近算是和coherence杠上了,针对coherence3.5.3这个版本,把学到的东西整理下
1. 这个jar包有点大,4M多,首先打开coherence.jar,可以发现里面有许多的配置xml文件,就从这些xml说起
默认的配置文件包含下面文件:
- tangosol-coherence.xml---提供了operational 和run-time设置,用来创建和配置cluster,通讯和数据管理服务。这个文件通常被称为operational deployment descriptor。
<coherence xml-override="{tangosol.coherence.override /tangosol-coherence-override-{mode}.xml}"> 。。。。 </coherence>
- tangosol-coherence-override-dev.xml---当Coherence启动在dev模式时,这个文件覆盖了tangosol-coherence.xml文件的operational 设置。Coherence启动默认是dev 模式,这个文件中的设置会被使用。
<coherence xml-override="/tangosol-coherence-override.xml"> 。。。。 </coherence>
- tangosol-coherence-override-eval.xml---当Coherence启动在eval模式时,这个文件覆盖了在tangosol-coherence.xml文件的operational 设置。
<coherence xml-override="/tangosol-coherence-override.xml"> 。。。。 </coherence>
- tangosol-coherence-override-prod.xml---当Coherence启动在prod模式时,这个文件覆盖了在tangosol-coherence.xml文件的operational 设置。
<coherence xml-override="/tangosol-coherence-override.xml"> 。。。。 </coherence>
默认,使用tangosol-coherence-override.xml这个文件覆盖jar包中的配置,我们可以在自己的项目中加一个tangosol-coherence-override.xml,然后将它加入到classpath中,也可以设置tangosol.coherence.override系统参数指定xml文件,使用coherence不可避免要用集群,以上就是集群的相关配置文件
- coherence-cache-config.xml---定义在cluster中使用的缓存名称、策略等,我们可以在classpath中添加coherence-cache-config.xml,或者在tangosol-coherence-override.xml中配置
<configurable-cache-factory-config> <class-name>com.tangosol.net.DefaultConfigurableCacheFactory</class-name> <init-params> <init-param> <param-type>java.lang.String</param-type> <param-value system-property="tangosol.coherence.cacheconfig">coherence-cache-my.xml</param-value> </init-param> </init-params> </configurable-cache-factory-config>
或者,设置tangosol.coherence.cacheconfig系统参数指定配置
- coherence-pof-config.xml---我们可以在classpath中添加coherence-pof-config.xml,或者设置tangosol.pof.config系统参数指定配置
- Management configuration files 一个用来配置coherence management reports的文件集合。这些文件在coherence.jar库的/reports目录里。文件包含了一组配置文件的报 告(report-group.xml。默认的),参考了许多的报告定义文件。 每个报告定义文件的结果是创建一个报告文件,该文件显示管理信息基于特定的一组度量。
2. 配置集群
在tangosol-coherence-override.xml中简单配置集群名称,成员名称,组播/单播地址,缓存配置等:
<coherence> <cluster-config> <member-identity> <cluster-name system-property="tangosol.coherence.cluster">ProductClusterV3</cluster-name> <!--集群名称--> <member-name system-property="tangosol.coherence.member">ctas-node</member-name> <!--成员节点名称--> </member-identity> <!--单播--> <unicast-listener> <well-known-addresses> <socket-address id="1"> <address system-property="tangosol.coherence.wka">10.6.53.83</address> <port system-property="tangosol.coherence.wka.port">23401</port> </socket-address> <socket-address id="2"> <address system-property="tangosol.coherence.wka">10.6.53.83</address> <port system-property="tangosol.coherence.wka.port">23403</port> </socket-address> <socket-address id="3"> <address system-property="tangosol.coherence.wka">10.6.53.84</address> <port system-property="tangosol.coherence.wka.port">23401</port> </socket-address> <socket-address id="4"> <address system-property="tangosol.coherence.wka">10.6.53.84</address> <port system-property="tangosol.coherence.wka.port">23403</port> </socket-address> </well-known-addresses> <!--<address system-property="tangosol.coherence.localhost">localhost</address> <port system-property="tangosol.coherence.localport">33414</port> --> </unicast-listener> <!--组播--> <multicast-listener> <address system-property="tangosol.coherence.clusteraddress">224.3.3.1</address> <port system-property="tangosol.coherence.clusterport">35301</port> <time-to-live system-property="tangosol.coherence.ttl">4</time-to-live> <join-timeout-milliseconds>10000</join-timeout-milliseconds> </multicast-listener> </cluster-config> <configurable-cache-factory-config> <class-name>com.tangosol.net.DefaultConfigurableCacheFactory</class-name> <init-params> <init-param> <param-type>java.lang.String</param-type> <param-value system-property="tangosol.coherence.cacheconfig">coherence-cache-config.xml</param-value> <!--缓存配置--> </init-param> </init-params> </configurable-cache-factory-config> </coherence>
单播要比组播的优先级高,一个集群应该保证名称,组播ip和端口一样,成员节点名称(member-name)可以一样,因为要确定一个节点还有好多其他信息(site-name、machine-name、process-name、role-name等)会默认设置的
实践证明:要想使用自定义配置文件,配置文件的classpath要优先于jar包,否则不会生效,千万注意
时间: 2024-10-08 02:53:25