[Architecture] Hub-Spoke model for federation? · Issue #3245 · LemmyNet/lemmy
github.com
external-link
Question One of the biggest issues I am currently seeing with Lemmy, is federation. Either... Federation between instances having issues. Federation is backed up. Federation / Syncing is not scalin...

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.

@z2k_@lemmy.nz
link
fedilink
English
41Y

In your proposal, who would run these hub servers?

HTTP_404_NotFound
creator
link
fedilink
English
41Y

Theoretically, anyone could run a hub server.

A hub server, would work just like an instance does in the current state, and to keep things decentralized, I would recommend it stay that way.

However, I do believe some controls would be needed to prevent EVERYONE from creating their own hub server, leading to the current issue of instantly large federation loads.

Perhaps, just a simple check to prevent a hub from running with less than adequate resources. Or, perhaps, we as a community, can collectively decide who/where/what the hub servers are.

I don’t have all of the answers to my question/proposal- I just know the full mesh topology is NOT going to scale, and we do need to work together to find a better solution to this problem.

What if each instance had a message broker distribute updates in a pub/sub topics oriented fashion? Does the activitypub spec specify that instance X must http post updates to instance Y or is there room for implementations to get creative?

HTTP_404_NotFound
creator
link
fedilink
English
1
edit-2
1Y

Does the activitypub spec specify that instance X must http post updates to instance Y or is there room for implementations to get creative?

For my initial idea, my proposal is to allow servers to have the option to choose to go through a hub, or to function as-is.

What if each instance had a message broker distribute updates in a pub/sub topics oriented fashion?

That would help the current implementation pretty drastically- although, I am not 100% sure how it is done currently.

HTTP_404_NotFound
creator
link
fedilink
English
11Y

Another idea, we can collectively create, and fund the “Lemmy Organization”, and hold it responsible for running/maintaining the hub servers.

Would just need to ensure the proper checks and balances are implemented to prevent said organization from… well, (doing what reddit is currently doing)

Create a post

A nice place to discuss rumors, happenings, innovations, and challenges in the technology sphere. We also welcome discussions on the intersections of technology and society. If it’s technological news or discussion of technology, it probably belongs here.

Remember the overriding ethos on Beehaw: Be(e) Nice. Each user you encounter here is a person, and should be treated with kindness (even if they’re wrong, or use a Linux distro you don’t like). Personal attacks will not be tolerated.

Subcommunities on Beehaw:


This community’s icon was made by Aaron Schneider, under the CC-BY-NC-SA 4.0 license.

  • 1 user online
  • 64 users / day
  • 174 users / week
  • 621 users / month
  • 2.31K users / 6 months
  • 1 subscriber
  • 3.28K Posts
  • 67K Comments
  • Modlog