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

到底什么是服務(wù)降級?高并發(fā)系統(tǒng)又該如何落地服務(wù)降級?

開發(fā) 架構(gòu)
對服務(wù)降級的核心原理和落地方案進(jìn)行了介紹。首先,簡單描述了本章的需求。隨后對服務(wù)降級進(jìn)行了簡要的說明。并對寫服務(wù)降級、讀服務(wù)降級和精簡系統(tǒng)流程進(jìn)行了簡單的說明。最后,簡單介紹了降級開關(guān)的設(shè)計(jì)。

從本質(zhì)上講,與流量削峰一樣,服務(wù)降級解決的也是在有限的系統(tǒng)資源下,需要承載超高流量的需求問題。像秒殺系統(tǒng)這種瞬時(shí)超高并發(fā)流量的場景,即使我們對系統(tǒng)做了流控措施,在整場秒殺活動下,如果系統(tǒng)持續(xù)處于高并發(fā)流量的壓力下,秒殺鏈路上部分服務(wù)就可能會出現(xiàn)問題。

所以,除了流控以外,我們對秒殺系統(tǒng)也要增加其他的容錯(cuò)方案。

一、前言

在前面的文章中,我們對秒殺系統(tǒng)進(jìn)行了一系列的優(yōu)化措施。同時(shí),對秒殺系統(tǒng)實(shí)現(xiàn)了分布式流控、單機(jī)限流的流控措施。引入了業(yè)務(wù)網(wǎng)關(guān),能夠在業(yè)務(wù)網(wǎng)關(guān)層面實(shí)現(xiàn)分布式流控和單機(jī)流控。為了盡可能的將流控和數(shù)據(jù)校驗(yàn)前置化,引入了流量網(wǎng)關(guān)。為了進(jìn)一步保證秒殺系統(tǒng)整個(gè)交易鏈路上服務(wù)的穩(wěn)定性,我們還需要對秒殺系統(tǒng)進(jìn)行容錯(cuò)處理,其中,服務(wù)降級就是秒殺系統(tǒng)中非常重要的一環(huán)。

二、本章訴求

講述服務(wù)降級的核心原理與落地實(shí)現(xiàn)方案,不只是秒殺系統(tǒng)適用,任何互聯(lián)網(wǎng)項(xiàng)目甚至傳統(tǒng)IT項(xiàng)目,在系統(tǒng)資源有限的情況下,需要支持高并發(fā)流量訪問。此時(shí),都需要對系統(tǒng)進(jìn)行降級處理,使系統(tǒng)能夠在資源有限的環(huán)境中,平穩(wěn)運(yùn)行。

三、服務(wù)降級

從本質(zhì)上講,與流量削峰一樣,服務(wù)降級解決的也是在有限的系統(tǒng)資源下,需要承載超高流量的需求問題。像秒殺系統(tǒng)這種瞬時(shí)超高并發(fā)流量的場景,即使我們對系統(tǒng)做了流控措施,在整場秒殺活動下,如果系統(tǒng)持續(xù)處于高并發(fā)流量的壓力下,秒殺鏈路上部分服務(wù)就可能會出現(xiàn)問題,所以,除了流控以外,我們對秒殺系統(tǒng)也要增加其他的容錯(cuò)方案。

當(dāng)然,如果你的系統(tǒng)資源充足,或者訪問流量根本不高,此時(shí)可以不考慮服務(wù)降級。反之,如果系統(tǒng)資源有限,并且訪問系統(tǒng)的流量比較高,系統(tǒng)資源不足以支撐這么高的并發(fā)訪問流量時(shí),就需要考慮服務(wù)降級了。

服務(wù)降級一般都是有損的,常見的服務(wù)降級方案有:寫服務(wù)降級、讀服務(wù)降級和精簡系統(tǒng)流程。

四、寫服務(wù)降級

學(xué)到這里,小伙伴們應(yīng)該比較清楚了,在秒殺系統(tǒng)中,不可能是一個(gè)單體系統(tǒng)或者單個(gè)微服務(wù)在運(yùn)行,往往是各個(gè)微服務(wù)組成了整個(gè)秒殺的交易鏈路,此時(shí),就會涉及到多數(shù)據(jù)源的問題。

其實(shí),盡管有數(shù)據(jù)一致性理論和分布式事務(wù)落地方案的指導(dǎo),在多數(shù)據(jù)源場景下,數(shù)據(jù)的強(qiáng)一致性其實(shí)也是比較難以保證的,這不僅僅是分布式事務(wù)在高并發(fā)場景下實(shí)現(xiàn)比較困難,更是由于在高并發(fā)場景下,需要對強(qiáng)一致性和高可用性做出權(quán)衡和取舍。

因此,一般在涉及金融資產(chǎn)類對一致性要求比較高的場景時(shí),才會使用強(qiáng)一致性分布式事務(wù)解決方案,其他場景下,會采用弱一致性或者最終一致性分布式事務(wù)方案來解決數(shù)據(jù)一致性的問題。

在訪問流量不高時(shí),可以將寫請求直接路由到MySQL數(shù)據(jù)庫,再通過Canal監(jiān)聽MySQL數(shù)據(jù)庫BinLog的變化,將變化的數(shù)據(jù)更新到Redis緩存,如圖95-1所示。

圖片圖片

這種設(shè)計(jì)下,緩存與數(shù)據(jù)庫的數(shù)據(jù)就是最終一致的,通過將數(shù)據(jù)庫中的增量變化數(shù)據(jù)同步到緩存中,通過緩存可以抗更高的并發(fā)讀操作。但是,此時(shí)系統(tǒng)的寫操作會受限于數(shù)據(jù)庫磁盤的IO操作。

當(dāng)訪問系統(tǒng)的流量激增時(shí),就需要對寫操作進(jìn)行降級,由先寫MySQL數(shù)據(jù)庫,再同步Redis緩存,降級為先寫Redis緩存,再異步寫MySQL數(shù)據(jù)庫。由Redis的強(qiáng)大讀寫能力來抗更高的并發(fā)流量,如圖95-2所示。

圖片圖片

這里,通過降級寫服務(wù),將寫數(shù)據(jù)庫的操作降級為寫Redis緩存,再異步寫MySQL數(shù)據(jù)庫,但是帶來的影響就是緩存數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)的一致性問題。這種為了追求性能而造成的數(shù)據(jù)一致性問題是比較常見的。我們可以設(shè)計(jì)一個(gè)定時(shí)任務(wù)比對數(shù)據(jù),及時(shí)發(fā)現(xiàn)問題后進(jìn)行修復(fù)。

五、讀服務(wù)降級

在高并發(fā)系統(tǒng)設(shè)計(jì)時(shí),為了提供系統(tǒng)的讀性能,我們往往會設(shè)計(jì)多級緩存,此時(shí),如果系統(tǒng)發(fā)生故障,則能夠及時(shí)降級止損。例如,在系統(tǒng)中,我們?yōu)樽x操作設(shè)計(jì)了JVM內(nèi)存緩存、Redis緩存后,又為系統(tǒng)增加了ES緩存,如圖95-3所示。

圖片圖片

此時(shí),如果Redis緩存出現(xiàn)故障,我們可以快速將讀請求降級到ES上。如果Redis和ES同時(shí)出現(xiàn)了故障(實(shí)際場景下很少會發(fā)生同時(shí)出現(xiàn)故障的情況),我們還可以快速將請求降級到MySQL數(shù)據(jù)庫。

六、精簡系統(tǒng)流程

正常情況下,我們在打開電商平臺的商詳頁時(shí),除了會看到商品的基本信息外,還會看到一些商品的附加屬性信息,比如商品的排行、評價(jià)和推薦,商品的收藏?cái)?shù)量以及當(dāng)前用戶是都收藏過商品。在下單頁面,還會存在使用優(yōu)惠券等等入口。

大家可以想象一下,其實(shí),對于普通商品來說,這些附加信息越豐富越好,它能夠在一定程度上吸引用戶下單促成交易轉(zhuǎn)化。但是,在秒殺業(yè)務(wù)下,這些附加信息就不是越多越好了,秒殺系統(tǒng)要求響應(yīng)迅速,性能高。此時(shí),返回的數(shù)據(jù)越少、交互越少,整個(gè)交易鏈路越短,響應(yīng)越快,用戶的體驗(yàn)就越好。

