SMProxy,让你的数据库操作快三倍!

回覆文章
yehlu
Site Admin
文章: 3245
註冊時間: 2004-04-15 17:20:21
來自: CodeCharge Support Engineer

SMProxy,让你的数据库操作快三倍!

文章 yehlu »

https://laravel-china.org/articles/19742
github : https://github.com/louislivi/smproxy

swoole mysql proxy
一个基于mysql协议,swoole 开发的mysql数据库连接池

原理
将数据库连接作为对象存储在内存中,当用户需要访问数据库时,首次会建立连接,后面并非建立一个新的连接,
而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,
以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。
同时,还可以通过设置连接池的参数来控制连接池中的
初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。
也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
超出最大连接数会采用协程挂起 等到有连接关闭再恢复协程继续操作
特性
支持读写分离
支持数据库连接池,能够有效解决PHP带来的数据库连接瓶颈
支持SQL92标准
遵守Mysql原生协议,跨语言,跨平台的通用中间件代理。
支持多个数据库连接,多个数据库,多个用户,灵活搭配。
支持mysql事物
采用协程调度
支持 HandshakeV10 协议版本
完美兼容mysql4.1 -5.7
兼容各大框架,无缝提升性能
设计初衷
php没有连接池,所以高并发时数据库会出现连接打满的情况,
mycat等数据库中间件会出现部分sql无法使用,例如不支持批量添加等,而且过于臃肿。
所以就自己编写了这个仅支持连接池和读写分离的轻量级中间件,
使用swoole协程调度HandshakeV10协议转发使程序更加稳定不用像mycat一样解析所有sql包体,增加复杂度。
环境
swoole 2.1+
php 7.0+
安装
下载的文件直接解压即可。

运行
需要给予 bin/server 执行权限

bin/server start : 运行服务
bin/server stop : 停止服务
bin/server restart : 重启服务
bin/server status : 查询服务运行状态
bin/server reload : 平滑重启
bin/server -h : 帮助
bin/server -v : 查看当前服务版本
SMProxy连接测试
测试SMProxy与测试mysql完全一致,mysql怎么连接,SMProxy就怎么连接。

推荐先采用命令行测试:

mysql -uroot -p123456 -P3366 -h127.0.0.1

也可采用工具连接。
回覆文章

回到「PHP」