OpenStackの共有コンポーネント-memcacheキャッシングシステム

1.キャッシュシステム

1.1静的なWebページ

  1>静的なWebプログラムでは、ネットワーク(Network)を介して、Webブラウザ(IE、FireFoxの、など)を使用して、クライアントが、私は今、すべての任意のページに取得する必要があり、サーバーに指示要求(リクエスト)を開始するためにHTTPプロトコルを使用して、サーバーに接続しますWebサーバへのリクエストは、ユーザーのニーズ後のWEBサーバ、ファイルシステム(すべての静的なページを格納するためのディスク)からコンテンツを削除します。クライアントが表示するように影響を与えるために、コンテンツを受信した後、クライアントにWebサーバーを使用して帰国した後、ブラウザを介して決意をレンダリングします。

  2>ページではJavaScript / VBScriptのは、/ AJAXを使用して、より魅力的な表示、静的なウェブ有効にするには(「非同期JavaScriptとXML」(非同期JavaScriptとXML)でAJAXを、インタラクティブなWebアプリケーションを作成するために、Web開発技術をいう。)しかし、これらのサーバー自体に変更を持っていないので、特殊効果は、クライアント上で、ブラウザによってユーザに提示されます。

  3>静的なウェブは、データベースに接続できません。

  4>静的なWeb開発技術リソース:HTMLを。

  5>今そのウェブページ、JSの広範な使用は、ブラウザがページを開くには、原因となる、多くのメモリを占有します圧力は、サーバが低減されますが、圧力がクライアントに転送されます。

 1.2動的なWebインタフェース

  1>動的WEB、プログラムは今もすべて、クライアントとサーバ、クライアントがHTTPプロトコル開始要求を使用して、ネットワーク(ネットワーク)を介してサーバに接続されているブラウザ(IEは、Firefoxなど)を、使用している(Request)を使用しますリクエストは、処理のためのWEBサーバを経由します。

  クライアントは、静的リソース(* .htmまたは* .htmの)を要求すると、要求は実行を解析するために、クライアントのブラウザに送信し、ファイルシステムからコンテンツを削除した後、WEBサーバに直接WEBサーバに転送されます。

  2>クライアント要求は、動的なリソースがある場合(*の.jsp、*。ASP / *。ASPX、*。PHP)、Webコンテナ(Webコンテナ)への最初の要求は、データベースから、Webコンテナ内のデータベースに接続します一連の操作の後にコンテンツが動的データのうち、一緒にページを入れて表示し、ページの掻き取り内容を示すWEBサーバへのすべての内容を表示した後、コンテンツの採択後のWEBサーバが実行解析するために戻って、クライアントのブラウザに送信されます。

  サイトへの大規模な大規模な同時アクセスには、そのようなレコードの数百万でリレーショナルデータベースのクラスタ、特に大規模なリレーショナルデータベース、もしその同時毎秒何千回へのアクセス、および各訪問としてOpenStackの表中のとき、クエリデータの記録、その効率も余裕がないことができ、データベースのために、非常に低くなります。

  解決することができる緩衝系を使用した場合、大規模な同時データアクセスが非効率的なデータベースや圧力やその他の問題、頻繁にメモリアクセスで重複データを避けるために使用されるアクティブ・データ・ストレージ・システム・キャッシュによってもたらされる、データベースクエリをもたらしました頻繁にディスクI / Oと大きなテーブルクエリ時間のオーバーヘッドなので、キャッシュシステムは、ほとんどの大規模なサイトに不可欠な機能モジュールです。

  キャッシュメモリシステムは、大規模生産のデータベースメモリベースのキャッシュ・データベースは、それによってデータ・アクセス・クライアントからのフィードバックからの要求、およびデータベースバックエンドへのアクセスを減少させる圧力を増加させる、高速なデータアクセス動作を提供するの後端に対して、データベースに基づくものと考えることができます。

