Use this task to improve performance by configuring the data replication service (DRS) to
replicate data from the dynamic cache service across the consumers in a replication
domain.
Before you begin
Refer to the Cache replication article for more information about replicating data for the
dynamic cache service.
You should have a replication domain created for the dynamic cache service. Configure a different
replication domain for each type of consumer of the replication domain. For example, configure two
different replication domains for dynamic cache and session manager. There are two ways to configure
replication domains:
- To create replication domains manually, click Environment > Replication
domains in the administrative console.
- To create a new replication domain automatically when you create a cluster, click
Servers > Clusters > New in the administrative console.
For more details about configuring replication domains, refer to the
Replicating data across application servers in a
cluster topic.
Do not use the default value of a single replica for the Number of replicas for dynamic cache
replication domains. Instead, use a full group replica for any replication domains that you
configure for dynamic cache.
Attention: If you configured cache replication with a previous version of WebSphere®
Application Server, review the Migrating servers from multi-broker replication domains to data
replication domains article to learn about the new type of replication domains that you should use
with the current version of WebSphere Application Server.
About this task
Use this task to improve performance in a clustered environment by enabling the data replication
service (DRS) to replicate cached data across the servers in a cluster. Invalidations of cache
entries are sent across the cluster to keep the cached data consistent and valid.
Procedure
- In the administrative console, click Servers > Server Types > WebSphere
application servers > server_name > Container services > Dynamic cache
service.
- To enable replication, select Enable cache replication.
- Choose a replication domain.
Use different replication domains for each type
of consumer. For example, dynamic cache should use a different replication domain than session
manager. The only replication domains that you can select in this panel include replication domains
that are configured to use full-group replication. In a full-group configuration, every cache entry
is replicated to every other cache that is configured in the servers that are in the replication
domain. If none of the replication domains in your configuration meet these requirements, the list
is empty. In this case, create a replication domain or alter an existing replication domain so that
you have a replication domain that can perform full-group replication. Refer to the Replicating data
across application servers in a cluster topic for more information.
- Define the dynamic cache replication settings. Click Enable cache
replication.
On this page, you can define when and how often data is
replicated across the dynamic cache replication domain. For more information about these settings,
refer to the
Dynamic cache service
settings topic.
- To enable cache replication on a single server in a non-clustered
environment, you must define the following JVM custom properties.
- In the administrative console, click Servers > Application Servers >
server_name.
- Under Server Infrastructure, click Java and process
management > Process definition > Java Virtual Machine > Custom properties >
New.
- Under Server Infrastructure, click Java and process
management > Process definition > Servant > Java Virtual Machine > Custom properties
> New.
- Add the new property name as
DynacacheEnableUnmanagedServerReplication and set the value to
true.
- Add another JVM property to specify the global sharing policy for the base z/OS®
server.
Click
New and add a new JVM custom property that is called
DynacacheUnmanagedServerReplicationType. Use one of the following values:
Value |
Description |
NOT_SHARED |
Cache entries for this object are not shared among different application servers. These
entries can contain non-serializable data. For example, a cached servlet can place non-serializable
objects into the request attributes, if the class type supports it. |
PUSH |
Cache entries for this object are automatically distributed to the dynamic caches in other
application servers or cooperating Java™ Virtual Machines (JVMs). Each cache has a copy of the entry
at the time it is created. These entries cannot store non-serializable data. |
PULL |
Cache entries for this object are shared between application servers on demand. If an
application server gets a cache miss for this object, it queries the cooperating application servers
to see if they have the object. If no application server has a cached copy of the object, the
original application server runs the request and generates the object. These entries cannot store
non-serializable data. This mode of sharing is not recommended. |
PUSH_PULL |
Cache entries for this object are shared between application servers on demand. When an
application server generates a cache entry, it broadcasts the cache ID of the created entry to all
cooperating application servers. Each server then knows whether an entry exists for any given cache
ID. On a given request for that entry, the application server knows whether to generate the entry or
pull it from somewhere else. These entries cannot store non-serializable data. |
If you do not define one of these values, the default is NOT_SHARED.
- Define sharing policies in the cachespec.xml file.
This is optional.
To use cache replication among
multiple servants on a base server, you must create a cachespec.xml file to define the cacheable
objects that you want to create.
You can override the global sharing policy by specifying a
specific sharing policy in the cache policy. For example, if your global policy is to use Push only,
you can change the sharing policy of a specific cache entry by making this change to your cache
policy:
<cache-entry>
<sharing-policy>not-shared</sharing-policy>
<class>servlet</class>
<name>/app</name>
<cache-id>
<component id="action" type="parameter">
<value>portfolio</value>
<required>true</required>
</component>
<component id="JSESSIONID" type="cookie">
<required>true</required>
</component>
<property name="EdgeCacheable">true</property>
</cache-id>
</cache-entry>
For more information about the sharing policies that can be defined in the
cachespec.xml
file, refer to the
cachespec.xml file topic.
Results
Cache entries copy to the other application servers in the configured replication
domain.