所以,對于秒殺商品來說,就需要根據(jù)具體的情況確定是否要展示這些附加信息了,如果某個(gè)秒殺商品迅速成為了平臺的爆品,此時(shí)就需要對這種爆款商品進(jìn)行附加信息的降級處理了,這也是對非核心功能的降級。對非核心功能進(jìn)行降級,優(yōu)先保證核心功能的正常運(yùn)行。

七、降級開關(guān)設(shè)計(jì)

無論是寫服務(wù)降級,還是讀服務(wù)降級,亦或是精簡系統(tǒng)流程,我們都可以設(shè)計(jì)一個(gè)降級開關(guān)進(jìn)行降級,通過降級開關(guān)進(jìn)行一鍵降級,可以實(shí)現(xiàn)流量在不同的鏈路之間進(jìn)行切換。具體實(shí)現(xiàn)上,我們可以通過配置中心,對降級開關(guān)進(jìn)行變更,各個(gè)微服務(wù)會訂閱配置中心的配置,然后配置中心將變更的降級開關(guān)狀態(tài)推送到各個(gè)微服務(wù)實(shí)例上,如圖95-4所示。

圖片圖片

可以看到,運(yùn)營人員在配置中心控制臺變更降級開關(guān)狀態(tài)后,配置中心會將開關(guān)的狀態(tài)推送到各個(gè)微服務(wù)實(shí)例上,各個(gè)微服務(wù)實(shí)際就會即時(shí)生效,實(shí)現(xiàn)流量在不同的鏈路之間進(jìn)行切換。

八、總結(jié)

本章,對服務(wù)降級的核心原理和落地方案進(jìn)行了介紹。首先,簡單描述了本章的需求。隨后對服務(wù)降級進(jìn)行了簡要的說明。并對寫服務(wù)降級、讀服務(wù)降級和精簡系統(tǒng)流程進(jìn)行了簡單的說明。最后,簡單介紹了降級開關(guān)的設(shè)計(jì)。

九、寫在最后

在冰河的知識星球除了目前正在熱更的高性能網(wǎng)關(guān)和RPC視頻外,還有其他9個(gè)項(xiàng)目,像DeepSeek大模型、手寫高性能熔斷組件、手寫通用指標(biāo)上報(bào)組件、手寫高性能數(shù)據(jù)庫路由組件、分布式IM即時(shí)通訊系統(tǒng)、Sekill分布式秒殺系統(tǒng)、手寫RPC、簡易商城系統(tǒng)等等,這些項(xiàng)目的需求、方案、架構(gòu)、落地等均來自互聯(lián)網(wǎng)真實(shí)業(yè)務(wù)場景,讓你真正學(xué)到互聯(lián)網(wǎng)大廠的業(yè)務(wù)與技術(shù)落地方案,并將其有效轉(zhuǎn)化為自己的知識儲備。

節(jié)選自:《Seckill秒殺系統(tǒng):第95章:服務(wù)降級核心原理與落地方案》一文,文章鏈接:https://articles.zsxq.com/id_ehf2k7838z4b.html

責(zé)任編輯:武曉燕 來源: 冰河技術(shù)
相關(guān)推薦

2025-09-23 02:15:00

2016-11-28 08:40:17

系統(tǒng)降級服務(wù)

2018-08-01 14:20:11

微服務(wù)架構(gòu)人工智能

2024-11-29 16:02:17

2025-03-26 00:58:14

2014-01-17 10:38:07

Cache服務(wù)降級

2018-02-27 14:30:17

2025-07-04 07:06:48

2025-04-03 10:04:53

服務(wù)降級分布式系統(tǒng)系統(tǒng)

2017-11-16 15:45:25

服務(wù)降級熔斷

2021-03-16 08:31:59

微服務(wù)Sentinel雪崩效應(yīng)

2025-04-17 02:00:00

2021-10-06 19:01:45

高并發(fā)熔斷預(yù)熱

2017-07-03 09:50:07

Spring Clou微服務(wù)架構(gòu)

2025-04-09 11:15:00

服務(wù)熔斷服務(wù)降分布式系統(tǒng)

2016-12-19 11:33:26

2024-07-02 10:58:53

2023-06-20 08:10:00

2024-01-30 18:10:25

2020-11-10 07:46:09

服務(wù)器高并發(fā)高性能
點(diǎn)贊
收藏

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