찾다

 >  Q&A  >  본문

Swoole이 MySQL 프로토콜을 기반으로 개발한 MySQL 데이터베이스 연결 풀인 SMProxy입니다.

SMProxy

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를 환영합니다.

기고자 목록


子山子山2154일 전1378

모든 응답(0)나는 대답할 것이다

답장 없음
  • 취소회신하다