Star pattern vs full peer-to-peer


#1

Hi,

I’d need some advice from the community that will probably already have experienced my scenario.

Up till now, I have setup some of my my syncthing instances in a one-to-one scenario. That’s the easy setup.

Furthermore, I’ve setup some data synchronization in a ‘star pattern’, with one central device which all other devices sync with. This has so far reflected the logical use case, linked to the nature of the data synchronized. It does provide a single point of failure. (In this particular case, the single point ‘should never’ fail, by it’s nature. At least in theory. :slight_smile: )

So…

Now I have a completely different use case, where it would make sense to have a ‘full peer-to-peer’ setup, where 7 devices would sync a directory with all other 6 devices. All to all.

In your experience, is this to be recommended or would I run into frequent synchronization conflicts? What kind of problems have you encountered in such cases, and most importantly, how do (did) you solve those problems?

Best regards

Guz


(Simon) #2

Conflicts are independent of star vs fully connected mesh. If anything, they could be less likely when fully connected because changes propagate faster. More connections means some more db size and overhead, especially with gui. Thats the usual reason to not connect qll devices, but that’s hardly relevant for 7 devices.


(Bob Hope) #3

it strongly depends on the “online-time” of the devices. If they are online only every now and then, the mesh is a good option to make sure that you stay in sync as soon as you come online. If you only have

Option 1:
A-B-C-D-E-F-G 

one line, if C is offline, the changes from A are not synced to the devices D to G. But with a mesh:

Option 2:
A-B-C
¦ ¦ ¦ 
D-E-F

You have alternative routes if a device is offline.

A full:

Option 3:
"everyone connected to everyone"

is more tricky when it comes to setup and maintenance, but if your devices are online only every now and then, the safest option to make sure to stay in sync.

A star setup:

Option 4:
  A
  ¦
B-C-D
 /¦\
E F G  

might be useful if your “Server” C is always online. The setup is easy, but the sync speed, depending on your network connection might suffer.


(Clemens) #4

I even use the full mesh setup for a distributing setup like in your first example. By looking at some data it seems like it improves still improves performance. Especially when one machine has to catch up after a disconnect. The database size is still reasonable for the 100GB I am sharing.

I start seeing problems with the synchronization when the cluster reaches a size of 15 or higher. 7 devices is no problem for the full peer to peer setup.


#5

Gentlemen,

Thank you very much for your insights.

In this case, I’ll go for the full peer-to-peer setup.

Regards

Guz