關於後端系統架構的思考隨筆

關於後端系統架構的思考隨筆

// 前端 - > 服務端(網關、具體服務) -> 數據層前端

我的看了一些書,寫了一些代碼,也作了一些架構工做。算法

系統架構能夠經過業務非業務兩個方面來結合起來考慮。數據庫

業務方面:

1. 系統具體提供什麼服務

  • 具體作哪些業務
  • 如何提供服務

2. 業務模塊劃分

  • 處理模塊與模塊之間的依賴:樹性結構、網狀結構
  • 每一個模塊是否作到了高內聚、低耦合

3. 外部入口(API或頁面)是如何設計的

  • 調用是否方便
  • 業務流程是否流暢

4. 業務可擴展性

  • 可否快速響應新增業務需求,儘可能對可能變更的數據作成
  • 良好的業務抽象

非業務方面:

1. 可用性:

1.1 服務可用性

  • 防單點:核心服務必須多機房部署,每一個機房至少保證有2臺服務。多個機房的多臺機器同時掛掉可能性過小了。
  • 系統監控:又分爲業務監控和服務器性能監控。業務監控主要是監控服務的TP9九、可用率、調用量等;服務器性能監控主要是對服務器心跳、CPU、內存、磁盤、網絡作監控,好比CPU利用率,內存利用率及是否吃SWAP,磁盤IO和剩餘空間,網絡丟包、鏈接數、重傳比率等。當發現問題,還有報警。
  • 服務治理:
  • 服務熔斷降級:Netflix的hystrix是一個能夠參考的實現,可是基於命令模式對業務代碼的入侵性比較強,因此根據具體業務特色,本身實現一些開關也是能知足需求的。
  • 過載保護:相似於信號量的,控制能同時提供服務的並行規模。限速器也能實現此功能。後端

    1.2 數據可用性

  • CAP原理
    • C:ZK、ETCD、CONSULE
    • A:多副本:一主多從架構
    • P:多機房,根據域名訪問,失效漂移
  • 災備
    • 數據離線備份、數據多寫

1.3 工程質量:

  • 代碼Review
  • 嚴謹的發包流程
    • 代碼合併
    • 正式版本和快照版本的區分
    • 灰度發佈
  • 測試質量
    • 單元測試
    • 自動化測試

2. 安全性

2.1 漏洞性質:

  • SQL 注入
  • Cookie僞造
  • XSS跨站
  • CC攻擊
  • DDOS攻擊

2.2 系統權限設計

  • 業務數據權限控制

2.3 數據加密

  • 對稱加密
  • 非對稱加密(加鹽)

3. 性能

3.1 集羣負載均衡

  • Nginx反向代理
  • DNS輪詢
  • RPC服務輪詢

3.2 MQ

  • 解耦
  • 異步
  • 削峯

3.3 緩存

  • 堆內緩存
  • 堆外緩存
  • 一致性哈希緩存
  • 分佈式主從架構緩存

3.4 代碼優化

  • 併發
  • 算法優化

3.5 吞吐性能

  • 大文件分割存儲

3.6 JVM層面

  • GC

3.7 數據庫層面

  • 索引
  • 分庫分表

4. 水平伸縮性

4.1 服務器無狀態

4.2 容器自動縮容擴容

相關文章
相關標籤/搜索