高性能,高可用,高擴(kuò)展方案總結(jié)

結(jié)合我的個(gè)人經(jīng)驗(yàn)捌袜,針對(duì)高性能、高可用炸枣、高擴(kuò)展3個(gè)方面虏等,總結(jié)下可落地的實(shí)踐方案。

? 高性能的實(shí)踐方案

1适肠、集群部署霍衫,通過負(fù)載均衡減輕單機(jī)壓力。

2侯养、多級(jí)緩存敦跌,包括靜態(tài)數(shù)據(jù)使用CDN、本地緩存逛揩、分布式緩存等柠傍,以及對(duì)緩存場(chǎng)景中的熱點(diǎn)key、緩存穿透辩稽、緩存并發(fā)惧笛、數(shù)據(jù)一致性等問題的處理。

3搂誉、分庫(kù)分表和索引優(yōu)化徐紧,以及借助搜索引擎解決復(fù)雜查詢問題。

4炭懊、考慮NoSQL數(shù)據(jù)庫(kù)的使用并级,比如HBase、TiDB等侮腹,但是團(tuán)隊(duì)必須熟悉這些組件嘲碧,且有較強(qiáng)的運(yùn)維能力。

5父阻、異步化愈涩,將次要流程通過多線程、MQ加矛、甚至延時(shí)任務(wù)進(jìn)行異步處理履婉。

6、限流斟览,需要先考慮業(yè)務(wù)是否允許限流(比如秒殺場(chǎng)景是允許的)毁腿,包括前端限流、Nginx接入層的限流、服務(wù)端的限流已烤。

7鸠窗、對(duì)流量進(jìn)行削峰填谷,通過MQ承接流量胯究。

8稍计、并發(fā)處理,通過多線程將串行邏輯并行化裕循。

9臣嚣、預(yù)計(jì)算,比如搶紅包場(chǎng)景费韭,可以提前計(jì)算好紅包金額緩存起來(lái)茧球,發(fā)紅包時(shí)直接使用即可。

10星持、緩存預(yù)熱抢埋,通過異步任務(wù)提前預(yù)熱數(shù)據(jù)到本地緩存或者分布式緩存中。

11督暂、減少IO次數(shù)揪垄,比如數(shù)據(jù)庫(kù)和緩存的批量讀寫、RPC的批量接口支持逻翁、或者通過冗余數(shù)據(jù)的方式干掉RPC調(diào)用饥努。

12、減少IO時(shí)的數(shù)據(jù)包大小八回,包括采用輕量級(jí)的通信協(xié)議酷愧、合適的數(shù)據(jù)結(jié)構(gòu)、去掉接口中的多余字段缠诅、減少緩存key的大小溶浴、壓縮緩存value等。

13管引、程序邏輯優(yōu)化士败,比如將大概率阻斷執(zhí)行流程的判斷邏輯前置、For循環(huán)的計(jì)算邏輯優(yōu)化褥伴,或者采用更高效的算法谅将。

14、各種池化技術(shù)的使用和池大小的設(shè)置重慢,包括HTTP請(qǐng)求池饥臂、線程池(考慮CPU密集型還是IO密集型設(shè)置核心參數(shù))、數(shù)據(jù)庫(kù)和Redis連接池等似踱。

15隅熙、JVM優(yōu)化志衣,包括新生代和老年代的大小、GC算法的選擇等猛们,盡可能減少GC頻率和耗時(shí)。

16狞洋、鎖選擇弯淘,讀多寫少的場(chǎng)景用樂觀鎖,或者考慮通過分段鎖的方式減少鎖沖突吉懊。

上述方案無(wú)外乎從計(jì)算和 IO 兩個(gè)維度考慮所有可能的優(yōu)化點(diǎn)庐橙,需要有配套的監(jiān)控系統(tǒng)實(shí)時(shí)了解當(dāng)前的性能表現(xiàn),并支撐你進(jìn)行性能瓶頸分析借嗽,然后再遵循二八原則态鳖,抓主要矛盾進(jìn)行優(yōu)化。

? 高可用的實(shí)踐方案

1恶导、對(duì)等節(jié)點(diǎn)的故障轉(zhuǎn)移浆竭,Nginx和服務(wù)治理框架均支持一個(gè)節(jié)點(diǎn)失敗后訪問另一個(gè)節(jié)點(diǎn)。

2惨寿、非對(duì)等節(jié)點(diǎn)的故障轉(zhuǎn)移邦泄,通過心跳檢測(cè)并實(shí)施主備切換(比如redis的哨兵模式或者集群模式、MySQL的主從切換等)裂垦。

