1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/tmtbe-SwooleDistributed

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Вот перевод текста на русский язык:

SD3.X

Поддерживает swoole2, использует встроенные корутины, избавляет от yield.

Полноценная учебная документация: https://www.kancloud.cn/tmtbe/sd3

Богатые расширенные функции:

  • Инновационная модель Actor.

SwooleDistributed

В течение более двух лет итераций SD-фреймворк достиг значительных успехов. Благодаря постоянным итерациям и улучшениям, SD-фреймворк завоевал хорошую репутацию в сообществе, и многие новые фреймворки заимствуют его дизайн. SD-фреймворк также используется многими стартапами и крупными компаниями.

Что такое SD-фреймворк?

SD-фреймворк полностью называется SwooleDistributed и состоит из двух частей: Swoole и Distributed. Он основан на Swoole и может быть развёрнут распределённо. Благодаря эффективной среде разработки PHP, высокопроизводительному асинхронному сетевому движку Swoole, а также другим доступным расширениям и инструментам, SD-фреймворк предоставляет разработчикам стабильную, эффективную и мощную платформу для серверов приложений.

Начальные затраты

Честно говоря, по сравнению с популярными FPM-фреймворками, начальные затраты на SD относительно высоки, поскольку у него другая концепция дизайна и он работает в совершенно другой среде, отличной от традиционной PHP-FPM. Разработчикам, которые долгое время использовали LAMP (LANP), потребуется некоторое время для адаптации. Если разрабатываемое приложение простое и сложность системы низкая, то начать работу с SD будет довольно легко. Вы можете сразу же начать изучать SD, используя простые примеры и документацию. Однако если вы разрабатываете сложное приложение, вам потребуется постепенно изучить множество компонентов SD.

Какие мощные функции предлагает SD-фреймворк?

Здесь мы перечисляем различные функции и модули, предоставляемые SD:

  • Смешанные протоколы: SD поддерживает длительные соединения TCP, WebSocket и короткие соединения HTTP, а также UDP. С помощью конфигурации различных портов разработчики могут легко управлять различными протоколами и совместно использовать один и тот же код бизнес-логики. При необходимости можно использовать интеллектуальный маршрутизатор для изоляции кода. Длительные соединения могут настраивать различные протоколы передачи данных, такие как двоичные или текстовые протоколы. Через предоставляемый интерфейс упаковщика и распаковщика можно создавать различные протоколы и автоматически преобразовывать их между собой. Например, через широковещательную рассылку сообщения, которое будет передано различным клиентам, использующим разные протоколы, фреймворк автоматически преобразует протокол в соответствии с разными портами. Также можно отправлять push-уведомления всем клиентам с длинными соединениями через HTTP. Подобное взаимодействие с использованием смешанных протоколов в SD становится очень простым.
  • MVC и интеллектуальный маршрутизатор: архитектура фреймворка основана на MVC, где каждый уровень может быть дополнительно разделён на подслои. Разработчики могут разделить Controller на несколько уровней с помощью разных папок для управления, или разделить Model на бизнес-уровень и уровень данных в зависимости от собственной структуры системы. Интеллектуальный маршрутизатор обрабатывает данные после распаковки и отвечает за передачу этих данных на уровень Controller.
  • Промежуточное ПО: SD также предоставляет промежуточное ПО, которое может обрабатывать входящие данные, например, очищать аномальные данные, изменять данные, собирать статистику трафика, регистрировать события и т. д. Промежуточное ПО может быть настроено в нескольких экземплярах и привязано к определённым портам.
  • Пул объектов: большинство объектов в SD используют пул объектов, который способствует стабильности памяти системы, уменьшает количество операций GC и повышает эффективность работы системы. Пул объектов значительно улучшает стабильность системы, и разработчики также могут использовать эту технологию пула объектов для увеличения повторного использования объектов, уменьшения частоты GC и NEW, а также для снижения проблем с «колючками» и утечек памяти.
  • Асинхронные клиенты и пулы соединений: Mysql, Redis, HTTP-клиенты, TCP-клиенты и другие более сложные клиенты в SD являются асинхронными, что решает проблему параллелизма всей системы, но требует поддержания пулов соединений. SD предоставляет пулы соединений, избавляя разработчиков от необходимости управлять ими самостоятельно.
  • Корутины: асинхронные обратные вызовы решают проблему параллельной производительности, но приводят к беспорядку в бизнес-коде. SD предлагает корутины для решения этой проблемы. Используя ключевое слово yield, можно синхронизировать асинхронный код, избегая большого количества вложенных обратных вызовов в бизнес-логике. Корутины предоставляют полный набор функций, включая тайм-ауты, исключения, спящие режимы, многопутевые выборы и создание пользовательских корутин.
  • Запланированные задачи: задачи, выполняемые по расписанию.
  • Доставка задач: позволяет передавать ресурсоёмкие задачи в процесс Task.
  • Автоматическое обновление: можно включить функцию автоматического обновления фреймворка, чтобы изменения кода сразу же отражались.

Выше описаны некоторые базовые функции, часто используемые при разработке приложений. Теперь рассмотрим некоторые продвинутые функции:

  • Кластеры и микросервисы: фреймворк поддерживает кластерное развёртывание. После включения переключателя кластера можно развернуть сервер Consul. В SD все функции сообщений поддерживают кластерную среду. Через раскрытие API, мониторинг API и другие методы можно реализовать микросервисы, которые также предоставляют функции мониторинга здоровья, разрыва цепи, тайм-аута, балансировки нагрузки, перенаправления запросов и т.д. Кластеры используют равноправную сеть без промежуточных узлов, обеспечивая отсутствие единой точки отказа. Архитектура показана на рисунке ниже. image

  • Подписка и публикация: функция подписки и публикации в SD также поддерживает кластерные среды и строго следует стандартам MQTT. Это, пожалуй, самая совершенная и мощная функция подписки и публикации.

  • Распространение событий: это функция распространения событий между процессами и серверами, на которой основаны многие базовые компоненты SD.

  • Управление пользовательскими процессами и RPC между рабочими процессами: SD заново упаковывает пользовательские процессы, позволяя разработчикам запускать свои собственные пользовательские процессы. Пользовательские процессы могут быть асинхронными или синхронными и также поддерживают различные пулы соединений и корутины. Между пользовательскими и рабочими процессами возможен взаимный вызов RPC.

  • Планирование задач в кластере: через Consul можно настроить запланированные задачи, которые будут синхронизированы со всеми серверами кластера для выполнения. В кластере выбирается лидер, и задача выполняется только лидером.

  • Контекст: это общий контекст, используемый в процессе обработки сообщений, который является очень полезным и удобным.

Далее представлены специальные компоненты SD:

  • Асинхронный AMQP-клиент и распределённая система задач: AMQP — это асинхронный клиент, поддерживающий протокол AMQP, который может взаимодействовать с RabbitMQ. Распределённая система задач может быть создана с помощью компонентов SD.
  • Асинхронный MQTT-клиент: асинхронный MQTT-клиент может работать с MQTT-сервером.
  • Упрощённый MQTT-сервер: упрощённый MQTT-сервер с поддержкой QOS0 уровня, который можно развернуть в кластере.
  • Система мониторинга сервера: предоставляет систему мониторинга для кластера, которая также может отслеживать состояние отдельного сервера. Ниже приведены скриншоты:

Будущее SD-фреймворка

SD продолжает развиваться быстрыми темпами, и участие большего числа разработчиков поможет создать лучшее будущее.

Дополнительные ресурсы:

Официальный веб-сайт: http://sd.youwoxing.net Документация: http://docs.youwoxing.net Видеоинструкция: http://v.qq.com/boke/gplay/337c9b150064b5e5bcfe344f11a106c5_m0i000801b66cfv.html

Установка: Можно установить через composer. Автозагрузка должна указывать app и test.


Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

На основе микросервисной архитектуры swoole, распределённая система поддерживает TCP/HTTP/WS, отличается высокой эффективностью и широкими функциональными возможностями. Развернуть Свернуть
PHP и 6 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/tmtbe-SwooleDistributed.git
git@api.gitlife.ru:oschina-mirror/tmtbe-SwooleDistributed.git
oschina-mirror
tmtbe-SwooleDistributed
tmtbe-SwooleDistributed
v2