Два года я писал микросервисы на Go, используя генераторы кода на основе Swagger. В результате получились довольно компактные и очень быстрые решения.
Сейчас я использую PHP, поэтому решил найти инструменты для решения тех же проблем в языковой экосистеме.
Я знаю и люблю Laravel и Symfony, но тащить их в проекты мне не хотелось — слишком много батареек, за которые приходится платить крутой кривой входа в проект и производительностью.
В результате появилось Комета — это современный PHP-фреймворк для разработки быстрых API с использованием разработок команд SlimPHP и Workerman. Десятки тысяч запросов в секунду на обычной виртуальной машине и задержка менее миллисекунды!
Чтобы не быть голословным, приведу результаты тестирования Comet и других популярных фреймворков.
Для более справедливого сравнения из сборки всех участников тестирования были удалены все тяжелые модули типа ORM.
Первый случай — имитация высоконагруженной нагрузки в виде тысяч конкурентных рабочих запросов к методу, возвращающему строку приветствия «Hello, World!» открытым текстом:
Для оценки минимальной задержки мы использовали вариант, при котором один клиент последовательно отправлял один запрос в одну и ту же конечную точку:
Как видно из результатов, особенности архитектуры Comet позволяют ей обрабатывать в десять раз больше запросов с минимальными задержками, чем традиционные фреймворки.
Давайте взглянем на код, чтобы получить представление о том, с чем вы столкнетесь при реальной разработке Comet:
Все довольно прозрачно: использование маршрутизатора и замыканий обеспечивает компактный код, более похожий на тот, к которому привыкли разработчики NodeJS/Express. Я выложил весь код на GitHub и планирую расширить возможности фреймворка: https://github.com/gotzmann/comet Буду рад комментариям, коммитам и, конечно же, использованию Комета в реальных проектах :) Теги: #php #rest api #comet #slimphp #workermanuse Comet\Comet; require_once __DIR__ .
'/vendor/autoload.php'; $app = new Comet(); $app->get('/hello', function ($request, $response) { $response ->getBody() ->write("Hello, Comet!"); return $response; }); $app->run();
-
Отключение Ненужных Модулей Asterisk
19 Oct, 24 -
Что Тестирует Hpe Mobile Center
19 Oct, 24 -
Курс Бизнес-Анализа В Киеве
19 Oct, 24 -
Робот-Бегун
19 Oct, 24 -
Iphone На Основе Нанотехнологий
19 Oct, 24 -
Грязный, Чистый, Стремящийся
19 Oct, 24