That being said, I do agree with you that it’s inefficient to open a connection to every other instance.
About your proposals:
I don’t think your first solution is feasible. How would an instance know which other 10 instances to notify?
I do like your idea of batching operations together! Would definitely cut back on the amount of HTTP calls and signature validations. Perhaps this can even be extended further: right now every user interaction is signed before its been sent to other instances. Would be interesting if the instance itself also has a public/private key and that it can sign a whole batch at once (rather then signing every single user interaction).
I looked at how many WebSocket connections a single server could keep open, and it seems quite high: https://unetworkingab.medium.com/millions-of-active-websockets-with-node-js-7dc575746a01
That being said, I do agree with you that it’s inefficient to open a connection to every other instance.
About your proposals: