Redundancy and Persistence
- Last UpdatedJul 18, 2023
- 2 minute read
If you are using server redundancy, persistence caches (I/O server cache) keep standby servers updated with the most recently read device data. A persistence cache, or I/O server cache, is created for each cached I/O device. The following diagram introduces the concept of a persistence cache.

The diagram shows that there are two I/O servers, namely IOServer1 (primary) and IOServer2 (standby). Each connects to the public switched telephone network (PSTN) via a modem, which is in turn connects to the I/O devices, also over a modem. Persistence caches work as follows:
-
Every IODevices->Cache Time period, data from an I/O Device is stored temporarily in the memory of the I/O server (I/O server cache).
-
For every [IOServer]SavePeriod, IOServer1 stores its in-memory cache to disk.
-
The cache is saved in persistence caches -one for each cached device.
-
IOServer1 broadcasts to other I/O servers the UNC path of the persistence caches (set with [IOServer]SaveNetwork).
-
From these persistence caches, IOServer2 updates its in-memory cache for its I/O devices.
-
Depending on the value of the I/O server parameter of `[IOServer]SavePeriod' (determines how often the persistence cache is saved to the hard disk in seconds), IOServer1 stores its in-memory cache to the hard disk every x amount of seconds.
Note: You can define an I/O Device on an I/O server using the Device Communications Wizard, or by adding a device in the Topology activity.
You are not limited to just one Standby Server, since the UNC path name set in [IOServer]SaveNetwork is broadcast to I/O servers. Each I/O server updates its cache from the persistence caches only for the I/O devices defined on that server. It is then possible, therefore, set up several I/O servers which update their in-memory caches with the most recently read data.
For example, we set the [IOServer]SaveFile and [IOServer]SaveNetwork parameters as follows:
|
On IOServer1 |
On IOServer2 |
|
[IOServer] |
[IOServer] |
|
SaveFile=C:\Data\IOServer1.dat |
SaveFile=C:\Data\IOServer2.dat |
|
SaveNetwork=\\IOServer1\Data\IOServer1.dat |
SaveNetwork=\\IOServer2\Data\IOServer2.dat |
IOServer1 would broadcast the following UNC path of the persistence cache to other I/O servers: '\\IOServer1\Data\IOServer1.dat'.
IOServer2 would then use the persistence caches to update its in-memory cache with the device data most recently read by IOServer1.