44

私は memcached の学習の初心者です。memcached サーバーは私を最も混乱させました。Web サーバーと同じように、単一のサーバー コンピューターと見なすことはできますか? memcached サーバーとクライアントの関係についても混乱しています。それらは別のコンピューターにありますか?

4

2 に答える 2

66

@phihagが回答したほとんどのことに同意しますが、いくつか明確にする必要があります。

Memcached は、キーに従ってデータを保存します (データベース ID と混同しないように、phihag はそれを ID と呼んでいました)。データはさまざまなサイズにすることができるため、小さなビット (データベースから取得した 1 つのレコードなど) を保存したり、大量のデータ (数百のレコードや完成した HTML ページ全体など) を保存したりできます。

Memcached通常、アプリケーション サーバーと同じマシンでは使用されません。その理由は、TCP 経由で使用するように設計されているためです (同じサーバーで動作するように設計されている場合、ソケット経由でアクセスできます)。プーリングサーバーとして。

プーリングの部分は興味深いです。この目的のために、それぞれ最大 10 GB の RAM を割り当てる Memcached を実行する 10 台のマシンを使用できます。10*10 = 100GB の RAM スペース。

Memcached に値を書き込むと、(ランダムに、またはいくつかのアルゴリズムを介して) サーバーの 1 つだけがそれを格納します。Memcached から値を読み取ろうとすると、それを保存したサーバーのみが値を送信します。

したがって、実際に、すべてのデータベース/memcached/アプリケーション/ファイルサーバーを同じマシンに配置できます。通常は、開発サンドボックスに対してこれを行います。ただし、それぞれを別のマシンに配置したり、2 つの他の組み合わせを配置したりすることもできます。

Memcached サーバーが 1 つだけ必要な場合は、アプリケーション コードと同じマシンでホストすることで問題ないでしょう。

varnish などのフロントエンド キャッシュ サーバーの使用を開始するか、NginX をフロントエンド キャッシュ サーバーとして構成する場合、これらのフロントエンド キャッシュ サーバーがキャッシュしているデータを格納するように一部の Memcached サーバーを構成する必要があります。

データベースを複数のサーバーに分散し、ファイル サーバーを CDN に分散する場合、アプリケーションは短期間に大量のデータを処理することになるため、1 回では利用できない大量の RAM スペースが必要になります。アプリケーション・サーバー。

また、Memcached サーバーのメモリ プールを拡張することは、新しいサーバーの IP をリストに追加するのと同じくらい簡単であるため、多くのサーバーと同様に水平方向にスケーリングします (これが Memcached の真の典型的な使用法です)。

于 2012-05-26T14:15:52.310 に答える
28

memcached サーバーは、memcached が格納するデータを管理するプログラムです (マシンと混同しないでください。サーバーとも呼ばれます)。理論的には、どのコンピューターでも実行できます。ただし、通常は、メイン アプリケーションが実行されているマシンと同じマシンで実行されます。

次に、アプリケーションは memcached クライアントを使用して memcached サーバーと通信し、キャッシュされたコンテンツを要求します。これは、従来のデータベースからデータをクエリするよりも高速です。

  1. memcached サーバーは ID を値にマップするだけで、テーブル全体をスキャンする必要はありません
  2. memcached プロトコルはより単純です。サーバーは SQL などを解析する必要はなく、クライアントは SQL を作成する必要もありません。
  3. memcached はデータベースの信頼性を必要としないため (バックアップ、障害分離、クラスタリング、セキュリティなどを考えてください)、アプリケーションが実行されているのと同じマシンで実行できます。アプリケーションが実行されているのと同じマシンでデータベースを実行することもできますが、上記の理由からそうするのは嫌われています。
于 2012-05-26T11:49:17.493 に答える