kmemcache:一種更高性能的memcached替代解決方案

jopen 11年前發布 | 14K 次閱讀 memcached 緩存服務器

Memcached是著名的高性能分布式內存對象緩存服務系統,被Google, 非死book, 搜狐等眾多公司應用于動態Web以減輕數據庫負載。

    Kmemcache是搜狐基礎架構部的同學,將目前最新穩定版本的memcached v1.4.15移植到linux內核的一個開源項目),旨在充分利用硬件資源,提供并發量更高、響應更快的緩存服務系統。

目前除了SASL(一種用來擴充C/S模式驗證能力的機制)功能外,kmemcache實現了memcached所有主要功能,包括完整的二進制、文本協議,基于tcpudpunix 域的通信協議,slab分配器動態均衡、hash表擴容等。所有操作、編程接口保持與memcached一致,兼容目前所有的客戶端編程接口,可以說現有的所有使用memcached的客戶端,不加修改就可以輕易的使用kmemcache服務,或者可以輕易的就能將kmemcache服務器動態添加到memcached集群中。

 

  Kmemcache實現機制

如何改變你的軟件,使其規模化?許多只提升硬件性能去支撐項目擴展的經驗都是值得借鑒的,然而我們提升了數倍的硬件性能,卻換不來相同倍數的程序性能,我們需要知道性能的實際情況。

要達到到更高的水平,需要解決的問題如下:

  ?  數據包的可擴展性

  ?  多核的可擴展性

  ?  內存的可擴展性

數據包的可擴展性:數據包的問題是它們需經內核的處理。網絡堆棧復雜緩慢,數據包最好直接到達應用程序,而非經過操作系統處理之后,但是編寫自己的網絡堆棧代碼是件困難的事情,kmemcache利用插口層的回調函數,實現了基于packet的線程調度機制。

多核的可擴展性:采用多核處理器系統,kmemcache利用內核中的工作隊列機制,實現處理線程與cpu的綁定,對于3.0之后的內核,需要編寫自己的內核線程處理代碼。

內存的可擴展性:如大內存頁技術等,kmemcache并沒有過多的考慮內存方面的問題,目前主要提供了一個buffer 管理器,大部分內存操作,如slab,讀寫緩沖區都在buffer基礎上管理。

項目主頁:http://www.baiduhome.net/lib/view/home/1371386181765

</span>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!