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

程序員必知必會(huì),學(xué)會(huì)這兩點(diǎn),提升系統(tǒng)魯棒性

新聞
很多程序員,都希望提升自己系統(tǒng)的擼棒性,什么是擼棒性呢?這個(gè)其實(shí)是從英文直譯過來的,就是程序員的健壯性。相信不少程序員同學(xué)都聽過服務(wù)雪崩,或者曾經(jīng)使用過某款軟件雪崩過。

 很多程序員,都希望提升自己系統(tǒng)的擼棒性,什么是擼棒性呢?這個(gè)其實(shí)是從英文直譯過來的,就是程序員的健壯性。相信不少程序員同學(xué)都聽過服務(wù)雪崩,或者曾經(jīng)使用過某款軟件雪崩過。當(dāng)服務(wù)發(fā)生雪崩的時(shí)候,幾乎整個(gè)系統(tǒng)會(huì)處于不可用的狀態(tài),為什么會(huì)發(fā)生服務(wù)雪崩呢?我們舉一個(gè)常見的例子。

 

[[318007]]

 

因?yàn)樾鹿诓《镜挠绊懀谡殖蔀榱讼∪蔽锲?,很多電商平臺(tái)紛紛開啟了口罩秒殺活動(dòng)。一次口罩秒殺的正常流程可能是這樣的,用戶在前端發(fā)起請(qǐng)求,經(jīng)過了復(fù)雜的網(wǎng)絡(luò)環(huán)境,到了后臺(tái)系統(tǒng),后臺(tái)是分很多個(gè)系統(tǒng)的,可能需要去商品系統(tǒng)去校驗(yàn)商品的合法性,然后去用戶系統(tǒng)校驗(yàn)用戶的合法性,再去庫存系統(tǒng)校驗(yàn)還有沒有庫存,最后可能還要去積分系統(tǒng)、優(yōu)惠系統(tǒng)、地址系統(tǒng)等等等。一次簡單的秒殺,后臺(tái)竟然如此復(fù)雜。而這么多系統(tǒng),只要有一個(gè)系統(tǒng)出現(xiàn)瓶頸,就可能出現(xiàn)雪崩。例如庫存系統(tǒng),每秒本來可以處理1萬個(gè)請(qǐng)求,突然來了10萬個(gè)請(qǐng)求,他們只能夠排隊(duì)處理,可能只處理了5萬個(gè),后面的就超時(shí)了。超時(shí)了,用戶的頁面就有可能轉(zhuǎn)菊花,用戶很難受,就有可能不停的刷新,又涌進(jìn)來更多的請(qǐng)求。本來用戶系統(tǒng)可能可以處理10萬個(gè)請(qǐng)求,因?yàn)橛脩舨煌5乃⑿?,也崩潰了。而用戶系統(tǒng)可不只影響了秒殺,一些使用其他功能的用戶也被迫重試,最后,整個(gè)系統(tǒng)都趨于崩潰。

為了避免服務(wù)雪崩,我們需要做點(diǎn)什么,通常我們會(huì)使用限流或者熔斷機(jī)制。限流,顧名思義,就是限制流量的大小。這個(gè)在日常生活中,我們也并不陌生。例如北上廣深的地鐵站,高峰時(shí)期就經(jīng)常限流。本來10分鐘只能搭乘500名乘客,這個(gè)時(shí)候我們讓2000名乘客到站臺(tái)等也是毫無意義,徒增風(fēng)險(xiǎn),限流系統(tǒng)就是這種理念。預(yù)估好每個(gè)系統(tǒng)的容量,例如庫存系統(tǒng),一秒鐘只能處理1萬個(gè)請(qǐng)求,那么我們就讓只有1萬個(gè)請(qǐng)求能夠請(qǐng)求到庫存系統(tǒng)。其他的請(qǐng)求直接拒絕,告訴他們,庫存已經(jīng)售光了,下次再來。這就可以很好地保護(hù)到我們的系統(tǒng)。

另一種常見的手段,便是熔斷。熔斷就跟我們的保險(xiǎn)絲一樣,一旦電流達(dá)到某個(gè)值,就會(huì)燒斷保險(xiǎn)絲,從而保護(hù)到用電安全。熔斷在分布式系統(tǒng)中其實(shí)也比較常見,一般有著下面三種狀態(tài)。全開,表示服務(wù)運(yùn)行正常,關(guān)閉,表示觸發(fā)熔斷,無法正常調(diào)用,半開,部分請(qǐng)求會(huì)被攔截。

 

程序員必知必會(huì),學(xué)會(huì)這兩點(diǎn),提升系統(tǒng)魯棒性

 

那么熔斷系統(tǒng)有什么用呢?我們舉一個(gè)簡單的例子,假如我們的服務(wù)是部署在多個(gè)機(jī)房的,突然有一天,某個(gè)機(jī)房的光纖被挖斷了。這個(gè)時(shí)候,使用這個(gè)機(jī)房的服務(wù)基本都會(huì)失敗了,這個(gè)時(shí)候,如果沒有熔斷系統(tǒng),就會(huì)有持續(xù)不斷的請(qǐng)求進(jìn)入這個(gè)機(jī)房,結(jié)果必然是超時(shí)或者失敗。最后引發(fā)上游業(yè)務(wù)的不斷重試,引起雪崩。如果這個(gè)時(shí)候有熔斷的存在,很快請(qǐng)求就會(huì)被路由到其他機(jī)房,從而達(dá)到對(duì)系統(tǒng)的保護(hù)。

 

那么,如何設(shè)計(jì)一個(gè)熔斷系統(tǒng)呢?只要掌握了以下幾點(diǎn),相信并不困難。

  • 位置 在一個(gè)分布式服務(wù)中,那些服務(wù)是瓶頸就是最有可能需要熔斷的地方。
  • 錯(cuò)誤類型 在一個(gè)服務(wù)中,通常有各種類型的錯(cuò)誤,有些是系統(tǒng)失敗,像服務(wù)超時(shí),運(yùn)行時(shí)異常,有些則是邏輯失敗,像訂單重復(fù)取消,要正確的區(qū)分不同的錯(cuò)誤,有些錯(cuò)誤要觸發(fā)熔斷,有些則是可以跳過。
  • 性能 一個(gè)好的熔斷服務(wù),對(duì)性能的影響應(yīng)該是較小的。不難因噎廢食,為了計(jì)數(shù)的準(zhǔn)確而加了大力度的鎖,從而造成性能大幅下跌。
  • 服務(wù)恢復(fù) 一般,熔斷的服務(wù)恢復(fù)有兩種模式,一是自動(dòng)恢復(fù),熔斷系統(tǒng)隔斷時(shí)間進(jìn)行服務(wù)探測,如果探測成功會(huì)進(jìn)行服務(wù)恢復(fù)。另一種則是提供手動(dòng)重置,例如我們誤處理了一個(gè)錯(cuò)誤碼,造成系統(tǒng)熔斷,那么我們需要手工重置。
  • 日志 日志是必須的,特別是錯(cuò)誤日志。所有的架構(gòu)設(shè)計(jì),都需要日志系統(tǒng),不然就變成了薛定諤的熔斷系統(tǒng)了。

好了,今天我們就介紹道這里,歡迎大家關(guān)注我,整理后會(huì)和大家繼續(xù)分享。大家的支持是我繼續(xù)嘮嗑的動(dòng)力。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2019-01-30 14:14:16

LinuxUNIX操作系統(tǒng)

2023-09-12 11:25:15

2020-05-13 11:20:57

MySQL規(guī)范數(shù)據(jù)庫

2014-02-09 10:30:17

Python程序員工具

2023-05-11 08:01:08

Code開發(fā)保護(hù)機(jī)制

2018-09-18 10:56:52

Android開發(fā)http

2020-11-25 10:40:58

程序員技能開發(fā)者

2015-11-30 11:01:34

前端程序員歷史

2015-12-04 09:33:15

程序員前端演進(jìn)史

2020-07-10 07:58:14

Linux

2024-11-15 11:11:48

2015-05-19 14:34:17

程序員編程語言

2020-03-31 08:42:14

程序員操作系統(tǒng) Linux

2024-01-03 07:56:50

2023-10-26 18:05:37

Git命令差異

2017-08-03 14:25:13

Python陷阱與缺陷

2012-06-28 14:01:30

Java程序員排序

2020-10-26 15:20:05

架構(gòu)運(yùn)維技術(shù)

2018-07-11 14:04:53

Python陷阱缺陷

2022-05-18 09:01:19

JSONJavaScript
點(diǎn)贊
收藏

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