快取: Memcached和terracotta
快取是最重要的一個方面,以提高應用程式效能的儲存物件的快取(記憶體)減少資料庫負載。
快取在群集環境中,需要分散式快取解決方案,可以支援故障切換情景和資料的可靠性。 Memcached和terracotta兵馬俑的分散式快取解決方案。
Memcached是一個高效能的分散式物件快取系統, 客戶端的API為的Perl , PHP中,python, Ruby和Java語言。 以下是一些其能力和侷限性(使用Java客戶端API ) :
要求物件是可序列化
物件標識是不保留
支援快取記憶體到期
不處理故障情景
對於一個特定物件選擇一個伺服器從池快取伺服器基於Hash的關鍵
容易配置(通過SockIOPool級)
terracotta秦始皇是一個開源基於Java的JVM叢集解決方案。 分散式快取可以實現使用兵馬俑terracotta使用java.util.HashMap或開放原始碼的快取解決方案,如EHCache , OSCache和JBoss TreeCache 。
保護物件的身份
通過有效地管理虛擬記憶體堆
宣告要求鎖定支援
簡單的配置檔案與Eclipse工具支援
良好的檔案,支援和積極發展
不需要類是可序列化
容易配置並開始!
有一個老外網友使用terracotta後(見下面連線),發現CPU高負荷和GC時間暫停導致的應用響應時間延遲是其關鍵問題。而是要Memcached後,雖然 get/set有些慢(遠端),但是相對資料庫操作,memcached和ehcache差別可以忽略。
最後,他提出:可以使用ehcache作為本地in-process快取,而memcached作為遠端快取。(物件狀態第一次訪問memcached獲取後,快取在本地ehcache中,以後就無需訪問遠端memcached,這樣方案比較優化)。
兵馬俑公司技術長阿里Zilka 認為:Memcached是因為使用非Java編寫,所以沒有GC,但他認為Memcached存在下面問題:
1. memcache分割槽是非常靜態的(除非你改變它,或自定義) 。 這可能是一個大問題,因為您的網站成長 、
2. memcache分割槽會丟失資料。 如果您重新啟動memcache伺服器,資料丟失 。
http://hankliblog.blogspot.com/2008/01/bye-bye-terracotta-other-java-caches.html
當然,terracotta或ehcache可以通過JVM引數微調來實現響應時間延遲和高吞吐量的平衡。見twitter的JVM效能優化。
關於ehcache vs. memcached的2011年9月一文的最新討論,主要是從memcached分散式快取與ehcache代表資料網格之間區別方面討論:
http://www.infoq.com/news/2011/09/java-memcached-rise
[該貼被admin於2011-11-25 07:52修改過]
相關文章
- memcached資料庫快取資料庫快取
- memcached快取知識簡單梳理快取
- 分散式快取系統之Memcached分散式快取
- Memcached 分散式快取實現原理分散式快取
- 實戰Memcached快取系統(4)Memcached的CAS協議快取協議
- 對比Memcached和Redis,誰才是適合你的快取?Redis快取
- 如何利用memcached和wcf實現一個快取服務快取
- 實戰Memcached快取系統(5)Memcached的CAS程式例項快取
- 實戰Memcached快取系統(3)Memcached配置引數初解快取
- C#呼叫Couchbase中的Memcached快取C#快取
- 實戰Memcached快取系統(2)Memcached Java API基礎之MemcachedClient快取JavaAPIclient
- 實戰Memcached快取系統(1)Memcached基礎及示例程式快取
- 分散式快取伺服器Memcached介紹分散式快取伺服器
- 系統快取全解析7:第三方分散式快取解決方案 Memcached和Cacheman快取分散式
- 實戰Memcached快取系統(7)Memcached的一些基礎FAQ快取
- Shopify使用Memcached而不是Redis快取提升20%效能Redis快取
- 實戰Memcached快取系統(6)Memcached CAS的多執行緒程式例項快取執行緒
- Rust編寫的Memcached快取替代品:memc.rsRust快取
- 快取、快取演算法和快取框架簡介快取演算法框架
- 聊聊本地快取和分散式快取快取分散式
- 清理 Conda 快取和 Pip 快取快取
- 快取穿透、快取雪崩和快取擊穿是什麼?快取穿透
- LNMP 分散式叢集(四):Memcached 快取伺服器的搭建LNMP分散式快取伺服器
- gmcache一個用go寫的分散式快取,類似memcachedGo分散式快取
- http快取策略以及強快取和協商快取淺析HTTP快取
- simple Terracotta session 同步Session
- 淺解強快取和協商快取快取
- 瀏覽器快取和webpack快取配置瀏覽器快取Web
- 實戰Memcached快取系統(8)Memcached非同步實時讀寫問題的解決方案SAC快取非同步
- 記憶體快取系統memcached與redis實現的對比記憶體快取Redis
- 對於前端快取的理解(快取機制和快取型別)前端快取型別
- 面試官:快取穿透、快取雪崩和快取擊穿是什麼?面試快取穿透
- 快取和web快取分別是什麼?快取Web
- Redis 快取雪崩,快取擊穿和快取穿透技術方案總結Redis快取穿透
- 在IDEAL下執行測試Memcached快取資料功能的時候,快取時間過期之坑Idea快取
- 快取和併發快取
- Mybatis的快取——一級快取和原始碼分析MyBatis快取原始碼
- redis和memcachedRedis