GAE Channel API を経済的に実行可能にする唯一の方法は、何らかのプール メカニズムを実装することです (アプリ エンジンの上級プロダクト マネージャーの 1 人が、私が法外な価格についてメールしたときに、このことを教えてくれました)。期限切れ。
私はチャネル プールを実装する方法 (場所) についてブレインストーミングを行ってきましたが、私が考える各方法にはかなり深刻な欠点があります。
サーブレットの静的メモリ-- 良いですが、新しい VM インスタンスが開いたり、クライアントがある VM から別の VM に渡されたりすると、かなりの数の開いているチャネルが失われます。
Memcache -- 少なくともメモリはすべての VM からグローバルにアクセスできますが、非アクティブとメモリ プレッシャーにより、非常に有効なチャネルが削除される可能性が高くなります。
バックエンド インスタンス-- 信頼性の点ではおそらく最良のオプションですが、バックエンドを実行するための費用が、最初にプールを実装することによる節約をすべて食い尽くしてしまいます!
不足している VM 間でチャネル プールを実装するためのより良い場所/方法はありますか? または、ここでのオプションの欠点に不必要にこだわっていますか? そうしないと、私のアプリはポーリングに戻す必要があるようです (私の暫定的な指標では、これはわずかに安価に見えます)。