@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回順番待ちだから、待ち時間は一緒なんですね
@makihara ですです。
なお、購読系機能と専用タイムラインの両方がある場合、
a. ハッシュタグフォロー(購読)
b. ハッシュタグタイムライン
a. ドメイン購読
b. ドメインタイムライン
ってことだけど、これは後者(b)の方が個別配送しないので待ち時間が短いです。
普段は使い勝手で考えればいいけど、詰まってる時は後者の方がサーバ負荷も軽いし使う人も有利。だいたいWebUIからじゃないと見えないけど。
@noellabo ホームやリストはアカウントごとに投稿を配って置いておく場所(3段目)で、その前の全員共通のタイムライン(2段目)を見に行けばすべての投稿が見られるんですね だいぶ違うんだなあ