Topology > Redundancy > I/O Server Redundancy > Redundancy and Persistence

Redundancy and Persistence

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 (PSTNA public switched telephone network is the network of all the world's public switched telephone networks. It is now primarily digital and includes mobile as well as fixed telephones.) via a modem, which is in turn connects to the I/O devices, also over a modem. Persistence caches work as follows:

  1. 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).
  2. For every [IOServer]SavePeriod, IOServer1 stores its in-memory cache to disk.
  3. The cache is saved in persistence caches -one for each cached device.
  4. IOServer1 broadcasts to other I/O servers the UNC path of the persistence caches (set with [IOServer]SaveNetwork).
  5. From these persistence caches, IOServer2 updates its in-memory cache for its I/O devices.
  6. 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.
  7. 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.

See Also

Published June 2018