負載均衡算法
- 輪詢
- 加權輪詢
- 隨機算法
- 最小鏈接數
- hash 根據客戶端ip計算出hash值,hash%2取模來決定分發目標
數據庫演變
1. 數據庫性能提高
1.1 方案1: 引入搜索引擎:算法
- 提升檢索速度
- 減輕讀數據庫的壓力
- lucence,solr,elk
- 索引構建:
基於原始數據構建索引
全量構建->第一次構建
增量構建->增量同步
非實時(異步/定時任務)、實時
1.2 方案2:緩存sql
- 緩存: 爲了下降低速設備和高速設備間的差別。
- Nosql存儲或其餘存儲方式
Nosql:hbase、mongoDB、Redis....
其餘緩存:瀏覽器緩存、應用緩存、db緩存、cpu緩存,文件存儲,etc
2.分佈式數據庫
2.1 事務的做用?
2.2 分佈式數據庫:
經過分庫分表實現數據庫拆分:
根據服務特性(業務量、類型etc)分別配置數據庫性能數據庫
應用的演變
傳統單應用的問題:瀏覽器
- 部署和維護困難
- 業務耦合度很高
- 性能瓶頸
測試緩存
1. 應用根據功能模塊拆分:
1.1 如:會員服務、交易服務、商品服務
RPC在分佈式中的做用?安全
1.2 服務分塊
優點:架構
- 專人維護專門服務
- 根據不一樣的吞吐量要求,作針對性的擴容
劣勢:負載均衡
高可用方案
1. 單點故障
1.1 多機房部署運維
監控
1. 鏈路監控異步
2.硬件監控
cpu、內架構存、磁盤
架構的發展過程
1. SOA-ESB
- 客戶端一、客戶端2....
- ESB:
服務的通訊、發現
協議轉化
安全
限流
- 服務端集羣
2. 微服務
註冊中心:eureka、zookeeper、consoul
3. 容器+k8s調度
4. serviceMesh(服務網格) sidecar解決了:服務熔斷、調用、發現,負載均衡