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

首頁(yè) > 數(shù)據(jù)庫(kù) > Redis > 正文

Redis 單數(shù)據(jù)多源超高并發(fā)下的解決方案

2020-03-22 16:45:44
字體:
供稿:網(wǎng)友
Redis 是目前最流行的KV緩存數(shù)據(jù)庫(kù),它簡(jiǎn)單易用,安全穩(wěn)定,在互聯(lián)網(wǎng)行業(yè)有著非常廣泛的應(yīng)用。

本文主要給大家分享一下 Redis 在單數(shù)據(jù)多源超高并發(fā)訪問下的解決思路和方案。

前言

Redis 主要解決兩個(gè)問題:

a356d87137b88cc441fb2119e588847.png

當(dāng)遇到日活千萬,同時(shí)百萬在線的業(yè)務(wù)場(chǎng)景時(shí),前端訪問直接加載到后臺(tái)數(shù)據(jù)庫(kù)的話,可能順間壓垮底層數(shù)據(jù)庫(kù),導(dǎo)致業(yè)務(wù)停擺。又或者隨著查詢條件變多,結(jié)合條件復(fù)雜化,查詢結(jié)果的響應(yīng)時(shí)間也無法得到保證,導(dǎo)致用戶體驗(yàn)下降,用戶流失。為了解決高并發(fā),低延遲的業(yè)務(wù)場(chǎng)景, Redis 應(yīng)運(yùn)而生。

下面我們來看兩個(gè)場(chǎng)景

81e9df739e2668995a1b751f27cd140.png

這是一個(gè)線上找房的業(yè)務(wù)場(chǎng)景,超多的查詢條件導(dǎo)致后臺(tái)必然是一個(gè)復(fù)雜的查詢 SQL,這種場(chǎng)景下是否必須使用 Redis 呢?

答案是否定的,由于線上找房業(yè)務(wù)并發(fā)量低,客戶對(duì)于業(yè)務(wù)響應(yīng)時(shí)間要求也沒有那么苛刻,大部分的請(qǐng)求可以直接通過動(dòng)態(tài) SQL 臨時(shí)查詢。當(dāng)然為了提升用戶體驗(yàn),可以將一些熱點(diǎn)的查詢結(jié)果預(yù)緩存到 Redis 里提升用戶體驗(yàn)。

我們?cè)賮砜聪逻@個(gè)場(chǎng)景

03afb96154fba6d2c892dd88d353b11.png

視頻應(yīng)用的查片系統(tǒng),跟找房系統(tǒng)幾乎是一模一樣的業(yè)務(wù)場(chǎng)景,但是并發(fā)量要高幾個(gè)數(shù)量級(jí),這個(gè)場(chǎng)景就非常適合使用 Redis 作為緩存提升并發(fā)訪問量,降低響應(yīng)時(shí)間,滿足幾十萬甚至上百萬的并發(fā)訪問需求。由此可見決定是否使用 Redis 的根本要素就是并發(fā)量和延遲要求。

下面我們來看一下 Redis 是如何解決互聯(lián)網(wǎng)極端場(chǎng)景下的并發(fā)訪問需求的。

超高并發(fā)訪問下的緩存解決方案

2cad5252d82c5289a1e679361dd1364.png

這是一個(gè)典型的媒體類緩存架構(gòu)圖,發(fā)文系統(tǒng)不定期更新媒體庫(kù),通過分布式緩存服務(wù)將各個(gè)最新文章同步到 Redis 緩存,前端應(yīng)用通過路由層找到相應(yīng)的數(shù)據(jù)源訪問。各個(gè)緩存服務(wù)數(shù)據(jù)不同步。當(dāng)發(fā)生熱點(diǎn)事件時(shí),路由層可能將不通地區(qū)的訪問路由到熱點(diǎn)數(shù)據(jù)所在的緩存服務(wù)器,帶來瞬間的流量暴漲,極端情況下可能導(dǎo)致服務(wù)器宕機(jī),業(yè)務(wù)受損。那么這種不定期突發(fā)流量的場(chǎng)景要如何解決呢?

這里有幾個(gè)思路:

