成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

進(jìn)程內(nèi)緩存,究竟怎么玩?

開(kāi)發(fā) 開(kāi)發(fā)工具
除了常見(jiàn)的redis/memcache等進(jìn)程外緩存服務(wù),緩存還有一種常見(jiàn)的玩法,進(jìn)程內(nèi)緩存。進(jìn)程內(nèi)緩存的實(shí)現(xiàn)載體,最簡(jiǎn)單的,可以是一個(gè)帶鎖的Map。又或者,可以使用第三方庫(kù),例如leveldb。

除了常見(jiàn)的redis/memcache等進(jìn)程外緩存服務(wù),緩存還有一種常見(jiàn)的玩法,進(jìn)程內(nèi)緩存。

什么是進(jìn)程內(nèi)緩存?

答:將一些數(shù)據(jù)緩存在站點(diǎn),或者服務(wù)的進(jìn)程內(nèi),這就是進(jìn)程內(nèi)緩存。

進(jìn)程內(nèi)緩存的實(shí)現(xiàn)載體,最簡(jiǎn)單的,可以是一個(gè)帶鎖的Map。又或者,可以使用第三方庫(kù),例如leveldb。

[[234126]]

進(jìn)程內(nèi)緩存能存儲(chǔ)啥?

答:redis/memcache等進(jìn)程外緩存服務(wù)能存什么,進(jìn)程內(nèi)緩存就能存什么。

如上圖,可以存儲(chǔ)json數(shù)據(jù),可以存儲(chǔ)html頁(yè)面,可以存儲(chǔ)對(duì)象。

進(jìn)程內(nèi)緩存有什么好處?

答:與沒(méi)有緩存相比,進(jìn)程內(nèi)緩存的好處是,數(shù)據(jù)讀取不再需要訪(fǎng)問(wèn)后端,例如數(shù)據(jù)庫(kù)。

如上圖,整個(gè)訪(fǎng)問(wèn)流程要經(jīng)過(guò)1,2,3,4四個(gè)步驟。

如果引入進(jìn)程內(nèi)緩存,

如上圖,整個(gè)訪(fǎng)問(wèn)流程只要經(jīng)過(guò)1,2兩個(gè)步驟。

與進(jìn)程外緩存相比(例如redis/memcache),進(jìn)程內(nèi)緩存省去了網(wǎng)絡(luò)開(kāi)銷(xiāo),所以一來(lái)節(jié)省了內(nèi)網(wǎng)帶寬,二來(lái)響應(yīng)時(shí)延會(huì)更低。

進(jìn)程內(nèi)緩存有什么缺點(diǎn)?

答:統(tǒng)一緩存服務(wù)雖然多一次網(wǎng)絡(luò)交互,但仍是統(tǒng)一存儲(chǔ)。

如上圖,站點(diǎn)和服務(wù)中的多個(gè)節(jié)點(diǎn)訪(fǎng)問(wèn)統(tǒng)一的緩存服務(wù),數(shù)據(jù)統(tǒng)一存儲(chǔ),容易保證數(shù)據(jù)的一致性。

而進(jìn)程內(nèi)緩存,如上圖,如果數(shù)據(jù)緩存在站點(diǎn)和服務(wù)的多個(gè)節(jié)點(diǎn)內(nèi),數(shù)據(jù)存了多份,一致性比較難保障。

如何保證進(jìn)程內(nèi)緩存的數(shù)據(jù)一致性?

答:保障進(jìn)程內(nèi)緩存一致性,有幾種方案。

***種方案,可以通過(guò)單節(jié)點(diǎn)通知其他節(jié)點(diǎn)。如上圖:寫(xiě)請(qǐng)求發(fā)生在server1,在修改完自己內(nèi)存數(shù)據(jù)與數(shù)據(jù)庫(kù)中的數(shù)據(jù)之后,可以主動(dòng)通知其他server節(jié)點(diǎn),也修改內(nèi)存的數(shù)據(jù)。

這種方案的缺點(diǎn)是:同一功能的一個(gè)集群的多個(gè)節(jié)點(diǎn),相互耦合在一起,特別是節(jié)點(diǎn)較多時(shí),網(wǎng)狀連接關(guān)系極其復(fù)雜。

第二種方案,可以通過(guò)MQ通知其他節(jié)點(diǎn)。如上圖,寫(xiě)請(qǐng)求發(fā)生在server1,在修改完自己內(nèi)存數(shù)據(jù)與數(shù)據(jù)庫(kù)中的數(shù)據(jù)之后,給MQ發(fā)布數(shù)據(jù)變化通知,其他server節(jié)點(diǎn)訂閱MQ消息,也修改內(nèi)存數(shù)據(jù)。

這種方案雖然解除了節(jié)點(diǎn)之間的耦合,但引入了MQ,使得系統(tǒng)更加復(fù)雜。

前兩種方案,節(jié)點(diǎn)數(shù)量越多,數(shù)據(jù)冗余份數(shù)越多,數(shù)據(jù)同時(shí)更新的原子性越難保證,一致性也就越難保證。

