Платформа микросервисов PHP — это «Micro Service Framework For PHP». Это современная платформа сопрограммных служб PHP, независимо разработанная командой сервера сообщества Camera360 на основе Swoole. Она называется msf или php-msf. Это инженерный уровень 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
проверит запущенную среду, автоматически создаст шаблон проекта на основе вашей пользовательской конфигурации, установит зависимости с помощью композитора и запустит службу. Если 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, чтобы пользователи Docker могли быстро установить среду и запустить демонстрационный проект PHP-MSF. Кроме того, если вы хотите просмотреть эффект изменения кода в среде разработки в режиме реального времени, рекомендуется использовать настольную версию Docker для Mac/Windows.
Если вы обновите Docker, он автоматически перенесет исходные образы и контейнеры. Подождите терпеливо и не прерывайте процесс Docker на полпути, иначе будет сложно выполнить повторную миграцию.
Реестр Docker (облако 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
Мы сосредоточены на создании стабильной и высокопроизводительной чисто асинхронной микросервисной среды на основе HTTP в качестве альтернативного технологического стека nginx+php-fpm для реализации микросервисов архитектуры, а Tcp/WebSocket Server будет поддерживаться в качестве плагина; или как другой независимый проект с открытым исходным кодом.
Для небольших команд или бизнес-систем мы рекомендуем использовать традиционный стек технологий nginx+php-fpm. Здесь нет узких мест с точки зрения стоимости и производительности, и нет необходимости внедрять новый стек технологий.
Для больших и средних команд или бизнес-систем, которые находятся на важном этапе управления сервисами или сервис-ориентированной эволюции, php-msf является одним из вариантов.
Для больших кластеров PHP-приложений, если вы хотите значительно сэкономить затраты на сервер и повысить производительность сервиса, одним из вариантов является php-msf.
Для служб агрегации, таких как большие домашние страницы веб-сайтов, если вы хотите интегрировать данные через контент агрегации на стороне сервера, одним из вариантов является php-msf.
Рекомендуемый метод установки — добавить зависимость pinguo/php-msf
, отредактировав проект composer.json
{
"require" : {
"pinguo/php-msf" : " >=3.0.0 "
},
"minimum-stability" : " dev "
}
Необходимо добавить параметр конфигурации "minimum-stability": "dev"
, поскольку компонент журнала зависит от "monolog/monolog": "2.0.x-dev"
, а у monolog/monolog
нет пакета выпуска 2.0, но у нас есть это уже сделано в производственной среде. Проверьте его стабильность.
php-msf выдержал высокий трафик и высокую степень параллелизма общественной службы Camera360, и его стабильность была полностью проверена. Стабильность — это самая важная проблема, на решение которой мы тратим много времени и энергии, и это самый важный принцип из трех принципов.
Производительность одной машины в бизнесе с интенсивным вводом-выводом увеличивается в 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 и приложений производственной среды я столкнулся со многими основными проблемами, но все они были решены одним путем. one Самое главное, что может решить эти проблемы, — это проект с открытым исходным кодом Swoole. Я хотел бы выразить глубокую благодарность основателю Хану Тяньфэн-Ранго за его решительную поддержку.
Стандартная общественная лицензия GNU, версия 2, см. https://www.gnu.org/licenses/gpl-2.0.html.