SMProxy, un pool de connexions à une base de données MySQL développé par Swoole basé sur le protocole MySQL.
子山
子山 2019-01-29 14:50:17
0
0
1379

SMProxy

Swoole MySQL Proxy

Un pool de connexions à la base de données MySQL développé par Swoole basé sur le protocole MySQL.

Principe

Stockez la connexion à la base de données en tant qu'objet dans la mémoire. Lorsque l'utilisateur doit accéder à la base de données, une connexion sera établie pour la première fois, au lieu d'établir une nouvelle connexion, un objet de connexion inactif établi sera établi. être retiré du pool de connexions. Après utilisation, l'utilisateur ne ferme pas la connexion, mais remet la connexion dans le pool de connexions pour la prochaine requête. L'établissement et la déconnexion des connexions sont gérés par le pool de connexions lui-même.

Dans le même temps, vous pouvez également contrôler le nombre initial de connexions dans le pool de connexions, les limites supérieure et inférieure des connexions, le nombre maximum d'utilisations de chaque connexion, le temps d'inactivité maximum, etc. en définissant les paramètres de le pool de connexions. Il peut également surveiller le nombre, l'utilisation, etc. des connexions à la base de données via son propre mécanisme de gestion. Si le nombre maximum de connexions est dépassé, la coroutine sera suspendue et la coroutine reprendra jusqu'à ce qu'une connexion soit fermée pour continuer l'opération.

Caractéristiques

Prend en charge la séparation en lecture-écriture. Prend en charge le pool de connexions de base de données, ce qui peut résoudre efficacement le goulot d'étranglement de connexion à la base de données causé par PHP. Prend en charge la norme SQL92 et utilise la planification de coroutines pour prendre en charge plusieurs connexions de base de données, plusieurs bases de données et plusieurs utilisateurs. est conforme au protocole natif MySQL, l'agent middleware général multilingue et multiplateforme prend en charge les transactions MySQL prend en charge HandshakeV10 La version du protocole est parfaitement compatible avec MySQL 4.1 - 8.0 et est compatible avec tous les principaux frameworks, améliorant de manière transparente les performances

Intention de conception originale.

PHP n'a pas de pool de connexions, donc lorsqu'il y a une concurrence élevée, la base de données sera pleine de connexions et les middlewares de base de données tels que Mycat auront du SQL inutilisable. Par exemple, l'ajout par lots n'est pas pris en charge et il est trop volumineux. . J'ai donc écrit moi-même ce middleware léger qui prend uniquement en charge le regroupement de connexions et la séparation lecture-écriture. Il utilise la planification de coroutines Swoole et le transfert de protocole HandshakeV10 pour rendre le programme plus stable. Il n'a pas besoin d'analyser tous les corps de packages SQL comme Mycat, ce qui augmente la complexité. .

Développement et discussion

Documents : https://smproxy.louislivi.com

Si vous êtes bloqué, veuillez visiter : https://smproxy.gitee.louislivi.com

Groupe QQ : 722124111 Tous les types sont les bienvenus. Issue et Pull Request.

Liste des contributeurs


子山
子山

répondre à tous(0)
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal