架構設計的幾個痛點 我總結出的架構原則和模式

2021-07-30 08:20:52 字數 1226 閱讀 1286

- 應用層用負載均衡伺服器,能夠監測伺服器的可用性,把不可能的踢出集群

- 服務層使用分布式呼叫框架dubbo

- 資料庫使用同步複製,實現資料冗餘。

- 還要考慮公升級發布引起的宕機

整體來說就是冗餘,故障轉移,使用分布式呼叫框架。

- 分級管理 0級,1級。更重要的服務,使用更好的裝置

- 超時設定 不超時會長時間占用伺服器資源。 可以設定超時策略,重試,還是轉移

- 非同步呼叫

- 服務降級 高併發時,可以

拒絕服務。 隨機拒絕部分請求

關閉功能。關閉部分不需要的功能。雙十一就是這樣幹的

- 冪等性設計 針對於重試機制。不會出現下兩個訂單的情況

資料庫高可用使用複製備份和故障轉移解決

快取的高可用作者認為應該使用集群分布式快取,單點失效只是小部分失效不會造成資料庫太大的壓力

拂去耐受性(可以線性伸縮),可用性(隨時可讀寫),一致性(所有應用訪問得到相同的資料)。無法同時滿足。

大型**可能放棄一定的一致性。把一致性細分:

- 強一致性 各個副本總是一致的

- 資料使用者一致 保證終端使用者訪問時,通過糾錯和校驗,確定乙個一致且正確的資料返回給使用者。

- 資料最終一致性 同一使用者連續訪問結果不同。 但是系統經過一段時間能夠自我恢復和修正。

應該做到使用者一致性

冷備:無法保證最終一致性和可用性(因為恢復時間太多)

熱備:- 非同步熱備 只寫主儲存區。 非同步執行緒同步寫從儲存區

- 同步熱備 同時寫主備連個儲存區。mysql支援半同步,保證至少有乙個備寫完。

讀寫分離也是基於資料備份

重新路由的過程

- 失效確認 心跳檢測和應用程式訪問失敗報告 一般訪問失敗了還是需要再次發一次心跳,防止誤判。

- 訪問轉移 重新路由,如果是對等的,直接路由就行了。但是如果是不對等的,就要根據路由演算法,重新算資料等等。

- 資料恢復 轉移之後修復宕機的服務,然後重新加入集群

使用者行為日誌 

使用者的作業系統,瀏覽器,ip位址,訪問路徑,頁面停留時間等,用於分析使用者行為,優化**設計,個性化營銷與推薦。 

伺服器效能監控 

系統load,記憶體,磁碟,io。等進行預警。 目前的開源工具是ganglia

報告, 設定閾值,進行告警

採集之後可以對系統效能評估,集群規模伸縮性**,進行風險預警,自動負載調整等。

主要用來做如下的功能: 系統報警,失效轉移,自動優雅降級

架構 筆記二 架構設計的目的

首先要明白的是,架構就是一種設計,一種設計思想。因為框架很重要,所以要做框架設計 正確的廢話 不是每個系統都要做框架設計嗎 知其然不知其所以然 公司流程要求系統開發過程中必須有架構設計 捨本逐末 為了高效能 高可用 可擴充套件,所以要做框架設計 畫蛇添足 架構也是為了應對軟體系統複雜度而提出的乙個解...

Web架構設計的幾個心得

一,不要過度設計 never over design 這是乙個常常被提及的話題,但是只要想想你的架構裡有多少功能是根本沒有用到,或者最後廢棄的,就能明白其重要性了,初涉架構設計,往往傾向於設計大而全的架構,希望設計出具有無比擴充套件性,能適應一 切需求的增長的架構。web開發領域是個非常動態的過程,...

java web系統架構設計需要解決的幾個問題

1.整體架構的選擇,是選擇重量級架構還是pojo輕量級架構。2.系統建模,是選擇過程式設計還是物件導向的設計。過程式設計指的是業務邏輯層只提供乙個service的介面和實現 物件導向設計指的是採用domain model模式,對整個系統進行整體的物件建模和設計。3.怎樣訪問資料庫,是選擇jdbc的方...