Каркас микросервиса PHP — это Micro Service Framework для PHP.

Микросервисы PHP сервер Docker

Микросервисная среда 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…