El marco de microservicio PHP es "Micro Service Framework para PHP". Es un marco de servicio de rutina PHP moderno desarrollado de forma independiente por el equipo del servidor comunitario Camera360 basado en Swoole. Se conoce como msf o php-msf. marco de aplicaciones empresariales y ha resistido Camera360 La prueba de alta concurrencia y gran tráfico para cientos de millones de usuarios. php-msf está dirigido por el equipo del servidor Camera360 y se actualizará y mantendrá continuamente. También esperamos que se unan más desarrolladores destacados de aplicaciones Swoole. La idea central de diseño de php-msf es utilizar medios técnicos innovadores de rutina, asíncrono y paralelismo para mejorar la capacidad de rendimiento de una sola máquina del sistema y reducir los costos generales del servidor.
Manual del marco (Gitbook): Manual de desarrollo PHP-MSF
Documento API (Rawgit): documento de clase
Ejemplo de proyecto DEMO: PHP-MSF DEMO
Ayude a mejorar la documentación: https://github.com/pinguo/php-msf-docs, envíe un PR.
Grupo 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
comprobará el entorno de ejecución, creará automáticamente una plantilla de proyecto basada en su configuración personalizada, instalará dependencias con Composer e iniciará el servicio. Si no se puede acceder cdn.rawgit.com
, puede clonar o descargar directamente php-msf-docker, extraer installer.php
y luego ejecutar php installer.php
directamente.
Si todo va bien, al final de la ejecución verá el siguiente resultado:
[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
Prueba de acceso:
$ > curl http://127.0.0.1:8990/Welcome
hello world !
Preste atención al puerto, si no es 8990, debe modificarlo y luego acceder a la prueba.
├── 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 // 单元测试目录
Lo anterior es una estructura de aplicación estándar basada en php-msf. El programa de instalación con un solo clic installer.php generará automáticamente un directorio. Los usuarios pueden crear algunos directorios personalizados según sus necesidades. cargarse automáticamente.
modo de depuración
$ > ./server.php start
modo demonio
$ > ./server.php start -d
detener el servicio
$ > ./server.php stop
Reiniciar servicio
$ > ./server.php restart
Hemos creado una imagen de Docker para facilitar a los usuarios de Docker la instalación rápida del entorno y la ejecución del proyecto DEMO PHP-MSF. Además, si desea obtener una vista previa del efecto de modificar el código en el entorno de desarrollo en tiempo real, se recomienda utilizar Docker para la versión de escritorio de Mac/Windows.
Si actualiza Docker, migrará automáticamente las imágenes y los contenedores originales. Espere pacientemente y asegúrese de no finalizar el proceso de Docker a la mitad; de lo contrario, será difícil realizar la migración nuevamente.
Registro Docker (nube de Alibaba):
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
Nos centramos en construir un marco de microservicio puramente asincrónico estable y de alto rendimiento basado en HTTP, como una pila de tecnología alternativa a nginx+php-fpm para realizar los microservicios de la arquitectura y el servidor Tcp/WebSocket será compatible como complemento; , o como otro proyecto independiente de código abierto.
Para equipos pequeños o sistemas empresariales, recomendamos utilizar la pila de tecnología tradicional nginx + php-fpm. No hay cuellos de botella en términos de costo y rendimiento, y no es necesario introducir una nueva pila de tecnología.
Para equipos o sistemas empresariales grandes y medianos que se encuentran en una etapa importante de gobernanza de servicios o evolución orientada a servicios, php-msf es una de las opciones.
Para grandes grupos de aplicaciones PHP, si desea ahorrar significativamente los costos del servidor y mejorar el rendimiento del servicio, php-msf es una de las opciones.
Para servicios de agregación, como páginas de inicio de sitios web grandes, si desea integrar datos a través de contenido de agregación del lado del servidor, php-msf es una de las opciones.
El método de instalación recomendado es agregar la dependencia pinguo/php-msf
editando el proyecto composer.json
{
"require" : {
"pinguo/php-msf" : " >=3.0.0 "
},
"minimum-stability" : " dev "
}
Se debe agregar "minimum-stability": "dev"
porque el componente de registro depende de "monolog/monolog": "2.0.x-dev"
y monolog/monolog
no tiene un paquete de versión 2.0, pero tenemos ya lo haya hecho en el entorno de producción. Verifique su estabilidad.
php-msf ha resistido el alto tráfico y la alta concurrencia del servicio comunitario Camera360 y su estabilidad se ha verificado por completo. La estabilidad es la cuestión más importante en la que dedicamos mucho tiempo y energía a resolver, y es el principio más importante de los tres principios.
La capacidad de procesamiento de una sola máquina de las empresas con uso intensivo de IO aumenta de 5 a 10 veces. Estos son datos reales obtenidos en el entorno de producción. Por ejemplo, un servicio de agregación en la comunidad Camera360 requiere 40 servidores para soportar el tráfico durante el pico de tráfico. Después de la reconstrucción con php-msf Sólo se necesitan 4 servidores con la misma configuración para soportar todo el tráfico.
Debido al complejo modelo de proceso de Swoole, que se divide en bloqueo sincrónico y sin bloqueo asincrónico, cuando se ejecuta la misma lógica de código, el método de llamada y los parámetros de paso pueden ser inconsistentes, lo que aumenta directamente el costo de aprendizaje. diferencias de nivel, hemos trabajado mucho y la única diferencia entre la implementación y el marco MVC tradicional es la adición de la palabra clave "rendimiento". Nos referimos a algunas prácticas de código del marco Yii2 y esperamos cambiar sin problemas del desarrollo de Yii2.
Los tres principios anteriores son la base para votar o fusionar código cuando implementamos nuevas características y funciones. Cualquier PR que afecte estos principios también será rechazado.
En la actualidad, existen varios proyectos PHP de código abierto en la comunidad que admiten corrutinas. La mayoría de ellos usan Generator+Yield para implementarlas. Sin embargo, diferencias sutiles en la implementación conducirán a un rendimiento muy diferente. en un método de escritura de código sincrónico, por lo que es una rutina. El rendimiento del programador debe ser lo suficientemente alto. El rendimiento de la programación de rutinas de php-msf es el 80% del método de devolución de llamada asincrónica nativa, es decir, una determinada API que utiliza el método de escritura de devolución de llamada asincrónica nativa tiene un QPS de 10,000. el programador de rutina php-msf El QPS de programación es 8000.
En la actualidad, php-msf todavía está en su infancia. Hemos dedicado mucho tiempo y energía a resolver problemas de estabilidad, alto rendimiento y memoria, porque creemos que la "piedra angular" es la garantía más básica para un "gran altura". edificio." Sólo si los cimientos son sólidos, sólo de esta manera el "edificio" podrá construirse "más alto". La versión 3.0 es la versión inicial de nuestro código abierto y un paso importante para nosotros. A continuación, nos centraremos en pulir el marco de microservicios distribuidos.
Además, debido a que se basa en el proceso residente de PHP y analiza directamente las solicitudes HTTP o TCP, este es el soporte más importante para el servicio. En base a esto, podemos hacer muchas ideas que antes no nos atrevíamos a realizar. hay mucho espacio para la imaginación.
php-msf se desarrolló originalmente en base a SwooleDistributed-1.7.x, y en esta versión de código abierto, el grupo de conexiones utiliza principalmente la implementación SD. Dado que el posicionamiento de nuestros marcos, los escenarios comerciales que resuelven, los requisitos de estabilidad y los estilos de codificación son todos muy diferentes, decidimos desarrollar de forma independiente marcos de microservicios. Cada marco tiene sus propias características y ventajas. Elija el que se adapte a su empresa y negocio. El marco es el más importante, y me gustaría agradecer a White Cat por esto. Además, durante el desarrollo del marco php-msf y las aplicaciones del entorno de producción, encontré muchos problemas subyacentes, pero todos se resolvieron uno por uno. Uno. Lo más importante que puede resolver estos problemas es el proyecto de código abierto Swoole. Me gustaría expresar mi profundo agradecimiento al fundador Han Tianfeng-Rango por su firme apoyo.
Licencia pública general GNU, versión 2, consulte https://www.gnu.org/licenses/gpl-2.0.html