Distribution in Mirror Mode

The diagram below represents a DAH run in mirror mode. In this setup, the DAH distributes actions to several identical child components.

DAH system architecture (mirror mode)

The DAH distributes the actions according to the value of the DistributionMethod parameter in the DAH configuration file. You can use the following methods:

  • Load balancing. The DAH assigns each incoming action to just one of the connected child servers. It uses a cumulative predictive algorithm to spread the action load efficiently. When this child server responds with a result, the DAH returns it to the client software.

    If a child server stops responding for any reason (for example, because of a hardware failure or network outage), the DAH marks it as down. DAH assigns incoming actions only to the available child servers, which saves the time that it takes to attempt to communicate with the failed child server.

  • Failover. The DAH forwards incoming actions to the first child server that you list in the DAH configuration file [DistributedEngineN] section. This server is the primary server. If this child server stops responding for any reason (for example, because of a hardware or network failure), the DAH marks it as down. The DAH switches to the next child server (the second one listed in the [DistributedEngineN] section), which becomes the new primary server, and so on, and seamlessly continues to service client actions.

The DAH periodically checks child servers that are down. If a child server has come online again (for example, because the hardware has been rebooted or the network connection repaired), the DAH adds it back into the list of active child servers.

  • For load balancing, this child server becomes a valid choice for actions again.

  • For failover, DAH continues sending actions to the new primary server unless that server stops responding, or unless you manually change the primary server.

NOTE: The DAH always sends state-changing actions (actions that cause changes in a child server) to all child servers, to ensure that they remain consistent. The DAH queues state-changing actions for any child servers that are not running, and sends these actions before it distributes new actions to the child server.

The DAH cannot always queue CategoryMove and CategorySetDetails actions. It returns an error if child servers stop running.