Swoole MySQL Proxy
Swoole이 MySQL 프로토콜을 기반으로 개발한 MySQL 데이터베이스 연결 풀입니다.
Principle
데이터베이스 연결을 메모리에 개체로 저장합니다. 사용자가 데이터베이스에 액세스해야 할 때 나중에 새 연결을 설정하는 대신 설정된 유휴 연결 개체가 연결됩니다. 연결 풀에서 제거됩니다. 사용 후 사용자는 연결을 닫지 않고 다음 요청을 위해 연결을 다시 연결 풀에 넣습니다. 연결 설정 및 연결 해제는 연결 풀 자체에서 관리됩니다.
동시에 매개변수를 설정하여 연결 풀의 초기 연결 수, 연결의 상한 및 하한, 각 연결의 최대 사용 횟수, 최대 유휴 시간 등을 제어할 수도 있습니다. 연결 풀. 또한 자체 관리 메커니즘을 통해 데이터베이스 연결 수, 사용량 등을 모니터링할 수 있습니다. 최대 연결 수를 초과하면 코루틴이 일시 중지되고, 작업을 계속하기 위해 연결이 닫힐 때까지 코루틴이 재개됩니다.
기능
읽기-쓰기 분리를 지원합니다. 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를 환영합니다.
기고자 목록