ジョブは短時間で実行できる単位に分割します。

そうしないと、ひとつのジョブが長時間占有しつづけることとなり、効率良く他のジョブを同時実行できなくなります。

また、ある処理を実行しているうちに、他の処理の影響で実行に失敗することも起きます。

たとえば、お気に入りしようとした投稿が、何かの都合でもう削除されているかもしれません。

ひとつのジョブが大きすぎると、こういう状況の変化に対応するのが難しくなります。

--

さて、リモートから誰かの投稿がやってきました。

この投稿者をこのサーバでは100人がフォローしているので、100人のタイムラインに投稿を流さねばなりません。

この時まず、リモートサーバから来たActivityの内容を確認するワーカーを実行します。投稿者Aの新規投稿であると解析されました。

次に、この投稿を各タイムラインに配送するワーカーを実行します。

やることの多いワーカーですが、公開範囲を確認し、公開タイムライン(連合、ハッシュタグなど)に流す処理、フォロワーのホームやリストに流す処理を行います。

このうち、フォロワーは人数が多いので、一人ずつのホームとリストそれぞれで100以上のワーカーに分割して走らせます。

難しいかと思いますが、なんとなくイメージできますでしょうか?

Reply to this note

Please Login to reply.

Discussion

No replies yet.