大規(guī)模業(yè)務(wù)技術(shù)架構(gòu)設(shè)計(jì)與戰(zhàn)術(shù)(架構(gòu)師必看)
上一篇:最近一些想法
戰(zhàn)略層設(shè)計(jì)原則
戰(zhàn)略層的設(shè)計(jì)原則就是:合適原則、簡單原則、演化原則。
1.1 合適原則
那么現(xiàn)實(shí)是,如果在設(shè)計(jì)過程中一味追求新技術(shù),往往失敗的可能性很高。
沒有那么多人,卻想干那么多活
沒有那么多積累,卻想一步登天
沒有最新,只要最合適
總結(jié)一下,合適原則就是適合優(yōu)于業(yè)界領(lǐng)先。
1.2 簡單原則
(1)結(jié)構(gòu)復(fù)雜性

圖 1
?(2)邏輯復(fù)雜性
1.3 演化原則
2.1 高并發(fā)原則
(1)無狀態(tài)
無狀態(tài)應(yīng)用,便于水平擴(kuò)展。
有狀態(tài)配置可通過配置中心實(shí)現(xiàn)無狀
(2)?拆分
系統(tǒng)維度:按照系統(tǒng)功能、業(yè)務(wù)拆分,比如購物車、結(jié)算、訂單等。 功能維度:對系統(tǒng)功能再做細(xì)粒度拆分。 讀寫維度:根據(jù)讀寫比例特征拆分;讀多,可考慮多級緩存;寫多,可考慮分庫分表。 AOP 維度:根據(jù)訪問特征,按照 AOP 進(jìn)行拆分. 模塊維度:對整體代碼結(jié)構(gòu)劃分 web、service、dao。 (3)服務(wù)化
服務(wù)化演進(jìn):進(jìn)程內(nèi)服務(wù) - 單機(jī)遠(yuǎn)程服務(wù) - 集群手動注冊服務(wù) - 自動注冊和發(fā)現(xiàn)服務(wù) - 服務(wù)的分組、隔離、路由 - 服務(wù)治理。 考慮服務(wù)分組、隔離、限流、黑白名單、超時(shí)、重試機(jī)制、路由、故障補(bǔ)償?shù)取?/span>
(4)消息隊(duì)列
目的:服務(wù)解耦(一對多消費(fèi))、異步處理、流量削峰緩沖等。 大流量緩沖:犧牲強(qiáng)一致性,保障最終一致性。 數(shù)據(jù)校對:解決異步消息機(jī)制下消息丟失問題。
(5)數(shù)據(jù)異構(gòu)
數(shù)據(jù)異構(gòu):通過消息隊(duì)列機(jī)制接受數(shù)據(jù)變更,原子化存儲。 數(shù)據(jù)閉環(huán):屏蔽多重?cái)?shù)據(jù)來源,將數(shù)據(jù)異構(gòu)存儲,形成閉環(huán)。
?(6)緩存
用戶層:DNS 緩存、瀏覽器 DNS 緩存、操作系統(tǒng) DNS 緩存、本地 DNS 服務(wù)商緩存、DNS 服務(wù)器緩存、客戶端緩存、瀏覽器緩存、APP 客戶端緩存。 代理層:CDN 緩存(一般基于 ATS、Varnish、Nginx、Squid 等構(gòu)建,邊緣節(jié)點(diǎn) - 二級節(jié)點(diǎn) - 中心節(jié)點(diǎn) - 源站) 接入層:Nginx 的 Proxy_cache 代理緩存,或者 Nginx+Lua+Redis 做業(yè)務(wù)數(shù)據(jù)緩存。 應(yīng)用層:頁面靜態(tài)化、業(yè)務(wù)數(shù)據(jù)緩存(Redis/Memcache/ 本地文件等)、消息隊(duì)列 數(shù)據(jù)層:NoSQL(Redis、Memcache、SSDB 等)
2.2 高可用原則
1. 降級
降級開關(guān)集中化管理:將開關(guān)配置信息推送到各個(gè)應(yīng)用。
可降級的多級讀服務(wù):如服務(wù)調(diào)用降級為只讀本地緩存。
開關(guān)前置化:如 Nginx+Lua 配置降級策略,引流流量;可基于此做灰度策略。
業(yè)務(wù)降級:高并發(fā)下,保證核心功能,次要功能可由同步改為異步策略或屏蔽功能。
2. 限流
3. 可回滾
發(fā)布版本失敗時(shí),可隨時(shí)快速回退到上一個(gè)穩(wěn)定版本。
防重設(shè)計(jì)
冪等設(shè)計(jì)
流程定義
狀態(tài)與狀態(tài)機(jī)
后臺系統(tǒng)操作可反饋
后臺系統(tǒng)審批化
文檔注釋
備份
3.1 邏輯架構(gòu)圖
功能需求技術(shù)架構(gòu)圖以產(chǎn)品架構(gòu)圖和應(yīng)用架構(gòu)圖為基礎(chǔ)。實(shí)現(xiàn)每個(gè)功能點(diǎn)需要使用什么技術(shù)、技術(shù)實(shí)現(xiàn)邏輯如何,就提現(xiàn)在技術(shù)架構(gòu)圖上。功能需要技術(shù)架構(gòu)圖繪制可以按照“整體 - 局部 - 整體”的思路實(shí)現(xiàn)。擴(kuò)展:架構(gòu)師必備技能:教你畫出一張合格的技術(shù)架構(gòu)圖
?1. 整體
首先可以按照應(yīng)用架構(gòu)圖的應(yīng)用分布得到應(yīng)用分布框架。如下:

圖 2
2. 局部

圖 3

圖 4

圖?5

圖 6
相關(guān)閱讀:2T架構(gòu)師學(xué)習(xí)資料干貨分享
全棧架構(gòu)社區(qū)交流群
?「全棧架構(gòu)社區(qū)」建立了讀者架構(gòu)師交流群,大家可以添加小編微信進(jìn)行加群。歡迎有想法、樂于分享的朋友們一起交流學(xué)習(xí)。
看完本文有收獲?請轉(zhuǎn)發(fā)分享給更多人
往期資源:
