汎用的なキャッシュプール管理プロキシで、memcached デーモンに組み込まれています。すべてのテキストプロトコルをサポートします。管理、スケールアウト、移植性のためにクライアントを memcached サーバーのプールから抽象化するように設計されています。Lua を使用して、企業が要求のルーティング方法を完全にカスタマイズできる、非常に柔軟な構成システムを作成しています。また、一般的なユースケース向けの標準ライブラリが付属しています。
プロキシは、ローカルで、可用性ゾーン全体で、レプリケートされた設定と削除トラフィックを管理し、柔軟なルールに基づいて異なるプールにキーを送信することができます。迅速です (少なくとも数十万の RPS)。パフォーマンスは頻繁に改善されます。
プロキシは memcached に組み込まれており、展開を簡素化し、コードの再利用を可能にします。TLS 管理を含む、memcached のすべてのクライアント処理コードは、プロキシに再利用されます。プロキシは新しい外部依存関係を追加しないので、コンパイルと展開が簡単かつ高速です。キャッシュデーモンに埋め込むことで、柔軟なトポロジ設計が可能になります。これについては今後の投稿で説明します。
他のプロキシが存在するのに、なぜわざわざ作るのか? memcached に特化した人気のプロキシがありますが、それらは放棄されたか、構築が困難です。このプロキシはコミュニティによって完全にサポートされています。既存のプロキシは、構築された企業向けに設計されています。柔軟な構成システムにより、大企業で採用された設計や妥協に制限されることはありません。
このプロキシをエンドユーザーに届けるプロセスは始まったばかりです。何か不足している点や文書化されていない点がありましたら、ご連絡ください。
一般的な展開アーキテクチャについては Wiki で説明されています。
完全なドキュメントで詳しく説明しています。
このガイドには、1.6.26 以降のバージョンが必要です。プロキシを有効にするには、余分な構成引数を追加する必要があります。
./configure --enable-proxy
make
make test # optional
標準ルーティングライブラリでプロキシを試すには、Docker を使用することもできます。
# this image expects a "config.lua" to be in the directory
# you will need to start backend memcached's on your own!
docker run -v /path/to/config/directory:/config:ro --publish 11211:11211 \
dormando/memcached:next-proxy
このDockerのイメージはmemcachedの「次」ブランチをベースにしています。「次」ブランチのすべてのコードは本番環境で利用できることを目的としており、1〜2か月ごとにリリース・タグとtarballを切り取っています。また、リリースtarball用のDockerイメージも用意していますが、今のところ「次」ブランチを使用すれば、ユーザーのニーズにすばやく対応できます。
簡単な構成から始めるのに最適な場所は、routelibライブラリの確認です
このライブラリは現在活発に開発されています。追加したいルートまたは機能があれば、お知らせください。routelibに論理を追加または拡張するのは非常に簡単です。
このブログ記事では、新しいプロキシの基本的な機能を紹介しています。今後の記事では、より詳細な例や独自のルートライブラリの作成方法について詳しく説明します。