Platform Team/Sugar Network/Architecture: Difference between revisions
No edit summary |
|||
| Line 8: | Line 8: | ||
* Clients create, modify and browse different types of resources ([[Sugar_Network/Concept#Resources|resources]] from conceptual point of view, [[Platform_Team/Sugar_Network/API#Resources|resources]] from the API point of view) on a server; | * Clients create, modify and browse different types of resources ([[Sugar_Network/Concept#Resources|resources]] from conceptual point of view, [[Platform_Team/Sugar_Network/API#Resources|resources]] from the API point of view) on a server; | ||
* If this server is a [[#Node_servers|Node]] server, the system will take care about [[# | * If this server is a [[#Node_servers|Node]] server, the system will take care about [[#Synchronization|synchronizing]] its resources with other Node servers and, finally, with the central one, the [[#Master_server|Master]] server. | ||
=== Components === | === Components === | ||
| Line 25: | Line 25: | ||
* [[#Master_server|Master]] server that keeps the whole Sugar Network information, clients might connect directly to this server (on-line case) or indirectly via Node servers (off-line case); | * [[#Master_server|Master]] server that keeps the whole Sugar Network information, clients might connect directly to this server (on-line case) or indirectly via Node servers (off-line case); | ||
* Optional [[#Node_servers|Node]] servers, contain a [[# | * Optional [[#Node_servers|Node]] servers, contain a [[#Synchronization|synchronised]] copy of central server (might be not for the entire Network to save storage space); | ||
In all cases the server [[Platform_Team/Sugar_Network/API|API]] is the same for clients. But depending on connectivity, clients might be connected to the [[#Master_server|Master]] server or to a [[#Node_servers|intermediate server]]. | In all cases the server [[Platform_Team/Sugar_Network/API|API]] is the same for clients. But depending on connectivity, clients might be connected to the [[#Master_server|Master]] server or to a [[#Node_servers|intermediate server]]. | ||
| Line 41: | Line 41: | ||
* connectivity is not cheap and its usage needs to be minimized. | * connectivity is not cheap and its usage needs to be minimized. | ||
Node servers provide full featured [[Platform_Team/Sugar_Network/API|API]] as the Master does. Nodes need to be [[# | Node servers provide full featured [[Platform_Team/Sugar_Network/API|API]] as the Master does. Nodes need to be [[#Synchronization|synchronized]]. | ||
== Conceptual level == | == Conceptual level == | ||
| Line 96: | Line 87: | ||
=== Implementations === | === Implementations === | ||
* [[Platform_Team/Sugar_Network/ | * [[Platform_Team/Sugar_Network/Web_UI|Web UI]]. | ||
== Synchronization == | |||
To let Network participant, connected to particular [[#Node_servers|Node server]], interact with people from another Node servers or with people from the Internet (Master server), Node servers need to be synchronized. | |||
Server might be synchronized: | |||
* With the Master, if connectivity presents; | |||
* With the Master or any other Node servers via the [[Wikipedia:Sneakernet|Sneakernet]]. | |||
=== Sneakernet === | |||
Packets' structure: | |||
* '''PUSH''' packet: | |||
:* {{Code|type}}: {{Code|push}} | |||
:* {{Code|sender}}: sender's GUID to push from | |||
:* {{Code|[receiver]}}: receiver's GUID to push to, optional for packets from master | |||
:* {{Code|sequence}}: Sequence associated with packet's payload | |||
* '''ACK''' packet: | |||
:* {{Code|type}}: {{Code|ack}} | |||
:* {{Code|sender}}: master's GUID | |||
:* {{Code|receiver}}: receiver's GUID ack is intended for | |||
:* {{Code|push_sequence}}: original PUSH packet's sequence | |||
:* {{Code|pull_sequence}}: Sequence after merging original PUSH packet | |||
* '''PULL''' packet: | |||
:* {{Code|type}}: {{Code|pull}} | |||
:* {{Code|sender}}: sender's GUID to pull to | |||
:* {{Code|receiver}}: receiver's GUID to pull from | |||
:* {{Code|sequence}}: Sequence to pull for | |||
== Getting involved == | == Getting involved == | ||