システムデザインにおけるポーリング

ポーリングにより、クライアントはサーバーから更新情報を受け取ることができます。これは、ウェイターが料理の様子を確認しに来る様子に例えることができます。

主な手法は3つあります。

ショートポーリング

クライアントが一定の間隔で更新をリクエストします。データが準備できていない場合、サーバーは空のレスポンスを返します。クライアントはデータが届くまでこのサイクルを繰り返します。この手法は、不要なリクエストを大量に発生させます。

ロングポーリング

クライアントがリクエストを送信すると、サーバーはそれを保持したままにします。サーバーはデータが準備できたときにのみレスポンスを返します。クライアントはレスポンスを受け取ると、すぐに新しいリクエストを送信します。これにより、ほぼリアルタイムに近い感覚が得られます。ショートポーリングと比較して、空のレスポンスを減らすことができます。

イベントストリーム

クライアントとサーバーが単一の接続を開きます。この接続は、どちらか一方が閉じるまで維持されます。イベントが発生するたびに、サーバーはクライアントにデータをプッシュします。これは真のリアルタイム通信です。

デメリットはリソースの使用量です。接続が特定のポートを占有します。そのポートは、接続が終了するまで他のタスクで使用できなくなります。

どの手法を選択するかは、システムの要件と、許容できるトレードオフによって決まります。

出典: https://dev.to/cibani_joe/polling-in-system-design-ph6