- cross-posted to:
- [email protected]
- cross-posted to:
- [email protected]
https://github.com/LemmyNet/lemmy/issues/3245
I posted far more details on the issue then I am putting here-
But, just to bring some math in- with the current full-mesh federation model, assuming 10,000 instances-
That will require nearly 50 million connections.
Each comment. Each vote. Each post, will have to be sent 50 million seperate times.
In the purposed hub-spoke model, We can reduce that by over 99%, so that each post/vote/comment/etc, only has to be sent 10,000 times (plus n*(n-1)/2 times, where n = number of hub servers).
The current full mesh architecture will not scale. I predict, exponential growth will continue to occur.
Let’s work on a solution to this problem together.
Just removing that load from the main instance server, allowing it to just handle serving its local user-base.
In short- splitting the load into multiple components, rather than everything being handled by just the single instance server.
I’m just not seeing a benefit here, I think this is a solution to the wrong problem. Your proposal in theory cuts outbound updates from the big hubs, but in reality they’re only updating a subset of other instances for any given update, and it doesn’t do anything to help with inbound updates. And to do that, you have to solve a pretty tricky problem.
If my instance gets an update from Beehaw, I can validate that they’re allowed to do so, because Beehaw has a TLS certificate that says “Yep, this is actually Beehaw.” If you introduce a hub system, I need some way to determine that the hub system that’s telling me “Beehaw has an update for you” is allowed to send updates on behalf of Beehaw.
To clarify-
After feedback/comments, I have modified the idea- this would be a optional local proxy/hub/delegation server/service, hosted by the instance owners.
https://github.com/LemmyNet/lemmy/issues/3245#issuecomment-1601585922
Ie- you can optionally scale your federation updates, independent of your main application server.