memcached - a distributed memory object caching system

紹介: Memcached プロキシ - Dormando (2024 年 3 月 27 日)

これは何で、なぜこれが必要なのか?

汎用的なキャッシュプール管理プロキシで、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に論理を追加または拡張するのは非常に簡単です。

次のステップは?

このブログ記事では、新しいプロキシの基本的な機能を紹介しています。今後の記事では、より詳細な例や独自のルートライブラリの作成方法について詳しく説明します。