FTL Channels in a Cluster
When eFTL servers cooperate in a cluster, each FTL channel ensures that all the eFTL clients of each channel can access the entire message stream of the channel. A message travels one of two possible paths, depending on its origin.
Messages Originating in the eFTL Side
The diagram illustrates a cluster of two eFTL server processes. When PubA1 sends a message, Svr1 forwards the message in three ways. The first two types of forwarding are already familiar from preceding topics:
- The red arrow indicates forwarding within the eFTL side: that is, to all the other eFTL clients of Svr1 that subscribe on channel A, represented by SubA1.
- The purple arrow indicates forwarding into the FTL side: more precisely, to the application-facing endpoint of channel A. From there, the FTL transports that implement that endpoint carry the message stream to SubA2 and SubA4.
The third type of forwarding is unique to FTL channels in an eFTL cluster. The orange arrow indicates forwarding across a cluster: this type of forwarding carries the eFTL message stream through the channel’s application-facing endpoint, to the corresponding channel of Svr2, which represents all the other server processes. When these messages arrive at Svr2, it forwards them into its eFTL side (blue arrow within channel A), to SubA3, which represents all the eFTL clients of Svr2 that subscribe on channel A.
Forwarding across a cluster carries only messages that originate in eFTL clients: it does not carry messages that originate in FTL applications.
Each message flows into the FTL side through only one server within the cluster: the server that receives the message from the originating eFTL client. For example, notice that Svr2 does not forward messages from Svr1 downward to SubA4, which would result in duplicate delivery paths.
Messages Originating in the FTL Side
In the opposite direction, each eFTL server in the cluster applies only one type of forwarding. When FTL publisher PubD4 sends a message, FTL transports carry the message to FTL subscribers, and to all the servers in the cluster. Blue arrows in channel D indicate forwarding into the eFTL side: through Svr1 to SubD1, and through Svr2 to SubD3, that is, to all of the subscribing eFTL clients on channel D of the two servers.
Notice that FTL transports connect each FTL application to the appropriate application-facing endpoint at every eFTL server. In the lower part of the diagram, solid arrows indicate messages flowing over transports, while gray dashed lines indicate transports that are present, even though they did not carry messages in this example.