一 CAP理論:
Consistency 一致性 (顧名思義確保數據一致,不允許出現兩臺及以上服務上數據不一致)
Availability 可用性 (在集羣中一部分節點故障後,是否還能響應客戶端的讀寫請求)
Partition tolerance 容錯性 (允許出錯率的大小,允許出錯率大則程序可以正常執行不會報錯)
三角形定理,三者只可以滿足2者。不要去浪費時間去解決滿足三者 這個是不可能是實現的。從業務的角度上考慮滿足兩者就好。
二 BASE 理論:
基本可用: 當出現未知問題時 查詢由1s變成2s 降級頁面 (當前訪問量過多)
軟狀態: (狀態機)待支付、交易處理中、交易成功、交易失敗
最終數據一致性: 基於MQ生產、消費 。 如果出現數據丟失就需要人工維護
三 領域驅動設計中的概念
領域:專業的業務流程處理
領域建模:DDD (De-bug -DDrivne Development)
1 界限上下文
2 實體、值對象(context)、領域服務、聚合根、資源....
實體:對象的唯一標識
值對象:不需要唯一標識描述 類似上下文傳遞內容 他是個值對象
領域服務:不同的領域,每個領域提供對應的服務,可供外部調用。
集合根:可以理解爲全局中的唯一標識,實體是局部唯一標識,聚合根是全局唯一標識。
資源:提供了基礎設施的查詢,和聚合化服務,關心領域類的模型,是介於領域和數據庫層之間的分層。而不是封裝數據庫層。
分佈式高可用設計:
1 避免單點故障
a) 負載均衡技術(failover/選址/硬件負載)
b)熱備(Linux HA)
c)多機房(同城災備,異地災備)
2 應用的高可用設計
a) 故障監控(系統監控,CPU、內存),鏈路監控,日誌監控)自動預警
b)應用的容錯設計 (服務降級處理、限流處理)自我保護
c)數據量(數據分片、讀寫分離)
3 分佈式架構的可伸縮設計
a)垂直伸縮 單獨服務器上硬件擴容 加內存加存儲
b) 水平伸縮 增加服務器
#### 多補充一個CDN 解決不同地區的ip 發出的請求得到服務器負載響應的分發內容處理(內容分發)
CDN可以緩存靜態數據(html、css、img、js等靜態文件)
比如客戶端是在廣州發出的請求 CND可以解析DNS 進行裏負載 判斷裏用戶最近的CDN服務器將內容進行返回給客戶端。具體的使用可以多找找資料進行了解