分布式緩存系統 Xixibase 0.4 發布
Xixibase是一個高性能,跨平臺的分布式緩存系統。Xixibase server 采用 C++ 實現,底層網絡庫采用的是Boost Asio。
Xixibase 主要特點:
1. 實現'Local Cache'功能, 當客戶端打開'Local Cache'選項, 客戶端可以將數據同時存儲在Server 端和本地,并且保證本地數據和Server 端的數據的一致性。當Server 端的數據被更新、刪除或者過期,本地的數據會立即被刪除,下次再對該數據的訪問,請求會直接到達Server 。
'Local Cache'的優點:
a. 極大地提高了性能:特別是對那些讀操作遠遠大于寫操作的數據,可以提供1000萬以上的TPS.參考:http://xixibase.googlecode.com/svn/tags/xixibase-0.2/benchmark/java/benchmark2.html
b. 提高了應用的服務質量和用戶體驗:在'Local Cache'命中的情況下,請求不需要通過網絡到遠程Cache Server上查詢,減少了總體的處理的時間,提高用戶體驗。
c. 降低了Cache Server 的壓力,原先需要10臺Cache Server ,現在可能只要5臺就夠了。可降低成本,保護環境。
d. 降低網絡流量,減少網絡設備的成本。
e. 提高整個Cache 系統的總體吞吐量。綜合a, c, d三點,系統的總體吞吐量會得到極大的提升。
2. 支持虛擬化, 采用分Group的方法,不同的應用可以使用不同的GroupID,這樣當不同的應用在訪問同一個Cache Server時,不會相互干擾。
a. GroupID類似與命名空間,每個應用不需要考慮:某個Key 是否會和其它應用的Key 沖突。
b. 當某個應用要清空自己相關的Cache,不需要一個Key 一個Key 的去Delete ,可以直接調用Flush ,不用擔心Flush 會影響其它應用的數據。
c. 可以對每個Group 單獨統計讀寫、存儲的信息。
3. 支持'MultiAPI', 如multiGet, multeUpdate, multiDelete。測試表明'MultiAPI'在提升性能方面,非常明顯。參考:http://xixibase.googlecode.com/svn/tags/xixibase-0.2/benchmark/java/benchmark.html
4. 超高性能. 無論'Local Cache'還是'MultiAPI'都在不同方面,極大地提升了性能。
5. 跨平臺, Xixibase server由C++實現,底層網絡庫采用的是Boost Asio。理論上,只要Boost Asio支持的平臺,Xixibase server都可以支持。目前,已經測試了Linux, Windows, Mac。
6. 部分地支持HTTP協議,可以直接在瀏覽器上訪問Xixibase Server。我們可以使用JavaScript 非常方便地訪問Xixibase Server。再加上Xixibase 的Local Cache 功能,將極大地減少Server 的壓力,提升用戶的體驗。
性能:
讀寫TPS :150,000以上
啟動Local Cache高命中情況下,讀TPS:10,000,000以上。
MultiAPI, TPS: 不同條件下,差異較大,詳情參考一下鏈接:
Performance Benchmark:
http://xixibase.googlecode.com/svn/tags/xixibase-0.2/benchmark/java/benchmark2.html
和Memcached的幾個Client 比較:
http://xixibase.googlecode.com/svn/tags/xixibase-0.2/benchmark/java/benchmark.html
項目:
http://code.google.com/p/xixibase/
包含:Xixibase Server 和Xixibase Java Client
目前Client 只實現了Java Client,歡迎有興趣的朋友可以實現其它平臺的Client。
關于Xixibase Java Client 的使用,test包里有幾個例子,大家可以參考一下。
Xixibase 0.4
Xixibase Server
- Bug fix
- check watch may lead to deadlock
- Log enhancement, the log file is written
Xixibase Java Client
- Delete the local cache when the client update the server-side data
- Add some comments
- Remove some API, such as createDelta
- Add some examples
- Javadoc
http://code.google.com/p/xixibase/