kmemcache:一種更高性能的memcached替代解決方案
Memcached是著名的高性能分布式內存對象緩存服務系統,被Google, 非死book,
Kmemcache是搜狐基礎架構部的同學,將目前最新穩定版本的memcached v1.4.15移植到linux內核的一個開源項目),旨在充分利用硬件資源,提供并發量更高、響應更快的緩存服務系統。
目前除了SASL(一種用來擴充C/S模式驗證能力的機制)功能外,kmemcache實現了memcached所有主要功能,包括完整的二進制、文本協議,基于tcp、udp、unix 域的通信協議,slab分配器動態均衡、hash表擴容等。所有操作、編程接口保持與memcached一致,兼容目前所有的客戶端編程接口,可以說現有的所有使用memcached的客戶端,不加修改就可以輕易的使用kmemcache服務,或者可以輕易的就能將kmemcache服務器動態添加到memcached集群中。
如何改變你的軟件,使其規模化?許多只提升硬件性能去支撐項目擴展的經驗都是值得借鑒的,然而我們提升了數倍的硬件性能,卻換不來相同倍數的程序性能,我們需要知道性能的實際情況。
要達到到更高的水平,需要解決的問題如下:
數據包的可擴展性:數據包的問題是它們需經內核的處理。網絡堆棧復雜緩慢,數據包最好直接到達應用程序,而非經過操作系統處理之后,但是編寫自己的網絡堆棧代碼是件困難的事情,kmemcache利用插口層的回調函數,實現了基于packet的線程調度機制。
多核的可擴展性:采用多核處理器系統,kmemcache利用內核中的工作隊列機制,實現處理線程與cpu的綁定,對于3.0之后的內核,需要編寫自己的內核線程處理代碼。
內存的可擴展性:如大內存頁技術等,kmemcache并沒有過多的考慮內存方面的問題,目前主要提供了一個buffer 管理器,大部分內存操作,如slab,讀寫緩沖區都在buffer基礎上管理。