Микросервисная среда PHP, а именно «Micro Service Framework For PHP», представляет собойCamera360Серверная команда сообществаSwooleНезависимые исследования и разработка современного сервиса Coroutine PHP Framework, называемые MSF или PHP-MSF,SwooleИнфраструктура корпоративных приложений инженерного уровня выдержала испытание высокой степенью параллелизма и большим трафиком 36 миллиардов пользователей Camera. php-msf отCamera360Команда сервера ведет исследования и разработки, будет продолжать обновлять и поддерживать и надеется, что у нас будет еще больше превосходныхSwooleПрисоединяются разработчики практики применения. Основная идея дизайна php-msf заключается в использовании инновационных технических средств сопрограмм, асинхронных и параллельных для повышения пропускной способности системы на одной машине и снижения общей стоимости сервера.
Основные характеристики
- Урезанная версия фреймворка MVC.
- Емкость одномашиной, обрабатываемая импортами IO-интенсивных услуг, улучшена в 5-10 раз
- Постоянная память
- объединение объектов
- Поддержка пула соединений Redis, пула соединений MySQL (асинхронного и синхронного)
- Встроенный прокси-сервер Redis, поддержка распределенного кластера master-slave (автоматическое аварийное переключение и восстановление)
- Встроенный прокси-сервер MySQL, кластер master-slave (разделение чтения-записи, транзакция)
- Поддержка асинхронного и параллельного
- Реализация CITOUTINES на основе доходности PHP
- Встроенные клиенты сопрограмм, такие как http/redis/mysql/mongodb/task
- Чистый асинхронный HTTP-сервер
- RPC Server/Client
- Поддержка режима командной строки
- Таймеры, поддерживающие независимые процессы
- Поддержка независимого процесса настройки
- Поддержка статических файлов sendfile (необходимо настроить корневой каталог)
Требования к окружающей среде
- Linux, FreeBSD, MacOS (с проблемами совместимости)
- Ядро Linux версии 2.3.32 или выше (поддержка epoll)
- PHP-7.0 и выше (рекомендуется PHP-7.1 для производственной среды)
- gcc-4.4 и выше
- swoole-1.9.15и выше (Swoole-2.0 пока не поддерживается)
- hiredis-0.13.3
- yac
- phpredis
- composer
Документация
Руководство по фреймворку:Руководство по разработке PHP-MSF
API Document(Rawgit): документация класса
Пример ДЕМО проекта:PHP-MSF DEMO
Помогите улучшить документацию:GitHub.com/spell/PHP-…, отправьте 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, чтобы пользователи Docker могли быстро установить среду и запуститьPHP-MSF DEMOпроект. Кроме того, предполагается изменение кода в среде разработки для предварительного просмотра эффекта в режиме реального времени.Рекомендуется использовать Docker дляMac/Windowsнастольная версия.
Если вы обновите Docker, он автоматически перенесет исходные образы и контейнеры. Подождите терпеливо и не останавливайте процесс 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
- DockerHub (иностранный):
docker pull pinguoops/php-msf-docker
позиционирование кадра
We focus on building a stable high-performance pure asynchronous HTTP-based micro-service framework, as an alternative technological stack of NGINX + PHP-FPM, and TCP / Websocket Server will be supported as a plugin, or as other independent open sources. проект.
Для небольших команд или бизнес-систем мы рекомендуем использовать традиционный стек технологий nginx+php-fpm, здесь нет узких мест по стоимости и производительности, и нет необходимости внедрять новый стек технологий.
Для больших и средних команд или бизнес-систем, находящихся на важном этапе управления сервисами или сервисно-ориентированной эволюции, php-msf является одним из вариантов.
Для огромных кластеров приложений PHP, если вы хотите значительно сократить расходы на сервер и повысить производительность службы, php-msf является одним из вариантов.
Для служб агрегации, таких как домашняя страница крупного веб-сайта, если вы хотите интегрировать данные через контент агрегации на стороне сервера, php-msf является одним из вариантов.
Ручная установка
Рекомендуемый способ установки, путем редактирования проектаcomposer.json
Присоединяйтесь к зависимостиpinguo/php-msf
{
"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 заключается в добавлении ключевого слова «выход». Мы ссылаемся на некоторые методы работы с кодом фреймворка Yii2 и ожидаем беспрепятственного перехода от разработки Yii2.
Вышеупомянутые три принципа являются основой для голосования или слияния кода при добавлении новых функций и возможностей. Любой PR, затрагивающий эти принципы, также будет отклонен.
О сопрограммах
Существует несколько проектов сообщества PHP с открытым исходным кодом для поддержки сопрограмм, они в основном используются для достижения Generator + Yield, но нюансы достигнутой производительности приведут к очень разным результатам, мы должны признать, что сопрограмма может писать код синхронизированным образом при работе в асинхронном режиме. логика, поэтому производительность планировщика сопрограммы должна быть достаточно высокой. Производительность планирования сопрограммы php-msf составляла 80 % в режиме асинхронного обратного вызова, то есть API, написанном на родном асинхронном обратном вызове QPS 10000, планировщик сопрограммы php-msf планирует QPS 8000.
Почему каркас микровиссов?
В настоящее время php-msf все еще находится в зачаточном состоянии, и мы потратили много времени и сил на решение проблем стабильности, высокой производительности и памяти, потому что считаем, что «краеугольным камнем» является самая основная гарантия для "многоэтажка".Только тогда "здание" можно строить "выше". Версия 3.0 — это начальная версия нашего открытого исходного кода, что является для нас важным шагом.Далее мы сосредоточимся на полировке распределенного микросервисного фреймворка.
Кроме того, поскольку он основан на резидентном процессе PHP и напрямую парсит HTTP или TCP-запросы, это самая важная поддержка сервисизации.На основе этого мы можем реализовать множество идей, которые раньше не осмеливались реализовывать. Словом, простор для фантазии есть.
благодарный
php-msf изначально был основан наSwooleDistributed-1.7.xВ этой версии с открытым исходным кодом пул соединений в основном реализован в SD. В связи с большими различиями в позиционировании наших фреймворков, бизнес-сценариях, требованиях к стабильности и стилях кода, мы решили самостоятельно разрабатывать микросервисные фреймворки.Каждый фреймворк имеет свои особенности и преимущества.Выберите тот, который подходит для вашей компании и бизнес-сценария. рамки являются наиболее важными, но также спасибоБелая кошкаКроме того, в процессе исследования фреймворка PHP-MSF и продакшн-окружения возникает множество нижних проблем, но их можно решить поодиночке, и эти проблемы могут решить самое главное.SwooleОснователь проекта с открытым исходным кодомХан Тяньфэн-РангоСпасибо за вашу большую поддержку.
License
GNU General Public License, version 2 see woohoo.bowbow.org/licenses/stocks…