一、HandlerSocket是什么?
HandlerSocket是akira higuchi寫的一個MySQL的插件。以MySQL Daemon Plugin的形式提供類似NoSQL的網絡服務,通過這個插件,你可以直接跟MySQL后端的存儲引擎做key-value式的交互,省去了MySQL上層的SQL解釋、打開關閉表、創建查詢計劃等CPU開銷。
目前使用MySQL的網站,多半同時使用Memcache作為鍵值緩存。雖然這樣的架構極其流行,有眾多成功的案例,但過于依賴Memcache,無形中讓Memcache成為故障的根源:
Memcache數據一致性的問題:當MySQL數據變化后,如果不能及時有效的清理掉過期的數據,就會造成數據不一致。這在強調即時性的Web2.0時代,不可取。
Memcache崩潰后的雪崩效應:作為緩存的Memcache一旦崩潰,MySQL很可能在短時間內承受高負載而宕機。
注:關于清理過期數據的問題,可以在程序架構上想辦法,如果數據操作有統一DAO封裝的話,可以利用Observer模式來清理過期數據,非主題內容,資料自查。
面對以上問題,HandlerSocket項目是個不錯的解決方案,它通過插件的方式賦予MySQL完整的NoSQL功能,從原理上講,它跳過MySQL中最耗時的語法解析,查詢計劃等步驟,直接讀取數據,如果內存夠大,能裝下索引,MySQL的查詢效率能提高若干倍!
HandlerSocket:https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL
php-handlersocket:http://code.google.com/p/php-handlersocket/
系統信息約定:
系統版本:CentOS 6.3 X86
PHP安裝目錄:/usr/local/webserver/php5318
MySQL安裝目錄:/usr/local/webserver/mysql5520
HandlerSocket安裝路徑:/usr/local/webserver/handlersocket
二、安裝配置HandlerSocket
安裝之前建議你先安裝相關支持及需要的組件包:
1. 安裝
如果使用Percona Server版本的MySQL就簡單了,因為它已經內置了HandlerSocket支持,不過考慮到其內置的版本不夠新,存在一些早已修復的BUG,所以最好采用源代碼編譯。HandlerSocket是基于MySQL數據庫的,因此在安裝HanderSocket前需要先按照常規方式部署MySQL服務,同時需注意HandlerSocket時需要MySQL的源碼,因此還需要MySQL源碼編譯方式安裝。
|
新聞熱點
疑難解答