資料庫系列:大廠使用資料庫中介軟體解決什麼問題?

Brand發表於2024-03-05

相關文章

資料庫系列:MySQL慢查詢分析和效能最佳化
資料庫系列:MySQL索引最佳化總結(綜合版)
資料庫系列:高併發下的資料欄位變更
資料庫系列:覆蓋索引和規避回表
資料庫系列:資料庫高可用及無損擴容
資料庫系列:使用高區分度索引列提升效能
資料庫系列:字首索引和索引長度的取捨
資料庫系列:MySQL引擎MyISAM和InnoDB的比較
資料庫系列:InnoDB下實現高併發控制
資料庫系列:事務的4種隔離級別
資料庫系列:RR和RC下,快照讀的區別
資料庫系列:MySQL InnoDB鎖機制介紹
資料庫系列:MySQL不同操作分別用什麼鎖?
資料庫系列:業內主流MySQL資料中介軟體梳理

1 背景

網際網路大廠的業務場景,業務流量的規模都可以達到千萬甚至億級別,這時候簡單的資料層連線和呼叫無法承接業務規模的需求。
需要資料庫中介軟體來管理一些中間橋接工作,類似 連線池、負載均衡、故障隔離、監控預警等工作,大幅度提高效能和穩定性,應對大流量的衝擊。
下面我們具體來看看,我們使用資料庫中介軟體具體解決哪些存在痛點的業務場景。

2 資料庫中介軟體解決的問題和實現方案

2.1 連線池管理

2.1.1 業務場景

客戶端連線無限制,不可複用,不可隔離,業務間互相影響(如單個服務超載呼叫可能導致雪崩)

2.1.2 解決方案

歸口到Proxy統一管理,提供連線池、連線數限制、重試、超時斷開保護等能力。

image

如上,各業務線統一讀寫訪問入口,所以業務連線池不會有

db1.read:3306,db2.write.com:3306

而是統一隻有

db.all:3306

Service服務對db的訪問,統一到一個入口上來了,由中間層來對請求進行智慧路由、連線池管理、限流、重試、超時等工作。這種模式解決了業務直接管理資料實現層的問題。

2.2 讀寫分離機制

2.2.1 業務場景

需要為業務提供讀寫分離機制,而不是由業務花費精力去維護

2.2.2 解決方案

資料服務存在主從部署模式,業務在路有時Porxy自動區分讀寫,寫路由到主儲存服務(master),讀路由到從儲存服務(slave)
對業務是透明的,業務開發的同學無需關注讀寫的隔離。
image

這邊可以看到,Proxy會自動將讀和寫操作分流,業務開發人員無需關注即可。

2.3 負載均衡策略

2.3.1 業務場景

需要為資料庫分片提供負載均衡機制,如果多個讀庫甚至多個寫庫,需要一定的負載策略,類似VIP

2.3.2 解決方案

歸口到Proxy統一管理,提供負載均衡能力,包括但不限於:

  • 輪詢(Round Robin)
  • 來源 IP 雜湊(IP Hash)
  • 最少連線(Least Connection)
  • 加權輪詢(Weighted Round Robin)
  • 加權最少連線(Weighted Least Connection)
  • 隨機策略

image

2.4 資料庫分庫分表sharding

2.4.1 業務場景

資料量比較大的場景下,需提供業務分庫分表能力

2.4.2 解決方案

呼叫方遮蔽分表細節,跟單表操作一直。Proxy實現對分庫分表的核心細節,不同大部分中介軟體會有一些限制(如帶分表欄位,不支援跨庫join等)
image

從上面的圖中可以看到,Proxy在邏輯表和物理表中間起橋接作用,開發同學不需要知道太多細節,也不需要改變訪問的SQL指令碼。

2.5 故障切換

2.5.1 業務場景

主/備發生異常、當機等故障,需業務來處理故障切換

2.5.2 解決方案

遮蔽後端DB故障問題,自動故障切換

  1. master 故障,slave切換為master
    image

  2. slave 故障,多副本模式下進行異常副本的驅逐
    image

  3. slave 故障,單例項情況下讀寫都排程到master
    image

2.6 安全保障等

常見問題 說明 解決方案
許可權 1. 賬號許可權放太開,沒有最小化許可權;
2.機器遷移等都需手動申請許可權較麻煩
1. 透過user/pwds/ip等做許可權控制,最小化許可權。
2. 機器遷移自動許可權擴縮容。
安全 需業務自己處理sql注入,核心資料加密等問題 Proxy增加一層保護機制,包含sql注入,sql黑名單(如sleep/drop),資料加密等
日誌審計 MySQL 資料被修改了,無法確認被誰修改的 提供便捷的日誌審計,日誌流控和動態變更,方便定位查詢

2.7 監控和預警

2.7.1 業務場景

需業務根據自己需求搭建監控系統

2.7.2 解決方案

提供諸多監控和預警能力,包括但不限於:
連線數監測、慢查詢數統計、慢請求Sql採集、Sql語句統計、索引命中率分析、索引分析、DB負載、所屬主機效能分析
image

2.8 備份和恢復能力

2.8.1 業務場景

Proxy需要為業務提供備份能力,透過簡單配置即可,避免業務花費較大精力關注

2.8.2 解決方案

  • 提供多種類備份策略,一鍵配置
    • 全量備份
    • 增量備份
  • 備份模式
    • 定時備份
    • 手動備份
  • 透過管控平臺功能快速恢復資料
    • 指定範圍恢復,精確到表
    • 指定時間恢復,精確到秒

參考以下備份流程:
image

3 總結

本文介紹了網際網路場景資料庫中介軟體主要解決的業務難題,後續有時間我們詳細介紹下下業內評價較高的幾種資料庫中介軟體,如 ProxySQL、 DBProxy、TDDL 等。

相關文章