PHP 마이크로서비스 프레임워크는 "Micro Service Framework For PHP"입니다. 이는 Swoole을 기반으로 Camera360 커뮤니티 서버 팀이 독립적으로 개발한 최신 PHP 코루틴 서비스 프레임워크입니다. 이는 Swoole의 엔지니어링 수준입니다. 엔터프라이즈 애플리케이션 프레임워크이며 수억 명의 사용자를 대상으로 한 높은 동시성 및 대규모 트래픽에 대한 Camera360 테스트를 견뎌냈습니다. php-msf는 Camera360 서버 팀이 주도하며 지속적으로 업데이트 및 유지 관리될 예정입니다. 또한 더 많은 뛰어난 Swoole 애플리케이션 개발자가 합류하기를 바랍니다. php-msf의 핵심 설계 아이디어는 코루틴, 비동기식 및 병렬성의 혁신적인 기술 수단을 사용하여 시스템의 단일 시스템 처리량 기능을 향상시키고 전체 서버 비용을 줄이는 것입니다.
프레임워크 매뉴얼(Gitbook): PHP-MSF 개발 매뉴얼
API 문서(Rawgit): 클래스 문서
샘플 데모 프로젝트: PHP-MSF DEMO
문서 개선에 도움을 주세요: https://github.com/pinguo/php-msf-docs, PR을 제출해주세요.
PHP-MSF#1 그룹(QQ): 614054288
$ > php -r " copy('https://raw.githubusercontent.com/pinguo/php-msf-docker/master/installer.php', 'installer.php');include('installer.php'); " && source ~ /.bashrc
installer.php
실행 환경을 확인하고, 사용자 정의 구성을 기반으로 프로젝트 템플릿을 자동으로 생성하고, Composer를 사용하여 종속성을 설치하고, 서비스를 시작합니다. cdn.rawgit.com
에 액세스할 수 없는 경우 php-msf-docker를 직접 복제하거나 다운로드하고 installer.php
추출한 다음 php installer.php
직접 실행할 수 있습니다.
모든 것이 순조롭게 진행되면 실행이 끝나면 다음과 같은 출력이 표시됩니다.
[2017-09-06 16:08:34] Run composer install success
[2017-09-06 16:08:34] Congratulations, all are installed successfully !
[2017-09-06 16:08:34] You can, visit http://127.0.0.1:8990/Welcome for test
_______ ____
________ / /_ ____ ____ ___ _____/ __/
___/ __ / __ / __ _ _____/ __ ` __ / ___/ /_
__/ /_/ / / / / /_/ /_____/ / / / / (__ ) __/
_/ .___/_/ /_/ .___/ /_/ /_/ /_/____/_/
/_/ /_/ Camera360 Open Source TM
[2017-09-06 16:08:34] Swoole Version: 1.9.18
[2017-09-06 16:08:34] PHP Version: 7.1.8
[2017-09-06 16:08:34] Application ENV: docker
[2017-09-06 16:08:34] Listen Addr: 0.0.0.0
[2017-09-06 16:08:34] Listen Port: 8990
액세스 테스트:
$ > curl http://127.0.0.1:8990/Welcome
hello world !
포트가 8990이 아닌지 주의해서 수정한 후 테스트에 접속해야 합니다.
├── app // PHP业务代码
│ ├── AppServer.php // 应用server类,可根据需求自定义
│ ├── Controllers // 控制器类目录
│ ├── Lib // 特殊逻辑处理类目录
│ ├── Models // Model类目录
│ ├── Route // 特殊路由规则类目录
│ ├── Tasks // Task类目录
│ └── Views // 视图文件目录
├── build.sh // 构建脚本(拉取docker镜像,启动容器)
├── checkstyle.sh // 代码检查脚本
├── composer.json // composer包依赖配置文件
├── config // 配置目录
├── server.php // server启动脚本
├── console.php // 命令行脚本
├── test // 单元测试目录
위는 php-msf를 기반으로 한 표준 응용 프로그램 구조입니다. 원클릭 설치 프로그램 installer.php는 자동으로 디렉토리를 생성합니다. 사용자는 psr4 표준을 충족하는 한 일부 사용자 정의 디렉토리를 생성할 수 있습니다. 자동으로 로드됩니다.
디버그 모드
$ > ./server.php start
데몬 모드
$ > ./server.php start -d
서비스 중지
$ > ./server.php stop
서비스 다시 시작
$ > ./server.php restart
Docker 사용자가 신속하게 환경을 설치하고 PHP-MSF DEMO 프로젝트를 실행할 수 있도록 Docker 이미지를 만들었습니다. 또한, 개발 환경에서 코드 수정에 따른 효과를 실시간으로 미리 확인하고 싶다면 Docker for Mac/Windows 데스크톱 버전을 사용하는 것이 좋습니다.
Docker를 업그레이드하면 원본 이미지와 컨테이너가 자동으로 마이그레이션됩니다. 인내심을 갖고 기다려 주시고 도중에 Docker 프로세스를 종료하지 않도록 주의하십시오. 그렇지 않으면 다시 마이그레이션하기가 어렵습니다.
도커 레지스트리(Alibaba Cloud):
docker pull registry.cn-hangzhou.aliyuncs.com/pinguo-ops/php-msf-docker:latest
docker pull registry-internal.cn-hangzhou.aliyuncs.com/pinguo-ops/php-msf-docker:latest
docker pull registry-vpc.cn-hangzhou.aliyuncs.com/pinguo-ops/php-msf-docker:latest
docker pull pinguoops/php-msf-docker
우리는 아키텍처의 마이크로서비스를 실현하기 위해 nginx+php-fpm의 대체 기술 스택으로 HTTP를 기반으로 하는 안정적인 고성능 순수 비동기식 마이크로서비스 프레임워크를 구축하는 데 중점을 두고 있으며 Tcp/WebSocket 서버는 플러그인으로 지원됩니다. , 또는 기타 독립적인 오픈 소스 프로젝트로.
소규모 팀이나 비즈니스 시스템의 경우 기존 nginx+php-fpm 기술 스택을 사용하는 것이 좋습니다. 비용 및 성능 측면에서 병목 현상이 없으며 새로운 기술 스택을 도입할 필요가 없습니다.
서비스 거버넌스 또는 서비스 지향 진화의 중요한 단계에 있는 대규모 및 중간 규모의 팀이나 비즈니스 시스템의 경우 php-msf가 옵션 중 하나입니다.
대규모 PHP 애플리케이션 클러스터의 경우 서버 비용을 대폭 절감하고 서비스 성능을 향상시키려는 경우 php-msf가 옵션 중 하나입니다.
대규모 웹사이트 홈페이지와 같은 집계 서비스의 경우, 서버측 집계 콘텐츠를 통해 데이터를 통합하려는 경우 php-msf도 옵션 중 하나입니다.
권장되는 설치 방법은 작곡가.json 프로젝트를 편집하여 종속성 pinguo/php-msf
추가하는 것입니다 composer.json
{
"require" : {
"pinguo/php-msf" : " >=3.0.0 "
},
"minimum-stability" : " dev "
}
로그 구성 요소는 "monolog/monolog": "2.0.x-dev"
에 의존하고 monolog/monolog
에는 2.0 릴리스 패키지가 없으므로 "minimum-stability": "dev"
구성 옵션을 추가해야 합니다. 프로덕션 환경에서는 이미 수행되었으므로 안정성을 확인하십시오.
php-msf는 Camera360 커뮤니티 서비스의 높은 트래픽과 높은 동시성을 견뎌내며 안정성이 충분히 검증되었습니다. 안정성은 우리가 해결하는데 많은 시간과 에너지를 들이는 가장 중요한 문제이며, 3원칙 중 가장 중요한 원칙입니다.
IO 집약적인 비즈니스의 단일 시스템 처리 용량은 5~10배 증가합니다. 이는 프로덕션 환경에서 얻은 실제 데이터입니다. 예를 들어 Camera360 커뮤니티의 집계 서비스는 피크 트래픽 동안 트래픽을 견디기 위해 40개의 서버가 필요합니다. php-msf로 재구성한 후 모든 트래픽을 견디려면 동일한 구성을 가진 서버 4개만 필요합니다.
동기식 차단과 비동기식 비차단으로 구분되는 Swoole의 복잡한 프로세스 모델로 인해 동일한 코드 로직을 실행할 때 호출 방법과 전달 매개변수가 일치하지 않을 수 있으며 이는 학습 비용을 직접적으로 증가시킵니다. 수준 차이로 인해 많은 작업이 수행되었으며 구현과 기존 MVC 프레임워크 간의 유일한 차이점은 "yield" 키워드가 추가되었다는 것입니다. 우리는 Yii2 프레임워크의 일부 코드 사례를 참조하며 Yii2 개발에서 원활하게 전환할 것으로 기대합니다.
위의 세 가지 원칙은 새로운 기능을 구현할 때 투표 또는 병합 코드의 기초가 됩니다. 이러한 원칙에 영향을 미치는 모든 PR도 거부됩니다.
현재 커뮤니티에는 코루틴을 지원하는 여러 PHP 오픈 소스 프로젝트가 있습니다. 대부분은 Generator+Yield를 사용하여 구현합니다. 그러나 구현의 미묘한 차이로 인해 코루틴이 비동기 논리를 실행할 수 있다는 점을 인식해야 합니다. 동기식 코드 작성 방법에서는 코루틴입니다. 스케줄러의 성능은 php-msf의 코루틴 스케줄링 성능이 네이티브 비동기 콜백 방식의 80% 수준입니다. 즉, 네이티브 비동기 콜백 작성 방식을 사용하는 특정 API의 QPS는 10,000입니다. php-msf 코루틴 스케줄러 스케줄링 QPS는 8000입니다.
현재 php-msf는 아직 초기 단계에 있으므로 안정성, 고성능, 메모리 문제를 해결하는 데 많은 시간과 에너지를 투자했습니다. 왜냐하면 "초석"이 "고층 건물"의 가장 기본적인 보장이라고 믿기 때문입니다. 건물." 기초가 튼튼해야, 그래야만 "건물"이 "더 높게" 세워질 수 있습니다. 버전 3.0은 오픈 소스의 초기 버전이며 우리에게 중요한 단계입니다. 다음으로 우리는 분산형 마이크로서비스 프레임워크를 개선하는 데 중점을 둘 것입니다.
또한, PHP 상주 프로세스를 기반으로 하며 HTTP 또는 TCP 요청을 직접 구문 분석하기 때문에 이는 서비스에 대한 가장 중요한 지원입니다. 이를 기반으로 이전에는 감히 실현하지 못했던 많은 아이디어를 얻을 수 있습니다. 상상의 여지가 많습니다.
php-msf는 원래 SwooleDistributed-1.7.x를 기반으로 개발되었으며, 이번 오픈소스 버전에서는 연결 풀이 주로 SD 구현을 사용합니다. 프레임워크의 포지셔닝, 해결하는 비즈니스 시나리오, 안정성 요구 사항 및 코딩 스타일이 모두 매우 다르기 때문에 각 프레임워크에는 고유한 특성과 장점이 있으므로 회사와 비즈니스에 적합한 프레임워크를 선택하기로 결정했습니다. 시나리오가 가장 중요하며 이에 대해 White Cat에게 감사의 말씀을 전하고 싶습니다. 또한 php-msf 프레임워크 및 프로덕션 환경 응용 프로그램을 개발하는 동안 많은 근본적인 문제가 발생했지만 모두 해결되었습니다. 하나, 이러한 문제를 해결할 수 있는 가장 중요한 것은 Swoole 오픈 소스 프로젝트입니다. 창립자 Han Tianfeng-Rango의 강력한 지원에 깊은 감사를 표하고 싶습니다.
GNU General Public License, 버전 2는 https://www.gnu.org/licenses/gpl-2.0.html을 참조하세요.