フォローは投稿を取得するから重めだけど、購読はハッシュタグTLと同じで連合TLから公開投稿を拾ってくるだけだからサーバに負担がかかりにくいイコール遅延起こりにくいんでしたっけ
@makihara フォローと購読で、購読の方が軽い場合というのは、
1. 購読は(主に)公開投稿だけを処理するので、処理対象が少ない(なので公開投稿しかしない相手なら同等)
2. フォローされている側としては購読者を認識していないので、送り先リストの件数が減る。減るけど、一つのサーバに一つしか送らないので、実はさほどの差ではない
ってぐらいかなあぁ。
@noellabo 購読とフォローで思ったよりは差はないんですねえ どちらかというと公開投稿を拾うフィルターとしての運用に向いてると
@makihara リレーでしか受け取ってないアカウント(所属鯖から誰もフォローしてない)の場合、フォローされる側からすると軽くなるかな。
ま、負荷のことは考慮に入れなくていいと思います。
@noellabo ありがとうございます 購読もフォローも3回順番待ちだから、待ち時間は一緒なんですね
@makihara ですです。
なお、購読系機能と専用タイムラインの両方がある場合、
a. ハッシュタグフォロー(購読)
b. ハッシュタグタイムライン
a. ドメイン購読
b. ドメインタイムライン
ってことだけど、これは後者(b)の方が個別配送しないので待ち時間が短いです。
普段は使い勝手で考えればいいけど、詰まってる時は後者の方がサーバ負荷も軽いし使う人も有利。だいたいWebUIからじゃないと見えないけど。
@noellabo あー!!ハッシュタグやドメインの購読機能とTLとでどう違うのかよくわかってなかったんですけど、こういうことなんですね!前者(a)は3段階待ちで、後者(b)は2段目で処理
@makihara あとこれは本質なんですが、
ホームやリストというのは、800件とか1,200件、投稿を蓄えておく入れ物です。溢れると消える。
ハッシュタグ、ドメイン、ローカル、連合などは、全員共通なので配送が1回っていうこともあるけど、一時的な入れ物じゃなくて、配送されなくても最初から最後まで全部入っているということが決定的に違います。
@noellabo ホームやリストはアカウントごとに投稿を配って置いておく場所(3段目)で、その前の全員共通のタイムライン(2段目)を見に行けばすべての投稿が見られるんですね だいぶ違うんだなあ
@makihara えとね、ざっくり3ステップあるわけ。
最初にWebサーバが外部からの投稿データを受け取って、
1. ActivityPub::ProcessingWorker
2. DistributionWorker
3. FeedInsertWorker
という順序でワーカーが起動。
(1)は投稿データを解析して、投稿データとしてデータベースに記録+通知+(2)の起動
(2)はそれを全員共通のタイムラインに配送+(3)の起動
(3)はひとりひとりのタイムラインに配送
で、処理が詰まっている(順番待ちになっている)と、ひとりひとりのタイムラインに表示されるまでに3回待たないといけないのね。だから2倍も3倍も遅延するっていう。
購読とフォローはどちらも(3)で処理するから同じだよ。
ハッシュタグタイムラインは(2)で処理される。
内部の投稿は(1)の代わりに投稿APIの処理が走って、あと(2)以降は同じ。