更新時(shí)間:2021-08-13 10:52:58 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1093次
分而治之是一種常見的高并發(fā)系統(tǒng)設(shè)計(jì)方法,采用分布式部署的方式把流量分流開,讓每個(gè)服務(wù)器都承擔(dān)一部分并發(fā)和流量。
通過購買性能更好的硬件來提升系統(tǒng)的并發(fā)處理能力,比方說目前系統(tǒng) 4 核 4G 每秒可以處理 200 次請求,那么如果要處理 400 次請求呢?很簡單,我們把機(jī)器的硬件提升到 8 核 8G(硬件資源的提升可能不是線性的,這里僅為參考)。

使用緩存來提高系統(tǒng)的性能,就好比用“拓寬河道”的方式抵抗高并發(fā)大流量的沖擊
在某些場景下,未處理完成之前我們可以讓請求先返回,在數(shù)據(jù)準(zhǔn)備好之后再通知請求方,這樣可以在單位時(shí)間內(nèi)處理更多的請求
什么是同步
以方法調(diào)用為例,同步調(diào)用代表調(diào)用方要阻塞等待被調(diào)用方法中的邏輯執(zhí)行完成。這種方式下,當(dāng)被調(diào)用方法響應(yīng)時(shí)間較長時(shí),會造成調(diào)用方長久的阻塞,在高并發(fā)下會造成整體系統(tǒng)性能下降甚至發(fā)生雪崩。
什么是異步
異步調(diào)用恰恰相反,調(diào)用方不需要等待方法邏輯執(zhí)行完成就可以返回執(zhí)行其他的邏輯,在被調(diào)用方法執(zhí)行完畢后再通過回調(diào)、事件通知等方式將結(jié)果反饋給調(diào)用方
高并發(fā)原則
無狀態(tài)設(shè)計(jì):因?yàn)橛袪顟B(tài)可能涉及鎖操作,鎖又可能導(dǎo)致并發(fā)的串行化
保持合理的粒度:無論拆分還是服務(wù)化,其實(shí)就是服務(wù)粒度控制,控制粒度為了分散請求提高并發(fā),或?yàn)榱藦墓芾淼冉嵌忍岣呖刹傩?/p>
緩存、隊(duì)列、并發(fā)等技巧在高并發(fā)設(shè)計(jì)上可供參考,但需依場景使用
高可用原則
本質(zhì)訴求:高可用就是抵御不確定性,保證系統(tǒng)7*24小時(shí)健康服務(wù)
系統(tǒng)的任何發(fā)布必須具有可回滾能力
系統(tǒng)任何外部依賴必須準(zhǔn)確衡量是否可降級,是否可無損降級,并提供降級開關(guān)
系統(tǒng)對外暴露的接口必須配置好限流,限流值必須盡量準(zhǔn)確可靠
業(yè)務(wù)設(shè)計(jì)原則
安全性:防抓取,防刷單、防表單重復(fù)提交,等等等等。
at least 消費(fèi),應(yīng)考慮是否采用冪等設(shè)計(jì)
業(yè)務(wù)流程動(dòng)態(tài)化,業(yè)務(wù)規(guī)則動(dòng)態(tài)化
系統(tǒng)owner負(fù)責(zé)制、人員備份制、值班制
系統(tǒng)文檔化
后臺操作可追溯
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"高并發(fā)系統(tǒng)設(shè)計(jì)方法",希望對大家有幫助,想了解更多可查看Java在線學(xué)習(xí)。動(dòng)力節(jié)點(diǎn)在線學(xué)習(xí)教程,針對沒有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

初級 202925

初級 203221

初級 202629

初級 203743