フォロワーの数と、Mastodonの負荷の話でもしましょう。
--
私のアカウントには、6,735のフォロワーがいます。
さて、私が何かを投稿したり、ブーストした際に、どこにどのぐらいの負荷がかかると思いますか?
これを判断するためには、ローカルのフォロワー数と、リモートサーバの数を知る必要があります。計算してみましょう。
fedibird.comの中のフォロワーは、3,089だそうです。
リモートのフォロワーへは、サーバの数になります。フォロワーは745サーバに散らばっているようです。
投稿した際、ローカルのユーザーには、fedibird.comがそれぞれに配ります。
ホームでフォローしている人が3,068、リストに64、アカウント購読に191、合計で3,323個のDistributionWorkerが生成されてタイムラインに挿入する仕事をします。通知やハッシュタグ、キーワード購読などの処理も別途行われます。
リモートへは、745個のActivityPub::DeliveryWorkerを起動し、リモートサーバに送ります。そのサーバの中のフォロワーへ配送する処理は、相手に任せます。
丸投げする分、リモートの方が遙かに負荷が軽い。
ここが分散SNSのポイントになってくるところです。
@noellabo どうもありがとうございます。とてもわかりやすいです。理想的にはやはり一人一サーバでしょうか。そうしたら、ひとつの投稿にたいしてフォロワーそれぞれのサーバで並列処理される感じになるので、そのように思うのですが。
@kmiura 要素が複数あって、内部配送のコスト、外部配送のコスト、複数人でサーバを共同利用することによる外部配送コスト低減や経済性などがあり、一人一サーバが理想……とはならないかなと思っています。
もし、私が少人数の、それこそ一人のサーバだとしたら、リモートへの配送だけで済みます。
たとえば、人気のある人が自分のサーバに人を集めてしまったら、フォロワーだらけになりますから、それだけの負荷を自分で処理しなければなりません。
ところが、自分が発信するだけのサーバにして、フォロワーには分散SNS / Fediverseの空間にいてもらえば、サーバの数だけ配送すれば済みます。
10万人のフォロワーを自分のサーバに抱えると大変ですが、1,000のサーバに配送するだけなら楽々です。
この違いは承知しておきましょう。
ちなみに、私が投稿した際、リモート側では、mstdn.jpが1,320のフォロワーへの配送を受け持ってくれています。misskey.ioが196、mastodon-japan.netが159、pawoo.netが146、mastodon.socialが100です。
私はfedibird.comのサーバ管理者なので、たまたまfedibird.com(ローカル)のフォロワーが多いですが、みなさんの場合はもっと分散していると思います。
全体で薄く広く負荷を引き受けて、一つのノード(サーバ)が無理をしないように……なっているかな?
大きいサーバはちょっと不利ですね?