Высоконагруженный сервис. Мыло против Отдыха

8

У меня есть задача сделать API для Magento, используя реализацию SOAP или REST.

Я много читал об обеих службах, также имею опыт работы с ними. Но не в high-loaded projects.

Задача этого сервиса даст клиенту дополнительную информацию через SOAP или REST. Я настроил оба, и все в порядке.

НО, вопрос в том, что было бы лучше, если бы у меня было 100 клиентов, звонящих на мой сервис в секунду, 200, 500 и так далее?

Я знаю о накладных расходах SOAP, но также, если я использую REST, мне нужно также использовать oAuth, так что будет первым?

Есть опыт в этом?

Серджио
источник

Ответы:

11

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

SOAP против REST SOAP и REST - это два способа доступа к веб-сервисам. SOAP использует XML для своих запросов. REST опирается на HTTP-запросы через URL-адрес и поэтому является действительно легковесным по сравнению с SOAP.

(Dis-) Преимущества SOAP:

  • четко определенный веб-сервис
  • имеет предварительно созданные стандарты (SOAPv1, SOAPv2, SOAPv2 WS-I)
  • хорошо работает в корпоративных средах (благодаря стандартам)
  • некоторые инструменты могут быть автоматизированы с помощью WSDL
  • тяжелый вес по сравнению с REST

(Dis-) Преимущества ОТДЫХА:

  • проще в использовании
  • более гибкий
  • меньшая кривая обучения
  • эффективность / легкость по сравнению с SOAP
  • нет определенной структуры веб-сервиса (нет WSDL)

Magento SOAP API против API REST

Имейте в виду, что не все функции реализованы для REST API.

Я создал небольшой тестовый скрипт производительности, который выполняет не более 10x10 запросов на вход и завершение сеанса через SOAP API v1. Никаких конкретных действий не было выполнено. 1 запрос занял от 0,9 до 1,4 секунд с моим локальным веб-сервером.

Для сравнения с отдыхом: как только ваше приложение авторизовано (где вам нужно авторизовать ваше приложение один раз, нажав «авторизовать»), вам потребуется всего несколько миллисекунд, чтобы быть готовым выполнить ваш запрос после того, как вы получили токен и секрет: 2.0 -3.0 * 10 ^ -5 секунд локально.

Тестирование производительности

Для проведения теста производительности, который может окончательно ответить на ваш вопрос, вам необходимо определить требования.

Было бы интересно следующее:

  • Они входят в систему один раз и выполняют несколько действий, или каждый из них выполняет вход только для одного действия?
  • Какие запросы они выполняют? Добавление / обновление продуктов, размещение заказов, ...?
  • SOAP API v1, SOAP API v2 или SOAP v2 WSI против REST?

Ресурсы

Это может быть также интересно для вас:

Анна Фёлькл
источник
1
Отличный ответ! Я также сделал тест, и у меня есть ~ 0,4 с для создания только oAuth и вызова некоторого метода, который ничего не делает, просто для тестирования. Итак, накладные расходы велики, я написал REST-сервис в другой среде, но использую Magento Db для манипулирования данными. спасибо
Серхио