2. Mencacheコンセプト

       memcachedのは、オープンソース、高性能、分散メモリオブジェクトキャッシュシステムです。データベースの負荷を軽減することによってサイトアクセス速度を向上させるために、メモリ内のデータとオブジェクトをキャッシュすることにより読み取るデータベースの数、加速動的なWebアプリケーションを低減します。

  memcachedはキャッシュメモリであり、多くの場合、キャッシュメモリ内のオブジェクトやデータにアクセスする必要があり、メモリのデータをメモリにハッシュテーブルにハッシュを使用して格納された後、データキャッシュは、API経由でアクセスされましたアクセス制御およびセキュリティ管理、一般的に安全領域memcachedサーバのユーザにあり、従って、インターネットベースのシステムアーキテクチャのためのMemcachedの認証がないのでデータは、キー値の形でハッシュテーブルに格納されています。

  物理メモリが十分な空きスペースがあるときにmemcachedサーバ・ノードは、Memcachedのは、最も最近使用されたアルゴリズム(LRU、LastRecentlyUsed)最近の非アクティブなデータがクリーンアップ、それによってソートアウトデータを格納するために必要な新しいメモリ・ストレージ・スペースを使用します。

  Memcachedのは、また。クラスタシステムとしてのキャッシュに、多くの問題が明らかな利点を持っており、また、二次開発に簡単ですので、より多くのユーザーに大規模なクラスタのデータ・キャッシュの解決に持っているオープンAPIをMemcachedの、大規模なようにほとんどのプログラミング言語は、javacの、C / C ++ C#、PerlやPython、PHP、一般的なプログラミング言語のRubyの様々なとして、Memcachedのに使用することができます。

  Memcachedの多くの利点ので、キャッシュシステムクラスタ化された多くのオープンソースプロジェクトの最初の選択肢となっています。キーストーンの認証プログラムとしてOpenstacksd。大幅にデータベースの高負荷運転の下で大規模なクラスタでユーザーOpenStackのを向上させることができ、ユーザのログイン認証、MySQLのクエリのバックエンドデータベースに格納されているユーザ情報の必要性を排除し、そのような識別情報として、トークンのテナントをキャッシュするためのMemcachedを使用します。そのようなWeb管理インターフェースとオブジェクトストレージホライゾンスウィフトプロジェクトのMemcachedは、クライアント要求の応答速度を改善するために、キャッシュデータに使用するアクセスなどの認証方法。

3. Memcacheのキャッシュプロセス

  1>データは、Memcacheの中で、クライアントから要求されたかどうか確認し、存在する場合、データ上の任意の操作を実行していない、直接、要求されたデータを返します。

  2>要求されたデータは、Memcacheのではない場合、クライアントに戻し、データベースからデータを取得するためにデータベースクエリに行き、Memcacheのデータキャッシュながら、

  3>各データベース更新Memcacheの中にデータベースを更新します。データの整合性を確認してください。

  Memcacheの割り当てられたメモリ空間が使い尽くされると4>、障害ポリシー戦略に添加した(少なくとも最近最も最近、中古)LRU使用して、古いデータを交換するために最初に、次いで、最近使用されていないデータを交換します。

4. Memcacheの特長

1>プロトコルシンプル

       其使用基于文本行的协议,能直接通过 telnet 在Memcached 服务器上存取数据

2>  基于 libevent 的事件处理

       libevent 利用 C 开发的程序库,它将 BSD 系统的kqueue,Linux 系统的 epoll 等事件处理功能封装成为一个接口,确保即使服务器端的链接数。加也能发挥很好的性能。Memcached 利用这个库进行异步事件处理。

3> 内置的内存管理方式

       Memcached 有一套自己管理内存的方式,这套方式非常高效,所有的数据都保存在Memcached内置的内存中,当存入的数据占满空间时,使用 LRU 算法自动删除不使用的缓存,即重用过期的内存空间。Memecached 不考虑数据的容灾问题,一旦重启所有数据全部丢失。

4> 节点相互独立的分布式

        各个 Memecached 服务器之间互不通信,都是独立的存取数据,不共享任何信息。通过对客户端的设计,让 Memcached 具有分布式,能支持海量缓存和大规模应用。

5. 使用Memcache应该考虑的因素

1> Memcached服务单点故障

       在Memcached集群系统中每个节点独立存取数据,彼此不存在数据同步镜像机制,如果一个Memcached节点故障或者重启,则该节点缓存在内存的数据全部会丢失,再次访问时数据再次缓存到该服务器。

 2> 存储空间限制

       Memcache缓存系统的数据存储在内存中,必然会受到寻址空间大小的限制,32为系统可以缓存的数据为2G,64位系统缓存的数据可以是无限的,要看Memcached服务器物理内存足够大即可。

 3> 存储单元限制

    Memcache缓存系统以 key-value 为单元进行数据存储,能够存储的数据key尺寸大小为250字节,能够存储的value尺寸大小为1MB,超过这个值不允许存储。

 4> 数据碎片

  Memcache缓存系统的内存存储单元是按照Chunk来分配的,这意味着不可能,所有存储的value数据大小正好等于一个Chunk的大小,因此必然会造成内存碎片,而浪费存储空间。

5> 利旧算法局限性

  Memcache缓存系统的LRU算法,并不是针对全局空间的存储数据的,而是针对Slab的,Slab是Memcached中具有同样大小的多个Chunk集合。

 

 6> 数据访问安全性

    Memcache缓存系统的慢慢Memcached服务端并没有相应的安全认证机制通过,通过非加密的telnet连接即可对Memcached服务器端的数据进行各种操作。

 

おすすめ

転載: www.cnblogs.com/ajunyu/p/11106053.html