c3248934305e783295708952f09e0d5.png

將熱點(diǎn) Key 加前綴打散,實(shí)現(xiàn)熱數(shù)據(jù)復(fù)制

路由層追加本地緩存,通過多級(jí)緩存提升緩存能力

緩存層提供數(shù)據(jù)副本,提高并發(fā)訪問能力

第一種方案,可以有效打散熱數(shù)據(jù),但是熱點(diǎn)事件是不定期隨機(jī)發(fā)生,運(yùn)維壓力大,成本高,這只是個(gè)頭痛醫(yī)頭腳痛醫(yī)腳的方案。

第二種方案,可以通過追加本地緩存提升緩存能力,但是本地緩存設(shè)置多大,刷新頻率多高,業(yè)務(wù)是否能容忍臟讀,這些都是無法繞開的問題。

第三種方案,可以追加只讀副本來實(shí)現(xiàn)數(shù)據(jù)的復(fù)制,但是同樣也會(huì)帶來成本高企,主庫(kù)負(fù)載高等問題。

1f660a0b7f92f710d539cc210958af0.png

上面這個(gè)架構(gòu)圖是一個(gè)優(yōu)化的解決方案,通過主庫(kù)拉取多個(gè)只讀從庫(kù)的分支,對(duì)不同的請(qǐng)求源,劃分獨(dú)立的緩存服務(wù)。比如手機(jī)應(yīng)用就固定路由到APP數(shù)據(jù)資源組,WEB 訪問就路由到WEB 數(shù)據(jù)資源組等,并且每個(gè)資源組可以提供N個(gè)只讀副本,提高同源訪問下的并發(fā)訪問能力。這種架構(gòu)可以提升不同訪問源的資源隔離能力,提升多源訪問下業(yè)務(wù)的穩(wěn)定性和可用性。

這個(gè)方案的問題也比較明顯:

主庫(kù)讀寫性能差

只讀副本多,成本高

只讀鏈路過長(zhǎng),管理維護(hù)難,運(yùn)維成本高

我們的客戶里最夸張的用到過 1主40只讀的架構(gòu),來滿足類似的業(yè)務(wù)場(chǎng)景。

阿里云Redis是如何解決這種超高并發(fā)訪問的問題呢?

2e699890f912d8c2233711be0776f3b.png

阿里云重磅推出Redis性能增強(qiáng)版本,通過提升網(wǎng)絡(luò)IO的并發(fā)處理能力,極大的提升了Redis單節(jié)點(diǎn)的讀寫性能,對(duì)比社區(qū)版本,性能提升3倍。由于保持單 Worker 的處理模式,100% 兼容 Redis 協(xié)議。上面的單數(shù)據(jù)百萬QPS 的訪問能力輕松達(dá)成。本文介紹的媒體類場(chǎng)景可以通過開通性能增強(qiáng)版1主5只讀實(shí)例實(shí)現(xiàn)單數(shù)據(jù)200w+ QPS,有效緩解突發(fā)熱點(diǎn)事件帶來的流量激增,超高并發(fā)訪問等行業(yè)痛點(diǎn)問題。相比較自建1主40只讀的社區(qū)版本,同樣性能標(biāo)準(zhǔn)的阿里云Redis性能增強(qiáng)版1主5只讀架構(gòu)更穩(wěn)定,管理更便捷,使用也更方便。

以上就是Redis 單數(shù)據(jù)多源超高并發(fā)下的解決方案的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注 其它相關(guān)文章!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 万全县| 北流市| 寿宁县| 石河子市| 哈密市| 民勤县| 乐至县| 敖汉旗| 通山县| 健康| 南阳市| 延长县| 循化| 苗栗市| 界首市| 大新县| 洞口县| 潜山县| 无为县| 南川市| 盱眙县| 乳源| 胶南市| 丰台区| 临湘市| 安乡县| 安仁县| 镇巴县| 青神县| 塘沽区| 石家庄市| 云梦县| 启东市| 太保市| 桂平市| 嘉禾县| 广汉市| 将乐县| 玉林市| 平乐县| 岳普湖县|