原题目:Spring认证中国教育管理中心-Apache Geode 的 Spring 数据教程二(Spring中国教育管理中心)
5.4.配置缓存
要应用 Apache Geode,您须要创立一个新缓存或连贯到现有缓存。应用以后版本的 Apache Geode,每个 VM 只能有一个关上的缓存(更严格地说,每个ClassLoader)。在大多数状况下,缓存应该只创立一次。
本节形容对等Cache成员的创立和配置,实用于对等 (P2P) 拓扑和缓存服务器。一个Cache成员也能够在独立的应用程序和集成测试应用。然而,在典型的生产零碎中,大多数应用程序过程充当缓存客户端,ClientCache 而是创立实例。这在配置 Apache Geode ClientCache和客户端区域局部进行了形容。
Cache能够应用以下简略申明创立具备默认配置的对等方:
<gfe:cache/>
在 Spring 容器初始化期间,任何ApplicationContext蕴含此缓存定义的内容都会注册 a CacheFactoryBean,它会创立一个名为 的 Spring bean gemfireCache,该bean援用一个 Apache GeodeCache实例。这个 bean 指的是一个现有的,Cache或者一个新创建的,如果不存在的话。因为没有指定额定的属性,新创建的Cache利用默认缓存配置。
所有依赖Cache于此命名约定的Apache Geode 组件的 Spring Data ,因而您无需显式申明Cache依赖项。如果您违心,能够应用cache-ref各种 SDG XML 命名空间元素提供的属性使依赖项显式化。此外,您能够应用该id属性笼罩缓存的 bean 名称,如下所示:
<gfe:cache id="myCache"/>
Cache能够应用 Spring 齐全配置Apache Geode 。然而,Apache Geode 的原生 XML 配置文件cache.xml也受反对。对于须要原生配置Apache Geode缓存的状况,能够应用cache-xml-location属性提供对Apache Geode XML配置文件的援用,如下:
<gfe:cache id="cacheConfiguredWithNativeCacheXml" cache-xml-location="classpath:cache.xml"/>
在这个例子中,如果须要创立缓存,它会应用cache.xml位于类门路根目录中的一个名为的文件来配置它。
配置应用 Spring 的Resource 形象来定位文件。该Resource形象让不同的搜寻模式应用,依据不同的运行环境或指定的前缀(如果有的话)的资源地位。
除了援用内部 XML 配置文件之外,您还能够指定应用任何 Spring 反对性能的Apache Geode System 属性Properties。
例如,您能够应用命名空间中定义的properties元素间接util定义Properties或从属性文件加载属性,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:gfe="https://www.springframework.org/schema/geode" xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsdhttps://www.springframework.org/schema/geode https://www.springframework.org/schema/geode/spring-geode.xsdhttp://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd
">
<util:properties id="gemfireProperties" location="file:/path/to/gemfire.properties"/>
<gfe:cache properties-ref="gemfireProperties"/>
</beans>
倡议应用属性文件在应用程序配置之外内部化特定于环境的设置。
缓存设置仅在须要创立新缓存时利用。如果 VM 中已存在凋谢缓存,则这些设置将被疏忽。
5.4.1.高级缓存配置
对于高级缓存配置,该cache元素提供了许多作为属性或子元素公开的配置选项,如上面的清单所示:
<gfe:cache
cache-xml-location=".."properties-ref=".."close="false"copy-on-read="true"critical-heap-percentage="90"eviction-heap-percentage="70"enable-auto-reconnect="false" lock-lease="120"lock-timeout="60"message-sync-interval="1"pdx-serializer-ref="myPdxSerializer"pdx-persistent="true"pdx-disk-store="diskStore"pdx-read-serialized="false"pdx-ignore-unread-fields="true"search-timeout="300"use-bean-factory-locator="true" use-cluster-configuration="false"
<gfe:transaction-listener ref="myTransactionListener"/>
<gfe:transaction-writer>
<bean class="org.example.app.gemfire.transaction.TransactionWriter"/>
</gfe:transaction-writer>
<gfe:gateway-conflict-resolver ref="myGatewayConflictResolver"/>
<gfe:jndi-binding jndi-name="myDataSource" type="ManagedDataSource"/>
</gfe:cache>
Spring认证中国教育管理中心-Apache Geode 的 Spring 数据教程二
属性反对各种缓存选项。无关此示例中显示的任何内容的更多信息,请参阅Spring中国教育管理中心 Apache Geode产品文档。该close属性决定了在 Spring 应用程序上下文敞开时是否应该敞开缓存。默认为true。然而,对于多个应用程序上下文应用缓存(在 Web 应用程序中很常见)的用例,请将此值设置为false。
将该enable-auto-reconnect属性设置为true(默认为false)可使断开连接的 Apache Geode 成员主动从新连贯并重新加入 Apache Geode 集群。无关
更多详细信息,请参阅Spring中国教育管理中心 Apache Geode产品文档。
仅当 Spring (XML) 配置元数据和 Apache Geode都用于配置 Apache Geode 缓存节点(无论是客户端还是对等节点)时,将该use-bean-factory-locator属性设置为true(默认为false)才实用cache.xml。此选项容许 Apache Geode 组件(例如CacheLoader)cache.xml
与DataSource在 Spring 应用程序上下文中定义的bean(例如)主动连贯。此选项通常与 联合应用cache-xml-location。
将该use-cluster-configuration属性设置为true(默认为false)使 Apache Geode 成员可能从定位器检索公共的、共享的基于集群的配置。无关
更多详细信息,请参阅 Spring中国教育管理中心 Apache Geode产品文档。
TransactionListener应用 bean 援用的回调申明示例。援用的 bean 必须实现
TransactionListener。TransactionListener能够实现A来处理事务相干的事件(例如 afterCommit 和 afterRollback)。
TransactionWriter应用外部 bean 申明的回调申明示例。bean 必须实现
TransactionWriter。这TransactionWriter是一个能够否决交易的回调。
GatewayConflictResolver应用 bean 援用的回调申明示例。援用的 bean 必须实现
https://geode.apache.org/rele...
[GatewayConflictResolver]。AGatewayConflictResolver是一个Cache级别插件,用于决定如何解决源自其余零碎并通过 WAN 网关达到的事件。它提供分布式区域创立服务。
申明 JNDI 绑定以在 Apache Geode 事务中注销内部数据源。
Spring认证中国教育管理中心-Apache Geode 的 Spring 数据教程二
启用 PDX 序列化
后面的示例包含许多与 Apache Geode 的加强序列化框架 PDX 相干的属性。尽管对 PDX 的残缺探讨超出了本参考指南的范畴,但重要的是要留神 PDX 是通过注册 a 来启用的PdxSerializer,这是通过设置pdx-serializer属性指定的。
Apache Geode 提供了一个
org.apache.geode.pdx.ReflectionBasedAutoSerializer应用 Java 反射的实现类 ( )。然而,开发人员提供他们本人的实现是很常见的。该属性的值只是对实现该PdxSerializer接口的 Spring bean 的援用。
无关序列化反对的更多信息能够在应用 Apache Geode 序列化中找到。
启用主动从新连贯
将<gfe:cache enable-auto-reconnect="[true|false*]>属性设置为 时应该小心true。
通常,只有在 Spring Data for Apache Geode 的 XML 命名空间用于配置和疏导增加到集群的新的非应用程序 Apache Geode 服务器的状况下,才应启用“主动从新连贯”。换句话说,当 Spring Data for Apache Geode 用于开发和构建 Apache Geode 应用程序时,不应启用“主动从新连贯”,该应用程序也恰好是CacheApache Geode 集群的对等成员。
这种限度的次要起因是大多数 Apache Geode 应用程序应用对 Apache GeodeCache或 Regions 的援用 来执行数据拜访操作。这些援用由 Spring 容器“注入”到应用程序组件(例如存储库)中以供应用程序应用。当对等成员与集群的其余部分强行断开连接时,大略是因为对等成员变得无响应或网络分区将一个或多个对等成员分成太小而无奈作为独立分布式系统运行的组,对等成员将敞开并且所有 Apache Geode 组件援用(缓存、区域等)都变得有效。
从实质上讲,以后每个对等成员中的强制断开解决逻辑从头开始拆除零碎。JGroups 堆栈敞开,分布式系统进入敞开状态,最初,缓存敞开。实际上,所有内存援用都变得古老并失落。
与分布式系统断开连接后,对等成员进入“从新连贯”状态,并定期尝试重新加入分布式系统。如果对等成员胜利从新连贯,则该成员从现有成员重建其分布式系统“视图”并接管新的分布式系统 ID。此外,所有缓存、区域和其余 Apache Geode 组件都被重建。因而,所有可能已被 Spring 容器注入应用程序的旧援用当初都已过期且不再无效。
Apache Geode 不保障(即便应用 Apache Geode 公共 Java API)从新连贯操作会主动刷新应用程序缓存、区域或其余组件援用。因而,Apache Geode 应用程序必须留神刷新它们本人的援用。
可怜的是,无奈收到断开连接事件以及随后的从新连贯事件的告诉。如果是这种状况,您将有一个洁净的办法来晓得何时调用
ConfigurableApplicationContext.refresh(),如果它甚至实用于应用程序这样做,这就是为什么不倡议对等Cache应用程序应用 Apache Geode 的这个“性能” 。
无关“主动从新连贯”的更多信息,请参阅 Apache Geode 的Spring中国教育管理中心产品文档。
应用基于集群的配置
Apache Geode 的集群配置服务是退出集群的任何对等成员通过应用由定位器保护的共享、长久配置取得集群“统一视图”的便捷形式。应用基于集群的配置可确保对等成员的配置在成员退出时与 Apache Geode 分布式系统兼容。
Spring Data for Apache Geode 的这个个性(将use-cluster-configuration属性设置为true)的工作形式与cache-xml-location属性雷同,除了 Apache Geode 配置元数据的起源通过定位器来自网络,而不是cache.xml驻留在本地文件系统。
所有 Apache Geode 本机配置元数据,无论是来自cache.xml还是来自集群配置服务,都在任何 Spring (XML) 配置元数据之前利用。因而,Spring 的配置用于“加强”本机 Apache Geode 配置元数据,并且很可能特定于应用程序。
同样,要启用此性能,请在 Spring XML 配置中指定以下内容:
<gfe:cache use-cluster-configuration="true"/>
尽管某些 Apache Geode 工具(例如Gfsh )在进行相似模式的更改(例如,gfsh>create region --name=Example --type=PARTITION)时会“记录”其操作,但不会记录用于 Apache Geode 的配置元数据的 Spring Data。间接应用 Apache Geode 的公共 Java API 时也是如此。它也没有被记录下来。
无关 Apache Geode 的集群配置服务的更多信息,请参阅Spring中国教育管理中心产品文档。