關於後端系統架構的思考隨筆
// 前端 - > 服務端(網關、具體服務) -> 數據層前端
我的看了一些書,寫了一些代碼,也作了一些架構工做。算法
系統架構能夠經過業務
和非業務
兩個方面來結合起來考慮。數據庫
業務方面:
1. 系統具體提供什麼服務
2. 業務模塊劃分
- 處理模塊與模塊之間的依賴:樹性結構、網狀結構
- 每一個模塊是否作到了高內聚、低耦合
3. 外部入口(API或頁面)是如何設計的
4. 業務可擴展性
- 可否快速響應新增業務需求,儘可能對可能變更的數據作成
- 良好的業務抽象
非業務方面:
1. 可用性:
1.1 服務可用性
1.3 工程質量:
2. 安全性
2.1 漏洞性質:
- SQL 注入
- Cookie僞造
- XSS跨站
- CC攻擊
- DDOS攻擊
2.2 系統權限設計
2.3 數據加密
3. 性能
3.1 集羣負載均衡
3.2 MQ
3.3 緩存
- 堆內緩存
- 堆外緩存
- 一致性哈希緩存
- 分佈式主從架構緩存
3.4 代碼優化
3.5 吞吐性能
3.6 JVM層面
3.7 數據庫層面
4. 水平伸縮性
4.1 服務器無狀態
4.2 容器自動縮容擴容