this post was submitted on 21 Jun 2023
47 points (100.0% liked)
Technology
37736 readers
444 users here now
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.
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
One consideration, since they are only having to basically sub/pub - the load actually might be drastically lower than expected.
Suppose- that is a valid point. The issue though- those large instances are unable to keep up with demand and load, causing lots of federation issues.
Perhaps, my idea actually wouldn't help that at all, but, using lemmy.ml as an example-
Instead of it having to send all of its updates out to every server subscribed- it can delegate that to a hub server to do it. The hub server can run a very minimal set of instructions, with enough intelligence to handle sub/pub.
Perhaps- one idea is, instead of thinking of it as a hub-server, think of it as a proxy server. Being able to delegate your instances actions to the proxy server to reduce that load from the main server.
And, instead of the hubs/proxies being more centralized, perhaps, its just an optional thing which you CAN do.
My line of thinking, is methods to reduce load from the main servers. This might be an idea that only benefits the handful of big servers.
To also further clarify- I DONT have a solution to the problem. I am only intending to establish a forum to discuss if this is even a viable option, or perhaps, think of other ways to spread around the load.
I am not certain on scenarios you were mentioning above, but I do agree that separating software to instance plus hub/proxym/mssage queue could help with handling load.
How can we scale our big i instances? I don't know maybe it is easy to put instance on multiple servers, but sounds to me they are just buying bigger one, and that will fill up fast of growth continues to happen.
I would like to hear from developers what they think, but thank you for starting conversation about scaling.
I am probably missing something / being really oblivious (its been a long day...) but wouldn't this same problem occur to the hub server in your model?
Although thinking about it a bit more, I thought I recalled seeing one of the Lemmy devs mention that the biggest issue is the SQL queries that are ran for various actions (such as loading the front page) - if that is the case, I don't know if this idea would help with that.
The idea of a centralized hub server(s) also sounds like we'd be moving closer to the model of a centralized Reddit... But I guess in a way, the fact that larger instances exist in of itself poses the same issue?
... I'm probably just rambling to myself at this point, however, I do think a message queue type of system for federating events would be a good idea, for the sake of recovering from send failures.
I'm just guessing here, but maybe a better solution would be to just to separate the flows inside the same server, this way the hosts of those server can use have containers dedicated to each flow.
Also I don't know much about architecture so take it with a grain of salt and correct me if I'm saying something silly. We could separate the lemmy container to have an API and a federation container.
The clients still connect only to the API, the API offloads the federation requests to be sent to the specific container which can be hosted in another machine.
So we'll basically have the API and a message broker for the federation request, both being managed by the same admin since each host of a community should be responsible to send the updates to the users/instances subscribed.