close
文章出處

背景

現在的web系統已經越來越多的應用緩存技術,而且緩存技術確實是能實足的增強系統性能的。我在項目中也開始接觸一些緩存的需求。

  • 開始簡單的就用jvm(java托管內存)來做緩存,這樣對于單個應用服務器來說很好。
  • 為了系統的可用性,需要做災備,那么就要多準備一套系統環境,這時就會有一些共享資源的問題,比如Tomcat的session共享出來
  • 幾個系統會公用一套緩存數據,這樣就變成一個共享池

需求的增長也就帶來了系統的變化,也正為這種變化我開始思考怎么讓這些代碼兼容,并為以后的系統模塊提供比較統一的支持。正好在openfire這個開源項目上得到了啟發,它的集群思路我覺得是種不錯的解決方案。

j2cache介紹

隨后就開始寫一個簡單的緩存系統,結構非常的簡單,代碼也非常的簡單。說是開源其實也有點過了,只是覺得閉門造車沒有意思,所以將代碼放在github上,如果有高手看到指點一下那我不是賺大了。哈哈。

github:https://github.com/mini188/j2cache

代碼非常簡單,maven工程引入也很容易,我就不打算對代碼做啥說明,有興趣的朋友下載簡單看看就能明白。 image

項目主要特點:

  • Key-value的存儲結構
  • 基于java.util.Map<K, V>接口,這樣很容易與hashmap之類的兼容
  • 基于策略模式的擴展

為此項目中實現了三種存儲方案:

  • jvm虛擬機內存,適用于單應用,或者不需要同步的情況
  • redis,適用于需要redis的場景,比如緩存共享等
  • iginte,一種帶網絡計算的方案

j2cache的入測試

測試機器環境:

我的測試方法比較簡單,向緩存里連續寫100萬個對象,然后看看處理的性能。說明一下,這些測試都是在本機完成的

OS:Windows7 64位

CPU:I5-4210U @ 1.70GHZ 2.40GHZ

RAM:8G

Redis用的是Redis on Windows Redis-x64-3.2.100

本地環境中寫入1,000,000個對象的

  • 開始測試寫入緩存jvmCache

總共耗時:2380ms

每毫秒寫入:420條

每秒寫入:420000條

  • 開始測試寫入緩存igniteCache

總共耗時:9503ms

每毫秒寫入:105條。

每秒寫入:105000條。

  • 開始測試寫入緩存redisCache

總共耗時:40367ms

每毫秒寫入:24條。

每秒寫入:24000條。

結果

為了對各種方案進行一些數據上對比,做了一個簡單的寫入測試,使用本地內存做緩存這種方案最高效,寫入量達到42萬每秒。而redis則只達到了24000條/秒,我對redis不是特別熟悉,看到這個數據有點詫異。

我比較懶,沒有測試一段時間內的讀寫性能,只不過從這個簡單的測試中發現,本地內存的效果還是很高的,如果加上一些其他的功能,比如網絡傳輸,數據同步等后性能會下降。

只不過redis和ignite差這么大我沒有搞明白,不知道是不是我的方法不對呢?

 

注:此文章為原創,歡迎轉載,請在文章頁面明顯位置給出此文鏈接!
若您覺得這篇文章還不錯請點擊下右下角的推薦,非常感謝!
http://www.cnblogs.com/5207

不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 AutoPoster 的頭像
    AutoPoster

    互聯網 - 大數據

    AutoPoster 發表在 痞客邦 留言(0) 人氣()