首頁  >  問答  >  主體

SMProxy,一個基於 MySQL 協議,Swoole 開發的MySQL資料庫連線池。

SMProxy

Swoole MySQL Proxy

一個基於 MySQL 協議,Swoole 開發的MySQL資料庫連線池。

原理

將資料庫連接作為物件儲存在記憶體中,當使用者需要存取資料庫時,首次會建立連接,後面並非建立一個新的連接,而是從連接池中取出一個已建立的空閒連線物件。使用完畢後,使用者並非將連線關閉,而是將連線放回連線池中,以供下一個請求存取使用。而連結的建立、斷開都由連接池本身來管理。

同時,也可以透過設定連線池的參數來控制連線池中的初始連線數、連線的上下限數以及每個連線的最大使用次數、最大空閒時間等等。也可以透過其自身的管理機制來監視資料庫連線的數量、使用情況等。超出最大連線數會採用協程掛起,等到有連線關閉再恢復協程繼續操作。

特性

支援讀寫分離支援資料庫連接池,能夠有效解決PHP 帶來的資料庫連接瓶頸支援SQL92 標準採用協程調度支援多個資料庫連接,多個資料庫,多個用戶,靈活搭配遵守MySQL 原生協議,跨語言,跨平台的通用中間件代理支援MySQL 事務支援HandshakeV10 協議版本完美兼容MySQL4.1 - 8.0兼容各大框架,無縫提升性能

設計初衷

PHP 沒有連接池,所以高並發時資料庫會出現連接打滿的情況,Mycat 等資料庫中間件會出現部分SQL 無法使用,例如不支援批量添加等,而且過於臃腫。所以就自己編寫了這個僅支援連接池和讀寫分離的輕量級中間件,使用 Swoole 協程調度 HandshakeV10 協議轉發使程式更加穩定,不用像 Mycat 一樣解析所有 SQL 包體,增加複雜度。

開發與討論

文件:https://smproxy.louislivi.com

若被牆請造訪:https:/ /smproxy.gitee.louislivi.com

QQ群:722124111歡迎各類Issue 和Pull Request。

貢獻者清單


子山子山2111 天前1330

全部回覆(0)我來回復

無回覆
  • 取消回覆