Message durability and QoS (Quality of Service)

 

Ably is able to provide a 100% message delivery guarantee, even during outages caused by network and/or hardware failures. The global Ably service ensures that no messages or data is lost through the following strategies:

 

  • In each of our data centre regions, we ensure our servers are spread across at least two physically isolated data centres. Every message that is received, is stored in RAM on two or more physical data centres within that region.  This ensures that should a data centre become unavailable or a server crashes unexpectedly, the other data centre in that region can continue all message operations seamlessly with no loss of data.
  • Every message is also stored in RAM in at least one other region bringing the total number of copies to at least three.  Should an entire region and all its data centres become unavailable, then there is no risk that the messages it received are lost as the message will exist in another region.
  • Every message that is persisted for later retrieval using the history API is stored in three regions. Message persistence is only deemed successful once it has been stored in at least two regions.
  • When one of our servers receives a message from a client via Realtime or REST, if it is unable to meet the durability requirements listed above, the message will be rejected.  This ensures that the app publishing the message is made aware through an exception or failure callback that the message has not been delivered and should be retried. As there are various strategies in place to workaround faulty data centres in our client libraries, the subsequent attempts will be routed to a health data centre and the message will be published.
  • If an Ably Realtime client is disconnected abruptly, it will reconnect automatically and resume the connection state.  Throughout the time a client is disconnected, Ably retains all messages on the channels that the client was subscribed to, and when the client reconnects and resumes its state, Ably will send the backlog of messages to the client. This feature allows a developer to build their applications knowing that realtime messages will not be lost ensuring a high quality of service.  See connection state recovery for more info.

 

Find out more about our 99.999% uptime SLA guarantee

 

 

Reliable message ordering

 

Ably ensures that messages are delivered to persistently connected subscribers on a channel in the order they were published on that channel by any other client when using one of our Realtime libraries.

 

Find out more about reliable message ordering