国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務(wù)器 > 管理維護(hù) > 正文

如何使用緩存技巧為服務(wù)器減壓

2024-09-10 14:20:52
字體:
供稿:網(wǎng)友

服務(wù)器減壓,你不得不知的緩存使用技巧。

為什么使用緩存

一般情況下,在訪問量達(dá)到一定規(guī)模后,數(shù)據(jù)庫的讀寫會(huì)成為一個(gè)瓶頸,我們會(huì)采用一些手段來對(duì)數(shù)據(jù)庫減壓,讓它可以正常的工作。可以考慮的手段包括讀寫分離、添加緩存服務(wù)器等,讀寫分離是為了盡量將對(duì)數(shù)據(jù)庫的讀寫動(dòng)作分開,減少互相之間的影響;添加緩存是為了讀庫的時(shí)候,減少直接讀取數(shù)據(jù)庫的動(dòng)作,將查詢的結(jié)果存放在緩存中,用戶的請(qǐng)求被隔絕在數(shù)據(jù)庫以外,從而減少數(shù)據(jù)庫的壓力。

這是一個(gè)理想狀況下緩存工作的方式,但僅僅是理想

如何使用緩存技巧為服務(wù)器減壓_www.cuoXin.com

如何使用緩存技巧為服務(wù)器減壓

如何使用緩存技巧為服務(wù)器減壓_www.cuoXin.com

如何使用緩存技巧為服務(wù)器減壓

如何使用緩存技巧為服務(wù)器減壓_www.cuoXin.com

如何使用緩存技巧為服務(wù)器減壓

如何使用緩存技巧為服務(wù)器減壓_www.cuoXin.com

如何使用緩存技巧為服務(wù)器減壓

緩存穿透

所謂緩存穿透,是說用戶請(qǐng)求在緩存系統(tǒng)中查找結(jié)果時(shí)候失效,接下來去后端存儲(chǔ)系統(tǒng)中查找數(shù)據(jù),這個(gè)時(shí)候,如果數(shù)據(jù)不存在,而且這個(gè)訪問也比較大的情況下,大量的訪問會(huì)直接命中數(shù)據(jù)庫,這時(shí)候負(fù)責(zé)存儲(chǔ)的服務(wù)器就悲劇了(如果左圖),所以我們就需要做一些努力,使得當(dāng)數(shù)據(jù)不存在,往緩存中寫入一個(gè)標(biāo)志抑或?qū)⒖盏牟樵兘Y(jié)果存入緩存,減少這種無用的請(qǐng)求頻繁命中數(shù)據(jù)庫的情況(如右圖)

如何使用緩存技巧為服務(wù)器減壓_www.cuoXin.com

如何使用緩存技巧為服務(wù)器減壓

如何使用緩存技巧為服務(wù)器減壓_www.cuoXin.com

如何使用緩存技巧為服務(wù)器減壓

也可以將確認(rèn)為空或者空的查詢結(jié)果存儲(chǔ)到單獨(dú)的緩存區(qū)域中。

緩存雪崩

這是另外一個(gè)問題,當(dāng)系統(tǒng)使用的緩存發(fā)生意外(網(wǎng)絡(luò)失敗、宕機(jī)、服務(wù)掛掉、緩存集體丟失等等)之后,緩存集體失效,導(dǎo)致短時(shí)間內(nèi)請(qǐng)求都到達(dá)數(shù)據(jù)庫(數(shù)據(jù)存儲(chǔ)層),使得數(shù)據(jù)庫壓力山大進(jìn)而crash掉。

為了預(yù)防這種情況,我們采用一下幾種方式:

1、我們采用多實(shí)例的方式來保證緩存的高可用性,盡量避免當(dāng)個(gè)別實(shí)例出現(xiàn)問題之后,引起全局緩存的問題。這類方案很多,比如memcache的一致性hash,redis的cluster機(jī)制,來避免單點(diǎn)的故障,這類資料可以搜索一下關(guān)于redis或者memcache的高可用方案。

2、降級(jí)機(jī)制。這個(gè)方法在很多高可用設(shè)計(jì)中可能也有描述,簡單一點(diǎn)說就是我們將用戶與用戶之間,資源與資源之間進(jìn)行隔離,當(dāng)某一部分?jǐn)?shù)據(jù)產(chǎn)生問題之后或者對(duì)某一部分的請(qǐng)求到達(dá)一個(gè)閥值之后,根據(jù)預(yù)設(shè)的機(jī)制,對(duì)請(qǐng)求只返回?zé)狳c(diǎn)數(shù)據(jù),保證客戶端不會(huì)產(chǎn)生天窗或者說一直無法響應(yīng)的問題。

3、加鎖。對(duì)于到達(dá)的請(qǐng)求,我們用鎖的機(jī)制,來盡量使它們排隊(duì)處理從而減少對(duì)數(shù)據(jù)庫產(chǎn)生并發(fā)。可以參考的鎖方案有兩種,一種是使用全局鎖或者字符串鎖等方案,是一個(gè)請(qǐng)求進(jìn)行操作的時(shí)候,其他的請(qǐng)求處于等待狀態(tài),當(dāng)這個(gè)請(qǐng)求處理完畢之后進(jìn)行下一步的業(yè)務(wù)處理,但是這樣的話如果一個(gè)請(qǐng)求掛掉,會(huì)對(duì)后面排隊(duì)的請(qǐng)求產(chǎn)生影響,而且請(qǐng)求的處理可能不會(huì)短時(shí)間處理完畢,會(huì)導(dǎo)致請(qǐng)求阻塞的時(shí)間過長等問題,第二種方案就是在進(jìn)行操作的時(shí)候,其他請(qǐng)求進(jìn)來的時(shí)候判斷是否有鎖存在,如果存在直接跳過處理,返回?zé)狳c(diǎn)數(shù)據(jù)。

如何使用緩存技巧為服務(wù)器減壓_www.cuoXin.com

如何使用緩存技巧為服務(wù)器減壓

需要說的是降級(jí)機(jī)制未必要放到圖中這個(gè)位置,也可以放在緩存之前或其他的位置,它的主要目的是當(dāng)出現(xiàn)問題時(shí)候隔離掉出現(xiàn)問題的資源不影響客戶端的內(nèi)容或者使一部分用戶的請(qǐng)求無法到達(dá)真正的業(yè)務(wù)邏輯從而減少業(yè)務(wù)處理的壓力。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 仁怀市| 新干县| 樟树市| 贡嘎县| 曲沃县| 灵武市| 青海省| 淄博市| 通道| 拉孜县| 伊宁市| 隆化县| 镇江市| 洛扎县| 措勤县| 渭源县| 裕民县| 乐业县| 江陵县| 西平县| 宁陵县| 准格尔旗| 台南市| 信阳市| 灵武市| 萍乡市| 亚东县| 桦甸市| 紫金县| 五原县| 保靖县| 金秀| 额济纳旗| 顺昌县| 兴山县| 邓州市| 诸城市| 宣武区| 晋宁县| 林芝县| 天等县|