天天看點

ProxySQL源碼分析1-ProxySQL功能介紹

ProxySQL介紹

ProxySQL源碼分析1-ProxySQL功能介紹

上圖中展示了流量從用戶端發出 → ProxySQL進行處理轉發 → 後端處理 → ProxySQL的前端連接配接 → 傳回用戶端的基本流程。下面我們簡單梳理下ProxySQL的核心功能如下圖。

ProxySQL源碼分析1-ProxySQL功能介紹
  • 讀寫分離:可查詢走從庫,寫入走主庫
  • 簡單Sharding:ProxySQL的sharding是通過正則比對來實作的,對于需要拆分SQL以及合并SQL執行結果的不能支援,是以寫了簡單sharding
  • 連接配接池管理:正常功能,為了提高SQL執行效率。
  • 多路複用:主要優化點在後端mysql連接配接的複用,對比smart client,中間層不僅對前端建連也會對後端建連,可自行控制後端連接配接的複用邏輯。
  • 流量管控:kill連接配接和kill query;whitelist配置。
  • 高可用:底層mysql,如果從庫挂了,自動摘除流量;主庫挂了暫不處理。proxysql自身高可用,提供cluster的功能,cluster内部會自行同步中繼資料以及配置變更資訊。
  • 查詢緩存:對username+schema+query的key進行緩存,設定ttl過期,不适合寫完就查的場景,因為在資料在未過期之前可能是髒資料。
  • 動态配置:大部分的配置可動态變更,先load到runtime,在save到disk,通過cluster的功能同步到其他的節點。
  • 流量鏡像:同一份流量可以多出寫入,但是并不保證mirror的流量一定成功。
  • SQL改寫:在query rules中配置replace規則,可以對指定的SQL進行改寫。

如有錯誤,歡迎指正