@makihara えとね、ざっくり3ステップあるわけ。
最初にWebサーバが外部からの投稿データを受け取って、
1. ActivityPub::ProcessingWorker
2. DistributionWorker
3. FeedInsertWorker
という順序でワーカーが起動。
(1)は投稿データを解析して、投稿データとしてデータベースに記録+通知+(2)の起動
(2)はそれを全員共通のタイムラインに配送+(3)の起動
(3)はひとりひとりのタイムラインに配送
で、処理が詰まっている(順番待ちになっている)と、ひとりひとりのタイムラインに表示されるまでに3回待たないといけないのね。だから2倍も3倍も遅延するっていう。
購読とフォローはどちらも(3)で処理するから同じだよ。
ハッシュタグタイムラインは(2)で処理される。
内部の投稿は(1)の代わりに投稿APIの処理が走って、あと(2)以降は同じ。
@makihara フォローと購読で、購読の方が軽い場合というのは、
1. 購読は(主に)公開投稿だけを処理するので、処理対象が少ない(なので公開投稿しかしない相手なら同等)
2. フォローされている側としては購読者を認識していないので、送り先リストの件数が減る。減るけど、一つのサーバに一つしか送らないので、実はさほどの差ではない
ってぐらいかなあぁ。