Universal Messaging 10.3 | Concepts | Performance, Scalability and Resilience | Horizontal Scalability | Overview
The Horizontal Scalability (HS) feature allows clients to seamlessly publish and consume events from multiple independent realms and clusters using a single connection. This feature is available for both the Universal Messaging native API for Java and the Universal Messaging API for JMS. It is enabled by using the horizontal scalability URL syntax.
Horizontal scalability involves the use of several Universal Messaging servers that operate independently of each other. A publishing client using horizontal scalability can connect to multiple servers and publish messages to a channel or queue that is defined on each of these servers. The publishing client itself does not determine which server will receive which message; this is managed internally by Universal Messaging. A subscriber client that is using horizontal scalability, and that is subscribed to the channel or queue, will receive the messages from the servers. The servers are not synchronized, so the order in which the messages are received is not guaranteed.
Figure 1. Using Universal Messaging Horizontal Scalability
This mode of processing is different from using a Universal Messaging cluster. In a cluster, all of the nodes are synchronized, so they all receive copies of the same messages that are sent by the publishing client. The subscribing client receives the messages from one of the cluster servers, in the order in which the messages were published.
Figure 2. Comparison with Using Universal Messaging Clustering
HS is generally a client-side function, and a server that is used in a HS server set can also be used (at the same time) as a normal standalone realm or cluster. However, we don't recommend using the same channels/queues in both HS and non-HS modes.