CloudServices/Roadmaps/EditionServer: Difference between revisions

Line 74: Line 74:
# If a PLACEHOLDER SERVER is unable to immediately deliver a VERSION EVENT, the VERSION EVENT is logged to short term storage.
# If a PLACEHOLDER SERVER is unable to immediately deliver a VERSION EVENT, the VERSION EVENT is logged to short term storage.
# PLACEHOLDER CLIENT connects to the PLACEHOLDER SERVER and shall identify a list of one or more UAIDs it is responsible for.
# PLACEHOLDER CLIENT connects to the PLACEHOLDER SERVER and shall identify a list of one or more UAIDs it is responsible for.
# If there are VERSION EVENTS pending for requested UAIDs, PLACEHOLDER SERVER sends an UPDATE packet (For this template, italicized names would be replaced by actual values):
# If there are VERSION EVENTS pending for requested UAIDs, PLACEHOLDER SERVER sends an UPDATE packet
{ <i>UAID</i>: {
    {<i>APPID</i>: <i>VERSION</i>},
    ... },
  ... }
# If no VERSION EVENTS are pending for the requested UAIDs, PLACEHOLDER SERVER may return a status indicating no data available (for REST implementations) or simply not return content (for WebSocket)
# If no VERSION EVENTS are pending for the requested UAIDs, PLACEHOLDER SERVER may return a status indicating no data available (for REST implementations) or simply not return content (for WebSocket)
# During the transmission of the UPDATE, a PLACEHOLDER SERVER may wish to return a 503 (Service Unavailable) error to APP SERVERS for any VERSION EVENT associated with an in progress UAID, so as to prevent potential race conditions.
# During the transmission of the UPDATE, a PLACEHOLDER SERVER may wish to return a 503 (Service Unavailable) error to APP SERVERS for any VERSION EVENT associated with an in progress UAID, so as to prevent potential race conditions.
Line 87: Line 83:
# User Agent record (including associated channels and version information) that have not been accessed during an "active use" period, may be dropped by the PLACEHOLDER SERVER
# User Agent record (including associated channels and version information) that have not been accessed during an "active use" period, may be dropped by the PLACEHOLDER SERVER
## An unknown (or garbage collected) user agent record would need to re-register with PLACEHOLDER SERVER as if this is an initial connection.
## An unknown (or garbage collected) user agent record would need to re-register with PLACEHOLDER SERVER as if this is an initial connection.
<strike>
<strike>
* Version data is significant and must reflect the latest value submitted. Must be numeric.
# Version data is significant and must reflect the latest value submitted. Must be numeric.
** Version must be higher than previously submitted value (TODO: Need to provide use case for how versions would be required)
## Version must be higher than previously submitted value (TODO: Need to provide use case for how versions would be required)
</strike>
</strike>
* Clients are the source of truth for the associated channels.  
# Clients are the source of truth for the associated channels.  
** Channel discrepancies between the client and the server result in the server sending a request to client to reset.  
## Channel discrepancies between the client and the server result in the server sending a request to client to reset.  
*** TODO: Details on what a reset entails needed
### TODO: Details on what a reset entails needed
* UAIDs may be a globally unique 128 bit number
# UAIDs may be a globally unique 128 bit number
* APPIDs are unique per UAID namespace
# APPIDs are unique per UAID namespace
* ENDPOINTs are Globally Unique
# ENDPOINTs are Globally Unique
* Data must be stored and managed in a highly responsive manner (low read/write latency)  
# Data must be stored and managed in a highly responsive manner (low read/write latency)  
* EDITION SERVER should support 1MM+ number of simultaneously connected clients
# EDITION SERVER should support 1MM+ number of simultaneously connected clients
* Connections should maintain as long as possible. A server should not break a connection because it's gone idle.
# Connections should maintain as long as possible. A server should not break a connection because it's gone idle.
* A Server should attempt to retry a failed transmission to the client every 60 seconds.
# A PLACEHOLDER SERVER should attempt to retry a failed transmission to the client every 60 seconds.


NOTE: a PLACEHOLDER RELAY may be created by combining the polling aspects of the PLACEHOLDER CLIENT with the data management and KICK driver of the PLACEHOLDER SERVER. This would allow a VERSION EVENT system to enter protected networks or use restricted means to communicate to USER AGENTs. It is important to note that once a PLACEHOLDER SERVER has received an ACK for a given UAID, the PLACEHOLDER SERVER is under no obligation to retain that data, and proper relay of the VERSION EVENT is the PLACEHOLDER RELAY's problem.
NOTE: a PLACEHOLDER RELAY may be created by combining the polling aspects of the PLACEHOLDER CLIENT with the data management and KICK driver of the PLACEHOLDER SERVER. This would allow a VERSION EVENT system to enter protected networks or use restricted means to communicate to USER AGENTs. It is important to note that once a PLACEHOLDER SERVER has received an ACK for a given UAID, the PLACEHOLDER SERVER is under no obligation to retain that data, and proper relay of the VERSION EVENT is the PLACEHOLDER RELAY's problem.
Confirmed users
1,018

edits