私は、パブリック リソースと制限付きリソースの組み合わせを提供する Varnish パイプラインを開発しています。
パブリック リソースへのアクセスがトラフィックの大部分 (>99.9%) を占めるため、制限されていないリソースの認証トークン検証などをバイパスするためのショートカットを作成したいと考えています。または、リソースが一種のブラックリストに含まれている場合にのみ、authN/Z パスを通過するようにするとさらに良いでしょう。
このブラックリストには、最大約 100 万 (今後数年以内) の UUID4 エントリを含めることができます。プレーンテキストのこのようなファイルはディスク上で約 3.7 GB を占めるため、十分な RAM 容量を持つマシンであれば、すべてをメモリ内に保持できるはずです。
私の質問は、このブラックリストを実装して検索を非常に高速化する方法についてです。私は「ネイティブ」ハッシュ セット、または Memcached、または同様の方法を検討しました。Memcached は、分散されている場合、おそらく処理速度を低下させます。同様のアプローチを実装した人はいますか? Varnish にはどのようなツールがありますか?
答え1
Varnish では、オブジェクトのハッシュに直接アクセスすることはできません。
ただし、ご指摘のとおり、制限されたリソースのリストをキー値ストアに保存することは可能です。
Varnish Enterprise の KVStore
純粋な実行速度について言えば、Varnish EnterpriseにはKVStoreモジュールがある。 これKVストアローカルメモリに保存され、再起動時にファイルから再構築できます。
Varnish Enterprise は無料ではなく、ライセンスキーを購入する必要があります。エンタープライズ版への参入障壁を低くしたい場合は、AWS、Azure、GCP、OCI に Varnish Enterprise の公式マシンイメージがあります。Ubuntu と Red Hat の両方に対応しています。ライセンスは前払い不要で、時間単位で課金されます。https://aws.amazon.com/marketplace/pp/B07L7HVVMF?ref_=srh_res_product_titleAWSの例
Redis VMOD
もしヴァーニッシュエンタープライズあなたには向いていないなら、Carlos Abalde の Redis VMOD無料でオープンソースであり、非常にうまく機能します。
復讐できるLUAVCL 内のスクリプトを使用して、Redis 内からより複雑なロジックを実行します。
Redis によって速度が低下するのではないかと心配な場合は、接続数を制限したり、接続が共有されるようにしたりすることもできます。