高并發(fā)原則
- 無狀態(tài):應用無狀態(tài)脓魏,配置文件有狀態(tài)
- 拆分:系統(tǒng)維度兰吟、功能維度、讀寫維度茂翔、AOP維度混蔼、模塊維度
- 服務化:進程內服務->單機遠程服務->集群手動注冊服務->自動注冊和發(fā)現(xiàn)服務->服務分組/隔離/路由->服務治理(限流/黑名單)
- 消息隊列:實現(xiàn)服務解耦、異步處理珊燎、流量削峰/緩沖(需要注意:處理生產消息失敗惭嚣、消息重復接收處理遵湖、生產重試;作為大流量緩沖晚吞,犧牲強一致性延旧,保證最終一致性;需要數(shù)據(jù)校對)
- 數(shù)據(jù)異構:異構數(shù)據(jù)形成閉環(huán)槽地,數(shù)據(jù)存儲到合適的存儲引擎迁沫;聚合數(shù)據(jù),使前端通過少量調用拿到所需數(shù)據(jù)捌蚊;依賴系統(tǒng)出問題集畅,還能正常工作
- 緩存:1、瀏覽器緩存(時效性不強的數(shù)據(jù))2缅糟、APP客戶端緩存(大促前提前下發(fā)素材到客戶端)3牡整、CDN緩存(把資源推送到離用戶最近的CDN節(jié)點)4、接入層緩存(沒有CDN緩存可以考慮使用Nginx搭建一層接入層)5溺拱、應用層緩存(在應用所在機器上部署一組Redis逃贝,直接本機讀取數(shù)據(jù),多機之間主從同步數(shù)據(jù))6迫摔、分布式緩存(數(shù)據(jù)量太多沐扳,單機存儲不了,用分片機制分散流量到多臺要句占,或用分布式緩存實現(xiàn)沪摄,常見的分片規(guī)則:一致性哈希算法)
- 并發(fā)化
高可用原則
- 降級:開關集中化管理,推送機制把開關推送到各個應用纱烘;可降級的多級讀服務杨拐;開關前置化;業(yè)務降級擂啥,高并發(fā)流量來襲哄陶,保障核心業(yè)務,保證數(shù)據(jù)最終一致性即可哺壶,可同步改異步屋吨,優(yōu)先處理高優(yōu)先級數(shù)據(jù)
- 限流:惡意請求只到Cache層;對于穿透到后端的流量考慮Nginx的limit模塊山宾;對惡意IP可用Nginx deny屏蔽
- 切流量:可用Nginx切換故障的應用層
- 可回滾:版本化(事務回滾至扰、代碼庫回滾、部署版本回滾资锰、數(shù)據(jù)版本回滾敢课、靜態(tài)資源版本回滾)
業(yè)務設計原則
- 防重設計:防重key、防重表、記錄重復日志后續(xù)處理
- 冪等設計:業(yè)務系統(tǒng)重復消息消費冪等處理直秆;第三方支付異步回調冪等處理
- 流程可定義
- 狀態(tài)與狀態(tài)機:狀態(tài)設計有狀態(tài)軌跡·胖翰,方便追溯;并發(fā)狀態(tài)修改問題切厘;狀態(tài)變更有序問題萨咳;狀態(tài)變更消息先到后到問題
- 系統(tǒng)后臺操作可反饋
- 系統(tǒng)后臺審批化
- 文檔和注釋
- 備份:代碼庫、多版本疫稿、人員備份