@makihara えとね、ざっくり3ステップあるわけ。
最初にWebサーバが外部からの投稿データを受け取って、
1. ActivityPub::ProcessingWorker
2. DistributionWorker
3. FeedInsertWorker
という順序でワーカーが起動。
(1)は投稿データを解析して、投稿データとしてデータベースに記録+通知+(2)の起動
(2)はそれを全員共通のタイムラインに配送+(3)の起動
(3)はひとりひとりのタイムラインに配送
で、処理が詰まっている(順番待ちになっている)と、ひとりひとりのタイムラインに表示されるまでに3回待たないといけないのね。だから2倍も3倍も遅延するっていう。
購読とフォローはどちらも(3)で処理するから同じだよ。
ハッシュタグタイムラインは(2)で処理される。
内部の投稿は(1)の代わりに投稿APIの処理が走って、あと(2)以降は同じ。
@noellabo ありがとうございます 購読もフォローも3回順番待ちだから、待ち時間は一緒なんですね
@noellabo ホームやリストはアカウントごとに投稿を配って置いておく場所(3段目)で、その前の全員共通のタイムライン(2段目)を見に行けばすべての投稿が見られるんですね だいぶ違うんだなあ
@makihara あとこれは本質なんですが、
ホームやリストというのは、800件とか1,200件、投稿を蓄えておく入れ物です。溢れると消える。
ハッシュタグ、ドメイン、ローカル、連合などは、全員共通なので配送が1回っていうこともあるけど、一時的な入れ物じゃなくて、配送されなくても最初から最後まで全部入っているということが決定的に違います。