memcached分佈式內存緩存服務器

memcached是什麼?

memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 爲首開發的一款軟件。如今已成爲 mixi、 hatena、 Facebook、 Vox、LiveJournal等衆多服務中 提升Web應用擴展性的重要因素。算法

許多Web應用都將數據保存到RDBMS中,應用服務器從中讀取數據並在瀏覽器中顯示。 但隨着數據量的增大、訪問的集中,就會出現RDBMS的負擔加劇、數據庫響應惡化、 網站顯示延遲等重大影響。數據庫

這時就該memcached大顯身手了。memcached是高性能的分佈式內存緩存服務器。 通常的使用目的是,經過緩存數據庫查詢結果,減小數據庫訪問次數,以提升動態Web應用的速度、 提升可擴展性。瀏覽器

經過緩存數據庫查詢結果,減小數據庫訪問次數,以提升動態Web應用的速度、 提升可擴展性。緩存


圖1 通常狀況下memcached的用途服務器

memcached的特徵

memcached做爲高速運行的分佈式緩存服務器,具備如下的特色。分佈式

  • 協議簡單memcached

  • 基於libevent的事件處理性能

  • 內置內存存儲方式網站

  • memcached不互相通訊的分佈式spa

協議簡單

memcached的服務器客戶端通訊並不使用複雜的XML等格式, 而使用簡單的基於文本行的協議。所以,經過telnet 也能在memcached上保存數據、取得數據。


    基於libevent的事件處理

    libevent是個程序庫,它將Linux的epoll、BSD類操做系統的kqueue等事件處理功能封裝成統一的接口。即便對服務器的鏈接數增長,也能發揮O(1)的性能。 memcached使用這個libevent庫,所以能在Linux、BSD、Solaris等操做系統上發揮其高性能。 關於事件處理這裏就再也不詳細介紹,能夠參考Dan Kegel的The C10K Problem。


    內置內存存儲方式

    爲了提升性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。 因爲數據僅存在於內存中,所以重啓memcached、重啓操做系統會致使所有數據消失。 另外,內容容量達到指定值以後,就基於LRU(Least Recently Used)算法自動刪除不使用的緩存。 memcached自己是爲緩存而設計的服務器,所以並無過多考慮數據的永久性問題。


    memcached不互相通訊的分佈式

    memcached儘管是「分佈式」緩存服務器,但服務器端並無分佈式功能。 各個memcached不會互相通訊以共享信息。那麼,怎樣進行分佈式呢? 這徹底取決於客戶端的實現。本連載也將介紹memcached的分佈式。

    相關文章
    相關標籤/搜索