I am looking for a way to synchronize data between master data server (connected to a database) and slave game servers.
The master server should make a decisions about which data should be transferred to game servers, and implement data synchronization if required (for example, if data object is changed at master server, it should automatically send update packets to all required game servers).
I have some object classes to send: player data, map items data, ship data, item data, drone data and other game-related data.
I have my own implementation created with C# listeners (each game server has a structure at the master server which is listening for object changes in the master server's object arrays). But it looks quite complex and still has bottlenecks.
Do you have an experience of building such structures? What approaches or patterns can I use?