Das PHP-Microservice-Framework ist „Micro Service Framework For PHP“. Es ist ein modernes PHP-Coroutine-Service-Framework, das unabhängig vom Camera360-Community-Server-Team entwickelt wurde. Es wird als msf oder php-msf bezeichnet Unternehmensanwendungs-Framework und hat den Test von Camera360 mit hoher Parallelität und großem Datenverkehr für Hunderte Millionen Benutzer bestanden. php-msf wird vom Camera360-Serverteam geleitet und kontinuierlich aktualisiert und gepflegt. Wir hoffen auch, dass weitere herausragende Swoole-Anwendungsentwickler beitreten. Die Kernidee des PHP-MSF-Designs besteht darin, innovative technische Mittel wie Coroutine, Asynchronität und Parallelität zu verwenden, um die Durchsatzfähigkeit des Systems auf einer einzelnen Maschine zu verbessern und die Gesamtserverkosten zu senken.
Framework-Handbuch (Gitbook): PHP-MSF-Entwicklungshandbuch
API-Dokument (Rawgit): Klassendokument
Beispiel-DEMO-Projekt: PHP-MSF DEMO
Helfen Sie mit, die Dokumentation zu verbessern: https://github.com/pinguo/php-msf-docs, bitte reichen Sie eine PR ein.
PHP-MSF#1-Gruppe (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
überprüft die laufende Umgebung, erstellt automatisch eine Projektvorlage basierend auf Ihrer benutzerdefinierten Konfiguration, installiert Abhängigkeiten mit Composer und startet den Dienst. Wenn auf cdn.rawgit.com
nicht zugegriffen werden kann, können Sie php-msf-docker direkt klonen oder herunterladen, installer.php
extrahieren und dann php installer.php
direkt ausführen
Wenn alles gut geht, sehen Sie am Ende des Laufs die folgende Ausgabe:
[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
Zugangstest:
$ > curl http://127.0.0.1:8990/Welcome
hello world !
Achten Sie auf den Port. Wenn er nicht 8990 ist, müssen Sie ihn ändern und dann auf den Test zugreifen.
├── 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 // 单元测试目录
Das Obige ist eine Standardanwendungsstruktur, die auf PHP-MSF basiert. Das Ein-Klick-Installationsprogramm installer.php generiert automatisch einige benutzerdefinierte Verzeichnisse entsprechend ihren Anforderungen automatisch geladen werden.
Debug-Modus
$ > ./server.php start
Daemon-Modus
$ > ./server.php start -d
Stoppen Sie den Dienst
$ > ./server.php stop
Dienst neu starten
$ > ./server.php restart
Wir haben ein Docker-Image erstellt, um Docker-Benutzern die schnelle Installation der Umgebung und die Ausführung des PHP-MSF-DEMO-Projekts zu erleichtern. Wenn Sie außerdem in Echtzeit eine Vorschau der Auswirkungen von Codeänderungen in der Entwicklungsumgebung anzeigen möchten, wird empfohlen, die Desktop-Version von Docker für Mac/Windows zu verwenden.
Wenn Sie Docker aktualisieren, werden die ursprünglichen Bilder und Container automatisch migriert. Bitte warten Sie geduldig und stellen Sie sicher, dass der Docker-Prozess nicht auf halbem Weg abgebrochen wird, da die erneute Migration sonst schwierig wird.
Docker-Registrierung (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
Wir konzentrieren uns auf den Aufbau eines stabilen und leistungsstarken, rein asynchronen Microservice-Frameworks auf Basis von HTTP als alternativen Technologie-Stack zu nginx+php-fpm, um die Microservices der Architektur zu realisieren, und Tcp/WebSocket Server wird als Plug-in unterstützt oder als anderes unabhängiges Open-Source-Projekt.
Für kleine Teams oder Geschäftssysteme empfehlen wir die Verwendung des herkömmlichen Nginx+php-fpm-Technologie-Stacks. Es gibt keinen Engpass in Bezug auf Kosten und Leistung und es besteht keine Notwendigkeit, einen neuen Technologie-Stack einzuführen.
Für große und mittelgroße Teams oder Geschäftssysteme, die sich in einer wichtigen Phase der Service Governance oder serviceorientierten Weiterentwicklung befinden, ist PHP-MSF eine der Optionen.
Wenn Sie bei großen PHP-Anwendungsclustern erheblich Serverkosten sparen und die Serviceleistung verbessern möchten, ist PHP-MSF eine der Optionen.
Für Aggregationsdienste wie große Website-Homepages ist PHP-MSF eine der Optionen, wenn Sie Daten über serverseitige Aggregationsinhalte integrieren möchten.
Die empfohlene Installationsmethode besteht darin, die Abhängigkeit pinguo/php-msf
hinzuzufügen, indem Sie das Projekt composer.json
{
"require" : {
"pinguo/php-msf" : " >=3.0.0 "
},
"minimum-stability" : " dev "
}
"minimum-stability": "dev"
muss hinzugefügt werden, da die Protokollkomponente von "monolog/monolog": "2.0.x-dev"
abhängt und monolog/monolog
kein 2.0-Release-Paket hat, wir aber haben Dies wurde bereits in der Produktionsumgebung durchgeführt. Überprüfen Sie die Stabilität.
php-msf hat dem hohen Datenverkehr und der hohen Parallelität des Camera360-Community-Dienstes standgehalten und seine Stabilität wurde vollständig überprüft. Stabilität ist das wichtigste Problem, für dessen Lösung wir viel Zeit und Energie aufwenden, und das wichtigste Prinzip der drei Prinzipien.
Die Verarbeitungskapazität einer einzelnen Maschine bei IO-intensiven Unternehmen wird um das Fünf- bis Zehnfache erhöht. Dies sind reale Daten, die in der Produktionsumgebung erfasst werden. Beispielsweise benötigt ein Aggregationsdienst in der Camera360-Community 40 Server, um dem Datenverkehr während der Spitzenlast standzuhalten. Nach der Rekonstruktion mit php-msf sind nur 4 Server mit der gleichen Konfiguration erforderlich, um dem gesamten Datenverkehr standzuhalten.
Aufgrund des komplexen Prozessmodells von Swoole, das in synchrones Blockieren und asynchrones Nichtblockieren unterteilt ist, können beim Ausführen derselben Codelogik die Aufrufmethode und die Übergabeparameter inkonsistent sein, was die Lernkosten direkt erhöht. Wir haben viel Arbeit geleistet, und der einzige Unterschied zwischen der Implementierung und dem traditionellen MVC-Framework besteht in der Hinzufügung des Schlüsselworts „yield“. Wir beziehen uns auf einige Codepraktiken des Yii2-Frameworks und gehen davon aus, dass wir nahtlos von der Yii2-Entwicklung wechseln können.
Die oben genannten drei Prinzipien bilden die Grundlage für die Abstimmung oder Zusammenführung von Code, wenn wir neue Features und Funktionen implementieren. Jegliche PR, die diese Prinzipien betrifft, wird ebenfalls abgelehnt.
Derzeit gibt es mehrere PHP-Open-Source-Projekte, die Coroutinen unterstützen, um sie zu implementieren. Kleinere Unterschiede in der Implementierung führen jedoch zu einer sehr unterschiedlichen Leistung in einer synchronen Code-Schreibmethode, also Coroutine Die Leistung des Schedulers muss hoch genug sein. Die Coroutine-Planungsleistung beträgt 80 % der nativen asynchronen Callback-Methode Der PHP-MSF-Coroutine-Scheduler. Der Planungs-QPS beträgt 8000.
Derzeit steckt PHP-MSF noch in den Kinderschuhen. Wir haben viel Zeit und Energie in die Lösung von Stabilitäts-, Hochleistungs- und Speicherproblemen investiert, weil wir glauben, dass der „Grundstein“ die grundlegendste Garantie für ein „Hochhaus“ ist Gebäude.“ Nur wenn das Fundament solide ist, Nur so kann das „Gebäude“ „höher“ gebaut werden. Version 3.0 ist die erste Version unseres Open Source und ein wichtiger Schritt für uns. Als nächstes werden wir uns auf die Verfeinerung des verteilten Microservices-Frameworks konzentrieren.
Da es außerdem auf dem PHP-residenten Prozess basiert und HTTP- oder TCP-Anfragen direkt analysiert, ist dies die wichtigste Unterstützung für den Dienst. Auf dieser Grundlage können wir viele Ideen umsetzen, die wir vorher nicht zu verwirklichen gewagt haben. Es gibt viel Raum für Fantasie.
PHP-MSF wurde ursprünglich auf Basis von SwooleDistributed-1.7.x entwickelt. In dieser Open-Source-Version verwendet der Verbindungspool hauptsächlich die SD-Implementierung. Da die Positionierung unserer Frameworks, die von ihnen gelösten Geschäftsszenarien, die Stabilitätsanforderungen und die Codierungsstile sehr unterschiedlich sind, haben wir uns entschieden, unabhängig voneinander Microservice-Frameworks zu entwickeln. Wählen Sie dasjenige aus, das zu Ihrem Unternehmen und Geschäft passt Das Framework ist das Wichtigste, und ich möchte White Cat dafür danken. Darüber hinaus bin ich bei der Entwicklung des PHP-MSF-Frameworks und der Produktionsumgebungsanwendungen auf viele zugrunde liegende Probleme gestoßen, die jedoch alle einzeln gelöst wurden Das Wichtigste, was diese Probleme lösen kann, ist das Open-Source-Projekt Swoole. Ich möchte dem Gründer Han Tianfeng-Rango meinen tiefen Dank für seine starke Unterstützung aussprechen.
GNU General Public License, Version 2 siehe https://www.gnu.org/licenses/gpl-2.0.html