中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

我們究竟什么時(shí)候可以使用Ehcache緩存

2018-07-20    來(lái)源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢(shì)上線(xiàn)!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

一、Ehcache是什么

EhCache是Hibernate的二級(jí)緩存技術(shù)之一,可以把查詢(xún)出來(lái)的數(shù)據(jù)存儲(chǔ)在內(nèi)存或者磁盤(pán),節(jié)省下次同樣查詢(xún)語(yǔ)句再次查詢(xún)數(shù)據(jù)庫(kù),大幅減輕數(shù)據(jù)庫(kù)壓力。

二、Ehcache的使用場(chǎng)景是什么

1、首先最主要就是頁(yè)面緩存。
網(wǎng)站頁(yè)面的數(shù)據(jù)來(lái)源非常廣泛的,大多數(shù)來(lái)自不同的對(duì)象,而且有可能來(lái)自不同的db,所以給頁(yè)面做緩存是一個(gè)不錯(cuò)的主意。

2、常用數(shù)據(jù)的緩存
一些配置信息,如后臺(tái)的某些不經(jīng)常改變的設(shè)置都可以緩存起來(lái)。

三、Ehcache使用的注意點(diǎn)

1、比較少的更新數(shù)據(jù)表的情況
2、對(duì)并發(fā)要求不是很?chē)?yán)格的情況
多臺(tái)應(yīng)用服務(wù)器中的緩存是不能進(jìn)行實(shí)時(shí)同步的。
3、對(duì)一致性要求不高的情況下
因?yàn)镋hcache本地緩存的特性,目前無(wú)法很好的解決不同服務(wù)器間緩存同步的問(wèn)題,所以我們?cè)谝恢滦砸蠓浅8叩膱?chǎng)合下,盡量使用Redis、Memcached等集中式緩存。

四、Ehcache在集群、分布式的情況下表現(xiàn)如何

在分布式情況下有二種同步方式:
1、RMI組播方式


Paste_Image.png


示例:

<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=automatic, multicastGroupAddress=localhost,
        multicastGroupPort=4446,timeToLive=255"/>

原理:當(dāng)緩存改變時(shí),ehcache會(huì)向組播IP地址和端口號(hào)發(fā)送RMI UDP組播包。
缺陷:Ehcache的組播做得比較初級(jí),功能只是基本實(shí)現(xiàn)(比如簡(jiǎn)單的一個(gè)HUB,接兩臺(tái)單網(wǎng)卡的服務(wù)器,互相之間組播同步就沒(méi)問(wèn)題),對(duì)一些復(fù)雜的環(huán)境(比如多臺(tái)服務(wù)器,每臺(tái)服務(wù)器上多地址,尤其是集群,存在一個(gè)集群地址帶多個(gè)物理機(jī),每臺(tái)物理機(jī)又帶多個(gè)虛擬站的子地址),就容易出現(xiàn)問(wèn)題。

2、P2P方式
原理:P2P要求每個(gè)節(jié)點(diǎn)的Ehcache都要指向其他的N-1個(gè)節(jié)點(diǎn)。

3、JMS消息模式


Paste_Image.png


原理:這種模式的核心就是一個(gè)消息隊(duì)列,每個(gè)應(yīng)用節(jié)點(diǎn)都訂閱預(yù)先定義好的主題,同時(shí),節(jié)點(diǎn)有元素更新時(shí),也會(huì)發(fā)布更新元素到主題中去。各個(gè)應(yīng)用服務(wù)器節(jié)點(diǎn)通過(guò)偵聽(tīng)MQ獲取到最新的數(shù)據(jù),然后分別更新自己的Ehcache緩存,Ehcache默認(rèn)支持ActiveMQ,我們也可以通過(guò)自定義組件的方式實(shí)現(xiàn)類(lèi)似Kafka,RabbitMQ。

4、Cache Server模式
原理:這種模式會(huì)存在主從節(jié)點(diǎn)。


Paste_Image.png

缺陷:緩存容易出現(xiàn)數(shù)據(jù)不一致的問(wèn)題,

五、使用Ehcache的瓶頸是什么

1、緩存漂移(Cache Drift):每個(gè)應(yīng)用節(jié)點(diǎn)只管理自己的緩存,在更新某個(gè)節(jié)點(diǎn)的時(shí)候,不會(huì)影響到其他的節(jié)點(diǎn),這樣數(shù)據(jù)之間可能就不同步了。

2、數(shù)據(jù)庫(kù)瓶頸(Database Bottlenecks ):對(duì)于單實(shí)例的應(yīng)用來(lái)說(shuō),緩存可以保護(hù)數(shù)據(jù)庫(kù)的讀風(fēng)暴;但是,在集群的環(huán)境下,每一個(gè)應(yīng)用節(jié)點(diǎn)都要定期保持?jǐn)?shù)據(jù)最新,節(jié)點(diǎn)越多,要維持這樣的情況對(duì)數(shù)據(jù)庫(kù)的開(kāi)銷(xiāo)也越大。

六、實(shí)際工作中如何使用Ehcache

在實(shí)際工作中,我更多是將Ehcache作為與Redis配合的二級(jí)緩存。
第一種方式:


Paste_Image.png


注:
這種方式通過(guò)應(yīng)用服務(wù)器的Ehcache定時(shí)輪詢(xún)Redis緩存服務(wù)器更同步更新本地緩存,缺點(diǎn)是因?yàn)槊颗_(tái)服務(wù)器定時(shí)Ehcache的時(shí)間不一樣,那么不同服務(wù)器刷新最新緩存的時(shí)間也不一樣,會(huì)產(chǎn)生數(shù)據(jù)不一致問(wèn)題,對(duì)一致性要求不高可以使用。

第二種方式:


Paste_Image.png


注:
通過(guò)引入了MQ隊(duì)列,使每臺(tái)應(yīng)用服務(wù)器的Ehcache同步偵聽(tīng)MQ消息,這樣在一定程度上可以達(dá)到準(zhǔn)同步更新數(shù)據(jù),通過(guò)MQ推送或者拉取的方式,但是因?yàn)椴煌⻊?wù)器之間的網(wǎng)絡(luò)速度的原因,所以也不能完全達(dá)到強(qiáng)一致性;诖嗽硎褂肸ookeeper等分布式協(xié)調(diào)通知組件也是如此。

總結(jié):
1、使用二級(jí)緩存的好處是減少緩存數(shù)據(jù)的網(wǎng)絡(luò)傳輸開(kāi)銷(xiāo),當(dāng)集中式緩存出現(xiàn)故障的時(shí)候,Ehcache等本地緩存依然能夠支撐應(yīng)用程序正常使用,增加了程序的健壯性。另外使用二級(jí)緩存策略可以在一定程度上阻止緩存穿透問(wèn)題。

2、根據(jù)CAP原理我們可以知道,如果要使用強(qiáng)一致性緩存(根據(jù)自身業(yè)務(wù)決定),集中式緩存是最佳選擇,如(Redis,Memcached等)。


文/小程故事多(簡(jiǎn)書(shū)作者)
原文鏈接:http://www.jianshu.com/p/2cd6ad416a5a

標(biāo)簽: idc 服務(wù)器 數(shù)據(jù)庫(kù) 網(wǎng)絡(luò) 應(yīng)用服務(wù)器

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀(guān)點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:什么是軟件

下一篇:如何做好架構(gòu)之架構(gòu)切分