壹、善用UML工具
用例圖
用於需求分析階段,從用戶角度描述系統功能。
用例圖
靜態圖:類圖、對象圖、包圖
靜態圖
交互圖-時序圖(註重時間)
常用組合片段:選項(Opt)、循環(Loop)、並行(Par)、抉擇(Alt)、中斷(Break)
時序圖
交互圖-協作圖(註重對象)
協作圖
行為圖-狀態圖(註重狀態)
狀態圖
行為圖-活動圖(註重活動)
活動圖
實現圖-組件圖
組件圖
實現圖-部署圖
部署圖
二、遵從設計原則
設計模式基礎
單壹職責:壹個類只負責壹個職能;
裏氏轉換:在子類中不應重寫、重載父類的方法,子類要能替代父類;
接口隔離:不依賴不需要的接口,拆分大接口;
迪米特法則:壹個對象應該對其他對象保持最少的了解(低耦合);
開放封閉:對擴展開放,對修改關閉;
依賴倒置:抽象不應該依賴細節,細節應該依賴抽象,即針對接口編程,所有依賴關系都終止於抽象類或接口,不要對實現編程。
設計模式
創建型
工廠方法(FactoryMethod)、抽象工廠(AbstractFactory)、建造者(Builder)、單例(Singleton)、原型(Prototype)。
結構型
組合(Composite)、代理(Proxy)、外觀(Facade)、適配器(Adapter)、裝飾(Decorator)、橋接(Bridge)、享元(Flyweight)。
行為型
策略(Strategy)、模板方法(Temple
Method)、觀察者(Observer)、狀態(State)、備忘錄(Memento)、叠代器(Iterator)、命令(Command)、責任鏈(Chain
Of)、中介者(Mediator)、訪問者(Visitor)、解釋器(Interpreter)。
分布式設計原則
高可用
降級、限流(漏桶-平滑、令牌桶-可突發、環形隊列滑動窗口)、切流、熔斷、回流、可回流、超時、隔離(線程、讀寫、資源、熱點、爬蟲)、負載均衡。
高並發
無狀態、拆分、服務化、隊列、數據異構(異構->原子化->聚合->緩存)、緩存、並發化(Future、Callback、CompletableFuture)、池化。
業務設計
防重、冪等、規則引擎、狀態機、審計、審批。
分布式理論
CAP:壹致性、可用性、分區容錯性(三選二);
BASE:基本可用、軟狀態、最終壹致性;
ACID:原子性、壹致性、隔離性、持久性。
壹致性原則
XA協議:準備->提交(具有阻塞、協調者單點、腦裂等缺點);
XA三段協議:詢問->準備->提交;
TCC:try->confirm/try->cancel鎖定->確認/釋放;
最終壹致性:查詢、補償、定期校對、可靠消息、緩存壹致性。
超時處理
原則:誰超時誰處理,即接口調用超時,查詢補償;接口調用成功後,接口內部服務超時須自己補償。
兩狀態同步接口(OK/ERR):接口調用超時,調用方查詢補償;接口內部服務超時,內部快速失敗沖正;
三狀態同步接口(OK/ING/ERR):接口調用超時,調用方查詢補償;接口內部服務超時,返回處理中,內部查詢補償到成功,調用方輪詢;
異步接口:接口調用超時,調用方查詢補償;接口內部服務超時,內部查詢補償到成功,回調通知;接口回調通知超時,指數補償回調;
消息隊列:生產者發送超時,持久化可靠發送冪等消費;消費者消費超時,消息處理完偏移量增加。
緩存
緩存分片:客戶端分片(redic)、代理分片、集群分片(壹致性Hash);
緩存穿透:緩存空值、有效Key判斷;
緩存並發:分布式鎖、本地鎖、軟過期(業務過期);
緩存雪崩:錯峰失效。
三、畫好架構圖
41視圖
場景視圖:參與者與功能用例關系,用例圖表示;
邏輯視圖:功能拆解後的組件邊界及關系,組件圖和類圖表示;
物理視圖:軟件與硬件映射關系,部署圖表示;
處理流程圖:各組件流程與數據交互,時序圖和流程圖表示;
開發視圖:模塊劃分及包組成,包圖表示。
C4視圖
語境圖:梳理待建設系統用戶和高層次依賴,在中間畫出自己的系統,周圍是用戶與其它交互系統。
C4語境圖
容器圖:展開語境圖待建設系統,用框圖表示,可包含名稱、技術選擇、職責、框圖間交互,明確外部系統邊界。
C4容器圖
組件圖:展開某個容器,描述其內部模塊組件組成、關系。
C4組件圖
類圖:同UML靜態圖,此處不再展開。