3顺囊、接口層面的超時(shí)設(shè)置、重試策略和冪等設(shè)計(jì)蕉拢。

4特碳、降級(jí)處理:保證核心服務(wù),犧牲非核心服務(wù)晕换,必要時(shí)進(jìn)行熔斷午乓;或者核心鏈路出問題時(shí),有備選鏈路届巩。

5硅瞧、限流處理:對(duì)超過系統(tǒng)處理能力的請(qǐng)求直接拒絕或者返回錯(cuò)誤碼。

6恕汇、MQ場(chǎng)景的消息可靠性保證腕唧,包括producer端的重試機(jī)制、broker側(cè)的持久化瘾英、consumer端的ack機(jī)制等枣接。

7、灰度發(fā)布缺谴,能支持按機(jī)器維度進(jìn)行小流量部署但惶,觀察系統(tǒng)日志和業(yè)務(wù)指標(biāo),等運(yùn)行平穩(wěn)后再推全量。

8膀曾、監(jiān)控報(bào)警:全方位的監(jiān)控體系县爬,包括最基礎(chǔ)的CPU、內(nèi)存添谊、磁盤财喳、網(wǎng)絡(luò)的監(jiān)控,以及Web服務(wù)器斩狱、JVM耳高、數(shù)據(jù)庫(kù)、各類中間件的監(jiān)控和業(yè)務(wù)指標(biāo)的監(jiān)控所踊。

9泌枪、災(zāi)備演練:類似當(dāng)前的“混沌工程”,對(duì)系統(tǒng)進(jìn)行一些破壞性手段秕岛,觀察局部故障是否會(huì)引起可用性問題碌燕。

高可用的方案主要從冗余、取舍瓣蛀、系統(tǒng)運(yùn)維3個(gè)方向考慮陆蟆,同時(shí)需要有配套的值班機(jī)制和故障處理流程,當(dāng)出現(xiàn)線上問題時(shí)惋增,可及時(shí)跟進(jìn)處理叠殷。

? 高擴(kuò)展的實(shí)踐方案

1、合理的分層架構(gòu):比如上面談到的互聯(lián)網(wǎng)最常見的分層架構(gòu)诈皿,另外還能進(jìn)一步按照數(shù)據(jù)訪問層林束、業(yè)務(wù)邏輯層對(duì)微服務(wù)做更細(xì)粒度的分層(但是需要評(píng)估性能,會(huì)存在網(wǎng)絡(luò)多一跳的情況)稽亏。

2壶冒、存儲(chǔ)層的拆分:按照業(yè)務(wù)維度做垂直拆分、按照數(shù)據(jù)特征維度進(jìn)一步做水平拆分(分庫(kù)分表)截歉。

3胖腾、業(yè)務(wù)層的拆分:最常見的是按照業(yè)務(wù)維度拆(比如電商場(chǎng)景的商品服務(wù)、訂單服務(wù)等)瘪松,也可以按照核心接口和非核心接口拆咸作,還可以按照請(qǐng)求源拆(比如To C和To B,APP和H5)宵睦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末记罚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子壳嚎,更是在濱河造成了極大的恐慌桐智,老刑警劉巖末早,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異说庭,居然都是意外死亡然磷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門刊驴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)样屠,“玉大人,你說(shuō)我怎么就攤上這事缺脉。” “怎么了悦穿?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵攻礼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我栗柒,道長(zhǎng)礁扮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任瞬沦,我火速辦了婚禮太伊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘逛钻。我一直安慰自己僚焦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布曙痘。 她就那樣靜靜地躺著芳悲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪边坤。 梳的紋絲不亂的頭發(fā)上名扛,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音茧痒,去河邊找鬼肮韧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛旺订,可吹牛的內(nèi)容都是我干的弄企。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼耸峭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼桩蓉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起劳闹,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤院究,失蹤者是張志新(化名)和其女友劉穎洽瞬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體业汰,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伙窃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了样漆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片为障。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖放祟,靈堂內(nèi)的尸體忽然破棺而出鳍怨,到底是詐尸還是另有隱情,我是刑警寧澤跪妥,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布鞋喇,位于F島的核電站,受9級(jí)特大地震影響眉撵,放射性物質(zhì)發(fā)生泄漏侦香。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一纽疟、第九天 我趴在偏房一處隱蔽的房頂上張望罐韩。 院中可真熱鬧,春花似錦污朽、人聲如沸散吵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)错蝴。三九已至,卻和暖如春颓芭,著一層夾襖步出監(jiān)牢的瞬間顷锰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工亡问, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留官紫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓州藕,卻偏偏與公主長(zhǎng)得像束世,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子床玻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359