最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

分布式緩存的設(shè)計(jì)方案與策略

2023-07-30 23:28 作者:小技術(shù)君  | 我要投稿

分布式緩存

分布式緩存將頻繁訪問的數(shù)據(jù)存儲(chǔ)在多個(gè)節(jié)點(diǎn)的內(nèi)存中。緩存的數(shù)據(jù)被分區(qū)到許多節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)僅存儲(chǔ)緩存數(shù)據(jù)的一部分。節(jié)點(diǎn)將數(shù)據(jù)存儲(chǔ)為鍵值對(duì),其中每個(gè)鍵被確定性地分配給特定的分區(qū)或分片。當(dāng)客戶端請(qǐng)求數(shù)據(jù)時(shí),緩存系統(tǒng)從適當(dāng)?shù)墓?jié)點(diǎn)檢索數(shù)據(jù),減少了對(duì)后備存儲(chǔ)的負(fù)載。

有不同的分片策略,包括模數(shù)、基于范圍和一致性哈希。

模數(shù)分片

模數(shù)分片涉及將鍵分配給一個(gè)分片,該分片基于鍵的哈希值對(duì)分片總數(shù)取模。雖然這種策略很簡(jiǎn)單,但當(dāng)分片的數(shù)量增加或減少時(shí),它可能導(dǎo)致許多緩存未命中。這是因?yàn)楫?dāng)池的大小調(diào)整時(shí),大多數(shù)鍵將被重新分配到不同的分片中。

圖片

基于范圍的分片

基于范圍的分片根據(jù)預(yù)定義的鍵范圍將鍵分配給特定的分片。使用這種方法,系統(tǒng)可以將鍵空間分成特定的范圍,然后將每個(gè)范圍映射到特定的分片?;诜秶姆制瑢?duì)于某些業(yè)務(wù)場(chǎng)景非常有用,其中數(shù)據(jù)自然地分組或分區(qū)在特定的范圍內(nèi),例如基于地理位置的數(shù)據(jù)或與特定客戶段相關(guān)的數(shù)據(jù)。

圖片

但是,這種方法也可能難以擴(kuò)展,因?yàn)榉制臄?shù)量是預(yù)定義的,不能輕松更改。更改分片的數(shù)量需要重新定義鍵范圍并重新映射數(shù)據(jù)。

一致性哈希

一致性哈希是一種廣泛使用的分片策略,提供比其他分片方法更好的負(fù)載平衡和容錯(cuò)能力。使用一致性哈希,鍵和節(jié)點(diǎn)都映射到固定大小的環(huán)上,使用哈希函數(shù)將每個(gè)鍵和節(jié)點(diǎn)分配到環(huán)上的位置。

圖片

當(dāng)請(qǐng)求一個(gè)鍵時(shí),系統(tǒng)使用相同的哈希函數(shù)將鍵映射到環(huán)上的位置。然后,系統(tǒng)從該位置順時(shí)針遍歷環(huán),直到到達(dá)第一個(gè)節(jié)點(diǎn)。該節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)與該鍵相關(guān)聯(lián)的數(shù)據(jù)。向系統(tǒng)添加或刪除節(jié)點(diǎn)僅需要重新映射以前存儲(chǔ)在受影響節(jié)點(diǎn)上的鍵,而不是重新分配所有鍵,使得使用有限的數(shù)據(jù)重新哈??梢暂p松更改分片的數(shù)量。

緩存策略

在本文中,我們將深入分析各種緩存策略、它們的特點(diǎn)和適用的用例。

緩存策略可以根據(jù)它們處理讀取或?qū)懭霐?shù)據(jù)的方式進(jìn)行分類:

1.讀取策略:緩存旁路和讀取穿透2.寫入策略:寫入旁路、寫入穿透和寫入回寫

讀取策略

緩存旁路

緩存旁路,也稱為惰性加載,是一種流行的緩存策略,其中應(yīng)用程序直接與緩存和存儲(chǔ)系統(tǒng)通信。它遵循特定的讀取數(shù)據(jù)工作流程:

1.應(yīng)用程序從緩存請(qǐng)求一個(gè)鍵。2.如果在緩存中找到該鍵(緩存命中),則將數(shù)據(jù)返回給應(yīng)用程序。3.如果在緩存中未找到該鍵(緩存未命中),則應(yīng)用程序繼續(xù)從存儲(chǔ)中請(qǐng)求該鍵。4.存儲(chǔ)將數(shù)據(jù)返回給應(yīng)用程序。5.應(yīng)用程序?qū)㈡I和相應(yīng)的數(shù)據(jù)寫入緩存以供將來讀取。

圖片

緩存旁路

緩存旁路是通用的,因?yàn)樗梢赃m應(yīng)各種用例,并且適應(yīng)讀取密集的工作負(fù)載。

優(yōu)點(diǎn):

?系統(tǒng)可以容忍緩存故障,因?yàn)樗匀豢梢詮拇鎯?chǔ)中讀取。?緩存中的數(shù)據(jù)模型可以與存儲(chǔ)中的數(shù)據(jù)模型不同,為各種用例提供了靈活性。

缺點(diǎn):

?應(yīng)用程序必須管理緩存和存儲(chǔ),使代碼復(fù)雜化。?由于缺乏緩存和存儲(chǔ)上的原子操作,確保數(shù)據(jù)一致性是具有挑戰(zhàn)性的。

在使用緩存旁路時(shí),必須考慮其他潛在的數(shù)據(jù)一致性問題。例如,如果將一條數(shù)據(jù)寫入緩存,并且之后更新了存儲(chǔ)中的值,則應(yīng)用程序只能從緩存中讀取過時(shí)的值,直到它被驅(qū)逐。解決此問題的一種方法是為每個(gè)緩存記錄設(shè)置可接受的生存時(shí)間(TTL),確保過時(shí)數(shù)據(jù)在一定時(shí)間后變得無效。對(duì)于更嚴(yán)格的數(shù)據(jù)新鮮度要求,應(yīng)用程序可以將緩存旁路與下面討論的寫入策略之一相結(jié)合。

讀取穿透

讀取穿透策略是另一種常見的緩存方法,其中緩存作為應(yīng)用程序和存儲(chǔ)系統(tǒng)之間的中介,處理所有讀取請(qǐng)求。這種策略通過將數(shù)據(jù)檢索責(zé)任委托給緩存來簡(jiǎn)化應(yīng)用程序的角色。讀取穿透特別適用于讀取密集的工作負(fù)載,并且通常用于緩存庫和一些獨(dú)立緩存提供程序中。讀取穿透的基本工作流程如下:

1.應(yīng)用程序請(qǐng)求從緩存讀取一個(gè)鍵。2.如果在緩存中找到該鍵(緩存命中),則將數(shù)據(jù)返回給應(yīng)用程序。3.如果在緩存中未找到該鍵(緩存未命中),則緩存從存儲(chǔ)中請(qǐng)求該鍵。4.緩存從存儲(chǔ)中檢索數(shù)據(jù),將鍵和相關(guān)數(shù)據(jù)寫入緩存,并將數(shù)據(jù)返回給應(yīng)用程序。

分布式緩存的設(shè)計(jì)方案與策略的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
上栗县| 申扎县| 岳阳县| 延庆县| 原阳县| 阿城市| 新建县| 公主岭市| 聂拉木县| 达州市| 屏南县| 宁武县| 临夏县| 海丰县| 顺义区| 大冶市| 西安市| 石首市| 同仁县| 温泉县| 黄山市| 镇远县| 时尚| 赣榆县| 顺昌县| 昂仁县| 洛南县| 电白县| 连云港市| 敦煌市| 来宾市| 柘城县| 盘山县| 三穗县| 泗洪县| 纳雍县| 巩义市| 清水河县| 衡水市| 宜阳县| 内江市|