第三種方案,為了避免耦合,降低復(fù)雜性,干脆放棄了“實(shí)時(shí)一致性”,每個(gè)節(jié)點(diǎn)啟動(dòng)一個(gè)timer,定時(shí)從后端拉取***的數(shù)據(jù),更新內(nèi)存緩存。在有節(jié)點(diǎn)更新后端數(shù)據(jù),而其他節(jié)點(diǎn)通過(guò)timer更新數(shù)據(jù)之間,會(huì)讀到臟數(shù)據(jù)。

為什么不能頻繁使用進(jìn)程內(nèi)緩存?

答:分層架構(gòu)設(shè)計(jì),有一條準(zhǔn)則:站點(diǎn)層、服務(wù)層要做到無(wú)數(shù)據(jù)無(wú)狀態(tài),這樣才能任意的加節(jié)點(diǎn)水平擴(kuò)展,數(shù)據(jù)和狀態(tài)盡量存儲(chǔ)到后端的數(shù)據(jù)存儲(chǔ)服務(wù),例如數(shù)據(jù)庫(kù)服務(wù)或者緩存服務(wù)。

可以看到,站點(diǎn)與服務(wù)的進(jìn)程內(nèi)緩存,實(shí)際上違背了分層架構(gòu)設(shè)計(jì)的無(wú)狀態(tài)準(zhǔn)則,故一般不推薦使用。

什么時(shí)候可以使用進(jìn)程內(nèi)緩存?

答:以下情況,可以考慮使用進(jìn)程內(nèi)緩存。

  • 情況一,只讀數(shù)據(jù),可以考慮在進(jìn)程啟動(dòng)時(shí)加載到內(nèi)存。畫(huà)外音:此時(shí)也可以把數(shù)據(jù)加載到redis / memcache,進(jìn)程外緩存服務(wù)也能解決這類(lèi)問(wèn)題。
  • 情況二,極其高并發(fā)的,如果透?jìng)骱蠖藟毫O大的場(chǎng)景,可以考慮使用進(jìn)程內(nèi)緩存。例如,秒殺業(yè)務(wù),并發(fā)量極高,需要站點(diǎn)層擋住流量,可以使用內(nèi)存緩存。
  • 情況三,一定程度上允許數(shù)據(jù)不一致業(yè)務(wù)。例如,有一些計(jì)數(shù)場(chǎng)景,運(yùn)營(yíng)場(chǎng)景,頁(yè)面對(duì)數(shù)據(jù)一致性要求較低,可以考慮使用進(jìn)程內(nèi)頁(yè)面緩存。

末了,再次強(qiáng)調(diào),進(jìn)程內(nèi)緩存的適用場(chǎng)景并不如redis/memcache廣泛,不要為了炫技而使用。

更多的時(shí)候,還是老老實(shí)實(shí)使用redis/mc吧。

畫(huà)外音:額,介紹技術(shù),不希望把大家?guī)恕?/p>

【本文為51CTO專(zhuān)欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2020-02-12 11:34:56

架構(gòu)平滑上云機(jī)房遷移

2011-11-16 10:46:33

Ehcache

2018-09-06 14:28:03

零售云服務(wù)智能

2018-07-05 16:15:26

緩存數(shù)據(jù)cache miss

2018-07-13 15:56:39

緩存數(shù)據(jù)庫(kù)數(shù)據(jù)

2021-04-20 18:10:22

緩存服務(wù)緩存數(shù)據(jù)緩存

2021-08-05 16:10:03

進(jìn)程緩存緩存服務(wù)Java

2022-10-08 11:40:18

Receive阻塞Trigger

2022-04-28 13:58:41

Redis6客戶(hù)端服務(wù)端

2022-10-19 12:23:50

緩存CDN外部緩存

2020-12-21 09:57:33

無(wú)鎖緩存并發(fā)緩存

2012-06-26 11:27:40

Windows Pho

2022-11-14 10:44:59

HTMLFlowable外置

2018-07-12 10:33:50

Docker容器內(nèi)存

2016-05-06 08:08:29

2018-10-15 05:13:38

WiFi網(wǎng)速帶寬

2022-03-08 00:07:51

緩存雪崩數(shù)據(jù)庫(kù)

2020-11-16 07:15:41

Linux權(quán)限管理

2017-03-28 11:39:58

深信服超融合平臺(tái)

2023-02-13 18:32:59

AI繪畫(huà)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日本 欧美 三级 高清 视频 | 天天干干 | 中文字幕免费 | 久久久久久亚洲 | 91在线网站| 日本高清视频在线播放 | 国产精品一区二区欧美 | 91精品国产日韩91久久久久久 | 91免费电影 | 久久久看 | 观看av | 久久久入口 | 免费看大片bbbb欧美 | aacc678成免费人电影网站 | 国产成人91| 国产精品久久精品 | 在线观看国产视频 | 九九久久久 | 91久久精品一区二区二区 | 青娱乐自拍| 天天艹日日干 | 午夜视频在线免费观看 | 91精品国产91久久综合桃花 | 国产精品视频网 | 日韩在线免费视频 | 久久久久久国产 | 久久精品二区 | 成人午夜| 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 日韩在线免费 | 人人看人人爽 | 成人综合一区 | 久久久久一区 | 国产精品99久久久久久久久久久久 | 女同久久另类99精品国产 | 欧美日韩国产精品一区二区 | 毛片a| 91看片网 | 毛片视频网站 | 国产黄色网址在线观看 | 日韩精品一区二区三区高清免费 |