Skip to main content

High availability - Self-hosted Temporal production feature

Content to be developed here

A Global Namespace is a Namespace that exists across Clusters. It uses Multi-Cluster Replication to automatically replicate metadata and Workflow state from an active Cluster to a standby Cluster. In the case of operational issues, a failover allows responsibility to pass from the active to the standby Cluster. This automatic approach, where there's always one or more standby Clusters waiting to take over, is called High Availability.

A Global Namespace may be replicated to any number of Clusters, but is active in only one Cluster at any given time.

For a failover to be successful, Worker Processes must be polling for Tasks for the Global Namespace on all Clusters.

A Global Namespace has a failover version. Because a failover can be triggered from any Cluster, the failover version prevents certain conflicts from occurring if a failover is mistakenly triggered simultaneously on two Clusters.

Only the active Cluster dispatches Tasks; however, certain conflicts are possible. Unlike regular Namespaces, which provide at-most-once semantics for an Activity Execution, Global Namespaces can support only at-least-once semantics (see Conflict resolution). Worker Processes on the standby Clusters are idle until a failover occurs and their Cluster becomes active.

Temporal Application API calls made to a non-active Cluster are rejected with a NamespaceNotActiveError which contains the name of the current active Cluster. It is the responsibility of the Temporal Application to call the Cluster that is currently active.