高并發(fā)、高可用系統(tǒng)設(shè)計(jì)原則

高并發(fā)原則

  • 無狀態(tài):應(yīng)用無狀態(tài),配置文件有狀態(tài)
  • 拆分:系統(tǒng)維度、功能維度、讀寫維度、AOP維度、模塊維度
  • 服務(wù)化:進(jìn)程內(nèi)服務(wù)->單機(jī)遠(yuǎn)程服務(wù)->集群手動注冊服務(wù)->自動注冊和發(fā)現(xiàn)服務(wù)->服務(wù)分組/隔離/路由->服務(wù)治理(限流/黑名單)
  • 消息隊(duì)列:實(shí)現(xiàn)服務(wù)解耦、異步處理、流量削峰/緩沖(需要注意:處理生產(chǎn)消息失敗、消息重復(fù)接收處理、生產(chǎn)重試;作為大流量緩沖,犧牲強(qiáng)一致性,保證最終一致性;需要數(shù)據(jù)校對)
  • 數(shù)據(jù)異構(gòu):異構(gòu)數(shù)據(jù)形成閉環(huán),數(shù)據(jù)存儲到合適的存儲引擎;聚合數(shù)據(jù),使前端通過少量調(diào)用拿到所需數(shù)據(jù);依賴系統(tǒng)出問題,還能正常工作
  • 緩存:1、瀏覽器緩存(時(shí)效性不強(qiáng)的數(shù)據(jù))2、APP客戶端緩存(大促前提前下發(fā)素材到客戶端)3、CDN緩存(把資源推送到離用戶最近的CDN節(jié)點(diǎn))4、接入層緩存(沒有CDN緩存可以考慮使用Nginx搭建一層接入層)5、應(yīng)用層緩存(在應(yīng)用所在機(jī)器上部署一組Redis,直接本機(jī)讀取數(shù)據(jù),多機(jī)之間主從同步數(shù)據(jù))6、分布式緩存(數(shù)據(jù)量太多,單機(jī)存儲不了,用分片機(jī)制分散流量到多臺要,或用分布式緩存實(shí)現(xiàn),常見的分片規(guī)則:一致性哈希算法)
  • 并發(fā)化

高可用原則

  • 降級:開關(guān)集中化管理,推送機(jī)制把開關(guān)推送到各個應(yīng)用;可降級的多級讀服務(wù);開關(guān)前置化;業(yè)務(wù)降級,高并發(fā)流量來襲,保障核心業(yè)務(wù),保證數(shù)據(jù)最終一致性即可,可同步改異步,優(yōu)先處理高優(yōu)先級數(shù)據(jù)
  • 限流:惡意請求只到Cache層;對于穿透到后端的流量考慮Nginx的limit模塊;對惡意IP可用Nginx deny屏蔽
  • 切流量:可用Nginx切換故障的應(yīng)用層
  • 可回滾:版本化(事務(wù)回滾、代碼庫回滾、部署版本回滾、數(shù)據(jù)版本回滾、靜態(tài)資源版本回滾)

業(yè)務(wù)設(shè)計(jì)原則

  • 防重設(shè)計(jì):防重key、防重表、記錄重復(fù)日志后續(xù)處理
  • 冪等設(shè)計(jì):業(yè)務(wù)系統(tǒng)重復(fù)消息消費(fèi)冪等處理;第三方支付異步回調(diào)冪等處理
  • 流程可定義
  • 狀態(tài)與狀態(tài)機(jī):狀態(tài)設(shè)計(jì)有狀態(tài)軌跡·,方便追溯;并發(fā)狀態(tài)修改問題;狀態(tài)變更有序問題;狀態(tài)變更消息先到后到問題
  • 系統(tǒng)后臺操作可反饋
  • 系統(tǒng)后臺審批化
  • 文檔和注釋
  • 備份:代碼庫、多版本、人員備份
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容