An open-source scalable personal cloud


In the figure below we can observe the architecture of the desktop client. Next, we will detail each element and explain the relation between them.

Desktop client architecture

Desktop client architecture

  • Watcher. Receives modification events suffered by files located in the synchronization folder. Any action performed by the user (e.g., create a file or folder, delete them, etc.) is captured by the Watcher and notified to the Indexer.
  • Indexer. It must process all events received from the Watcher. It updates the internal database and creates the chunks from the modified file.
  • Uploader. It is charge of communicating with OpenStack Swift and the SyncService. First, it uploads the chunks to Swift through the TransferManager interface. Then, it notifies the SyncService about the committed operation.
  • EventListener. It awaits events from the SyncService. When receiving events, it queues them in order for the ChangeManager to sequentially process them.
  • ChangeManager. Processes all events coming from the SyncService. It contains the synchronization algorithm that ensures consistency in the client side.