Рубрики
Без рубрики

Настольная маркировка спокойных API

Ваши спокойные услуги готовы справиться с прогревом трафика? Один из способов выяснить …. Вы знаете, если … Теги с тестами, Python, Go, узел.

Ваши спокойные услуги готовы справиться с прогревом трафика? Один из способов выяснить ….

Знаете ли вы, если ваши спокойные услуги возьмут тепло, когда ваш сервис/сайт приобретает многократный импульс в трафике?

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

Задача Дейва – значит выяснить, как такие услуги, как порядок, оформление заказа и другие услуги, связанные с продуктами. В этой статье мы будем загружать Test Three Frameworks API API, написанные в Nodejs , Python & Голанг И ориентир будет использовать инструмент теста Apache.

Красота Micro-Services Различают ли разные команды могут писать услуги, поддерживаемые бизнес-логикой, в зависимости от языка программирования и экосистемы, способствующие их применению.

Наша Ригг –

Raspberry Pi 3 модель B

  1. 1,2 ГГц Quad-Core Cortex A53
  2. Whopping 1 ГБ ОЗУ
  3. 16 ГБ 10 SD Card.

Ну, вы могли бы запустить этот тест на любой совместимой системе. Тесты имеют смысл до тех пор, пока вы тестируете их на той же оборудованной среде.

Окружающая обстановка –

Server Machine [Mighty RPI3] –

Клиентский аппарат [мой ноутбук; -)] –

А также тест –

ab -k -c 350 -n 5000 http://:3000/

Приведенная выше команда отправляет 5K запросов в общей сложности с параллелизмом 350 запросов. Можно настроить эти номера в соответствии с требованиями.

Весь сеанс тестирования пробежал несколько минут, и у нас есть результаты на следующих скриншотах. Начнем с Fastapi, за которым следуют Expressjs, а затем волокно.

Fastapi (синхронизация) – Python

Fastapi в синхронных часах режима в ~ 178 запросов в секунду.

Fastapi (async) – python

Fastapi в асинхронных часах режима в ~ 228 запросов в секунду. Одно важное значение, чтобы указать, что мы работаем ASGI Server Fastapi (UVicorn) с настройками по умолчанию (1 работник). Если мы настроим подсчету работника на количество доступных процессоров, в производительности должен быть значительный прыжок.

Express JS (синхронизация) – Nodejs

Express JS в синхронном режиме выполняется 447 запросов в секунду, которые находятся в течение ~ 2x прыжка с Fastapi.

Экспресс JS (Async) – Nodejs

Аналогичная тенденция очевидна в асинхронном режиме, ~ 509 запросов в секунду. Опять же, мы должны отметить, что приложения fastapi и express js работают на одном работнике по умолчанию. В обоих рамочных рамки мы видим одноъядерную производительность.

Теперь наша звезда исполнитель – волокно (Голанг)

Волокно – 5k запросы

Волокно занимает менее секунды, чтобы обработать 5K запросы! Поскольку волокна Framework реализована в Голанг, параллелизм обрабатывается из коробки Что означает, что нет необходимости указывать синтаксис Async ждут в вашем коде.

Утилизация процессора на волокном (Голанг)

Теперь вы можете задаться вопросом, Golang использует все ядра CPU, но Fastapi и Expressjs используют только один CPU Core на экземпляр. Давайте посмотрим, как они выполняют при работе на всех сердечниках процессора.

Fastapi async с 4 работниками на 4 ядра

Expressjs async с 4 работниками на 4 ядра

Expressjs – 1.5x быстрее, чем fastapi. Однако волокно все еще ~ 7,5 и ~ в 11 раз быстрее, чем Expressjs и fastapi.

Что означает синхронизация и асинхн?

Дэйв также является шахматистом чемпионом, и ему бросили вызов, чтобы играть в шахматы, а не один разные игроки все сразу! У него существенно два подхода

Подход 1- Дейв решает играть один игрок за раз * И, если среднее время на игру составляет 10 минут (при условии, что другие игроки делают быстрые решения, такие как наш Champ!), Даже тогда это занимает 10 минут х 10 меньше всего 100 минут (то есть более 1,6 часа)

Подход 2 – Дэйв играет всех игроков одновременно! Как это возможно? Каждый раз, когда противник требует времени, чтобы подумать о своем следующем ходу, Дэйв движется на следующий игрок и следующий. Он продолжается до последнего хода последней оставшейся игры.

Теперь поменяйте сумасшедшее безумие парня, играющего в шахматы с несколькими людьми с RESTFLAY SERVICE Отказ Противники являются внешними БД или услугой/API, с помощью которых будет общаться спокойная служба. Да, вот как работает Sync & Async, и, поскольку мы имеем дело с компьютерами, а не людями, они всегда выполняют действия, как указаны!

Наши мысли –

Ну, это будет длинный и еще не может быть завершен. Давайте доберемся до этого?

Волокно (Голанг) – это путь впереди игры с точки зрения скорости и сырой производительности. Экспресс (Nodejs) ~ 1.5x быстрее, чем Fastapi. (Python) и, Эти рамки ~ 7,5 и ~ 11,35 раз медленнее, чем волокно (согласно многоядерным асинкому исполнению).

Тем не менее, Это не значит, что вы больше не используете каркасы на основе Python или Nodejs Отказ Факторы, такие как существующий состав программного обеспечения, разработчики и опыт работы в команде, будут играть значительную роль в принятии таких решений. Помните, что хорошие GO DEV трудно найти по сравнению с Python & JavaScript Devs (На момент написания этой статьи) просто потому, что эти языки и их экосистема были здесь дольше.

Несколько основных функций Fastapi приводит к тому, как автоматическая документация по модели данных, проверка JSON, сериализация и многое другое. Можно добиться того же результатов в двух других рамках, написав больше кода, поскольку они минималистичны по дизайну.

Мы широко использовали Fastapi. Абсолютная производительность становится актуальной, когда вы делаете вещи в масштабе. Эти ориентиры исключительно с точки зрения необработанной скорости/пропускной способности и не учитывают скорость развития, операции дБ ввода/вывода, сериализацию JSON и десериализацию и т. Д.

Общая рекомендация заключается в том, что вы выбираете Fastapi при работе с услугами на основе AI/ML или, ваша команда хорошо знает Python. И то же самое идет для NODEJS на основе рамочных решений. Здесь нет серебряной пули!

Если вы начинаете новый проект, и вы готовы дать Голанг попробовать. Волокно – отличное место для начала и, Есть много рамки на выбор

Мы надеемся, что это дало вам некоторую перспективу. Не стесняйтесь делиться комментариями и отзывами. Дайте нам знать, если мы сделаем еще одно пост, сравнивающее полнофункциональные рамки из Nodejs & Golang Eco-System, например Stestjs & Go-Busbalo.

Исходный код –

GitHub – Gochrolicles/Benchmark-Rest-Frameworks: Бенчакировка спокойных API, написанные в Python, Nodejs и Голанг

Если вы хотите проследить дальнейшее развитие в этом проекте, убедитесь, что вы даете репо Star!:-)

Эта статья была первоначально опубликована на Gochronicles.com тем же автор и был репост с разрешения.

Для последних обновлений и сообщений, Пожалуйста, подпишитесь на цепочки .

Оригинал: “https://dev.to/gochronicles/bench-marking-restful-apis-16id”