#lemmy/#kbin has a problem that #mastodon hasn’t even attempted to solve; groups and what happens when they get popular.
#Communities, #groups, #magazines, whatever they are called are implemented as #Actors in #ActivityPub. They are basically just *very* popular users who boost a *lot*.
You can’t just distribute them across instances the way normal actors do. Whichever server hosts @technology@lemmy.ml or @technology@beehaw.org is going to get HOSED on the regular.
While it’s true that the hosts of popular communities will get more traffic, it’s actually not as bad as it first seems.
Every Lemmy instance with at least one subscriber in that popular community will act as a mirror. That means that users who are just reading posts and comments will not cause any additional load on the home-instance of the popular community, because they are consuming local copies of the posts and comments.
This will actually help scaling a lot, and is in fact exactly how many centralized platforms scale (by creating a bunch of read-only copies of content).
@sunaurus what about when those users like/boost/reply?
In those cases, the action will need to propagate back to the home server (that’s where the “hosts of popular communities will get more traffic” comes from), but keep in mind - people usually read at least one or two orders of magnitude more than they write.
@sunaurus there’s a lot of upvoting happening on popular subreddits
Absolutely, but a user will only upvote a post once, while they will read it on every reload of their page. (By “read” I mean “fetch it from their local mirror”)
What does hosed mean, technically?
Lots of traffic, lots of posts, lots of comments, … That’s going to need more storage, more bandwidth, more CPU power, higher running costs. The original instance hosting the community bears a higher load than the instances that duplicate it.
Ideally, there would be a way to more evenly distribute this load across instances according to their resources, but from my (currently limited) knowledge, I don’t think Lemmy/ActivityPub is really geared for that kind of distributed computing, and currently I don’t believe that there’s a way to move subs between instances to offload them (although I believe some people may be working on that).
Perhaps the Lemmy back-end could use a distributed architecture for serving requests and storage, such that anyone could run a backend server to donate resources without necessarily hosting an instance.
For example, I currently have access to a fairly powerful spare server. I’m reluctant to host a Lemmy instance on it as I can’t guarantee its availability in the long term (so any communities/user accounts would be lost when it goes down), but while it’s available I’d happily donate CPU/storage/bandwidth to a Lemmy cloud, if such a thing existed.
There are pros and cons to this approach, but it might be worth considering as Lemmy grows in popularity.
It means the F word
So there is no way to horizontally scale?
The network can actually scale quite well thanks to the fact that other instances will act as mirrors of communities!
But what happens when the instance hosting the community goes down? Are all external instances still able to participate in that community? I get that they are mirrored but will everyone still be connected?
No. The “single source of truth” is the instance hosting the community. If it goes down the community itself goes down with the ship. The only way to prevent it is to have a IT infrastructure that can provide redundancy
Yeah, that isn’t good.
having a redundant system is feasible (I’m just a dev, not an architect so don’t take my words for granted) but it have to be designed and putted together … and prices are gonna skyrocket
Lemmy / the fediverse isn’t designed this way, but it could be. There are certainly systems that share diskspace and are multimaster and keep stuff as long as someone is interested in it(i.e. accessing the data). I really start to think added to the lemmy / fediverse servers should be something like what freenet used to do in terms of hosting content.
If it’s just a temporary outage, whatever the mirror has received prior to the outage will be shown to users on that other instance but only local interactions for that instance will update it, when it comes back up, things like votes and comments will be synchronized again across all of the instances.
For permanent outages, the community will just need to be started again on a new instance.
But they could pick up where the now defunct community left off, right? Like, the cached copy from another server could be imported on a new server elsewhere?
That functionality doesn’t currently exist, but migration of communities is something that’s being actively talked about for development.
Out of curiosity, how is kbin’s magazine system designed to avoid this problem?
From what I understand… wait I understand nothing
It’s not
@schizanon @technology@lemmy.ml @technology@beehaw.org Yep. I expect that long-term a lot of instances will limit the ability to create groups (as Beehaw does) or place restrictions on the size a group is allowed to grow before asking that group to move to another/their own instance or ask for finances to help with the costs.
Did you post this from Mastodon? I wish I could tell where this came from.
Basically if I understand this right, if you have an instance with a very popular community on it. It is likely that it will need some massive infrastructure scaling if it wants to handle the enormous amount of world wide traffic?
I wish I could tell where this came from.
Isn’t that what this colourful icon in Lemmy is for? It appears to link to the original source of the post or comment: