偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

分布式高并發(fā)緩存設(shè)計(jì)系統(tǒng)

存儲(chǔ) 存儲(chǔ)軟件 分布式
緩存在wiki上的定義:用于存儲(chǔ)數(shù)據(jù)的硬件或軟件的組成部分,以使得后續(xù)更快訪問(wèn)相應(yīng)的數(shù)據(jù)。緩存中的數(shù)據(jù)可能是提前計(jì)算好的結(jié)果、數(shù)據(jù)的副本等。典型的應(yīng)用場(chǎng)景:有cpu cache, 磁盤(pán)cache等。本文中提及到緩存主要是指互聯(lián)網(wǎng)應(yīng)用中所使用的緩存組件。

概述

緩存概述

什么是緩存

緩存在wiki上的定義:用于存儲(chǔ)數(shù)據(jù)的硬件或軟件的組成部分,以使得后續(xù)更快訪問(wèn)相應(yīng)的數(shù)據(jù)。緩存中的數(shù)據(jù)可能是提前計(jì)算好的結(jié)果、數(shù)據(jù)的副本等。典型的應(yīng)用場(chǎng)景:有cpu cache, 磁盤(pán)cache等。本文中提及到緩存主要是指互聯(lián)網(wǎng)應(yīng)用中所使用的緩存組件。

為什么引入緩存

傳統(tǒng)的后端業(yè)務(wù)場(chǎng)景中,訪問(wèn)量以及對(duì)響應(yīng)時(shí)間的要求均不高,通常只使用DB即可滿足要求。這種架構(gòu)簡(jiǎn)單,便于快速部署,很多網(wǎng)站發(fā)展初期均考慮使用這種架構(gòu)。但是隨著訪問(wèn)量的上升,以及對(duì)響應(yīng)時(shí)間的要求提升,單DB無(wú)法再滿足要求。這時(shí)候通常會(huì)考慮DB拆分(sharding)、讀寫(xiě)分離、甚至硬件升級(jí)(SSD)等以滿足新的業(yè)務(wù)需求。但是這種方式仍然會(huì)面臨很多問(wèn)題,主要體現(xiàn)在:

性能提升有限,很難達(dá)到數(shù)量級(jí)上的提升,尤其在互聯(lián)網(wǎng)業(yè)務(wù)場(chǎng)景下,隨著網(wǎng)站的發(fā)展,訪問(wèn)量經(jīng)常會(huì)面臨十倍、百倍的上漲。

成本高昂,為了承載N倍的訪問(wèn)量,通常需要N倍的機(jī)器,這個(gè)代價(jià)難以接受。

一丶分布式高并發(fā)緩存設(shè)計(jì)系統(tǒng)

總體架構(gòu)圖

1.2自定義的客戶端協(xié)議

業(yè)務(wù)模塊采用自定義應(yīng)用層協(xié)議和cacheProxy交互

整個(gè)cache后端采用什么協(xié)議,什么存儲(chǔ)(redis,memcached等)對(duì)業(yè)務(wù)模塊透明

cache后端和業(yè)務(wù)端進(jìn)行了隔離,修改互不影響

1.2負(fù)載均衡與容錯(cuò)機(jī)制

采用一致性hash算法,即使部分節(jié)點(diǎn)down機(jī),也不會(huì)導(dǎo)致全部的緩存失效,新增節(jié)點(diǎn)也不會(huì)導(dǎo)致大量緩存失效和重建

一份緩存數(shù)據(jù)保留兩份,當(dāng)前hash節(jié)點(diǎn)和下一個(gè)真實(shí)的hash節(jié)點(diǎn),單個(gè)節(jié)點(diǎn)down機(jī)時(shí),緩存也不會(huì)馬上失效

cacheMan是一個(gè)弱的管理節(jié)點(diǎn),負(fù)責(zé)監(jiān)控,刪除節(jié)點(diǎn),新增節(jié)點(diǎn),可以任意啟停

1.3緩存維護(hù)與淘汰機(jī)制

redis原生超時(shí)機(jī)制+三層LRU緩存架構(gòu),減少最終穿透到redis實(shí)例上的請(qǐng)求。

客戶端LRU緩存

cacheProxy代理LRU緩存

redis實(shí)例內(nèi)存總量限制+LRU緩存

1.4安全機(jī)制

redis實(shí)例都會(huì)開(kāi)啟auth功能

redis實(shí)例都監(jiān)聽(tīng)在內(nèi)網(wǎng)ip

1.5核心流程

新增redis節(jié)點(diǎn)



刪除redis節(jié)點(diǎn)

set緩存

get緩存

二、問(wèn)題

任何平臺(tái)隨著用戶規(guī)模的擴(kuò)大、功能不斷的添加,持久化數(shù)據(jù)庫(kù)層承受的讀寫(xiě)壓力會(huì)越來(lái)越大,一旦數(shù)據(jù)庫(kù)承壓過(guò)大會(huì)導(dǎo)致讀寫(xiě)性能陡然下降,嚴(yán)重時(shí)會(huì)導(dǎo)致大量的業(yè)務(wù)請(qǐng)求超時(shí),進(jìn)而發(fā)生“雪崩”引發(fā)嚴(yán)重的故障。

三、解決方案

在業(yè)務(wù)層和數(shù)據(jù)庫(kù)持久層之間引入一層內(nèi)存緩存層,對(duì)于復(fù)雜且業(yè)務(wù)邏輯上不會(huì)變化的查詢結(jié)果進(jìn)行緩存,業(yè)務(wù)請(qǐng)求再次發(fā)起時(shí),每次都先從緩存層中查詢,從而大大減少對(duì)數(shù)據(jù)庫(kù)的查詢,減小對(duì)數(shù)據(jù)庫(kù)的壓力。

四、分布式內(nèi)存緩存、本地單點(diǎn)緩存、應(yīng)用層緩存對(duì)比

類型穩(wěn)定性擴(kuò)展性通用性對(duì)代碼的侵入性

應(yīng)用層緩存應(yīng)用會(huì)頻繁重啟更新,緩存易丟失,穩(wěn)定性不佳差,受限于進(jìn)程的資源限制差,不同應(yīng)用難以復(fù)用代碼侵入性小,無(wú)網(wǎng)絡(luò)操作,只需要操作應(yīng)用進(jìn)程內(nèi)存

本地單點(diǎn)緩存獨(dú)立的緩存應(yīng)用(redis、memcached等),不會(huì)頻繁重啟,穩(wěn)定性一般,但有單點(diǎn)故障問(wèn)題一般,受限于單服務(wù)器資源限制一般,業(yè)務(wù)應(yīng)用和緩存應(yīng)用有強(qiáng)耦合代碼侵入性一般,需要引入對(duì)應(yīng)的api通常有網(wǎng)絡(luò)操作

分布式內(nèi)存緩存分布式系統(tǒng),具備故障自動(dòng)恢復(fù)功能,無(wú)單點(diǎn)故障問(wèn)題,穩(wěn)定性佳好,支持水平擴(kuò)展好,對(duì)業(yè)務(wù)層提供通用接口,后端具體的緩存應(yīng)用對(duì)業(yè)務(wù)透明代碼侵入性一般,需要引入通用的api通常有網(wǎng)絡(luò)操作。

 

責(zé)任編輯:武曉燕 來(lái)源: 程序猿小秘圈
相關(guān)推薦

2022-04-07 17:13:09

緩存算法服務(wù)端

2023-05-05 06:13:51

分布式多級(jí)緩存系統(tǒng)

2020-10-13 07:44:45

理解分布式

2009-11-09 09:25:24

Memcached入門(mén)

2020-09-23 22:36:27

分布式架構(gòu)系統(tǒng)

2009-02-10 08:57:01

分布式緩存.Net開(kāi)發(fā)

2023-10-08 10:49:16

搜索系統(tǒng)分布式系統(tǒng)

2023-05-18 14:02:00

分布式系統(tǒng)冪等性

2018-12-14 10:06:22

緩存分布式系統(tǒng)

2022-01-10 19:45:40

微服務(wù)GO系統(tǒng)

2013-04-19 11:03:32

memcahce入門(mén)教分布式緩存系統(tǒng)

2009-02-06 09:38:38

memcached分布式緩存系統(tǒng)ASP.NET

2023-05-12 11:52:21

緩存場(chǎng)景性能

2020-02-10 19:16:52

服務(wù)端高并發(fā)架構(gòu)

2024-10-08 11:21:11

2013-01-07 10:29:31

大數(shù)據(jù)

2019-09-25 09:01:53

高并發(fā)架構(gòu)分布式

2019-12-17 11:18:37

高并發(fā)分布式架構(gòu)

2025-05-07 02:15:00

分布式鎖高并發(fā)UUID鎖

2019-09-05 09:02:45

消息系統(tǒng)緩存高可用
點(diǎn)贊
收藏

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