Sqs 2 60: Speroni SQS 2-60 – купить скважинный насос, сравнение цен интернет-магазинов: фото, характеристики, описание

alexxlab | 14.02.1987 | 0 | Разное

Содержание

Насос Waterstry SQS 2-60 погружной скважинный 0,75кВт

Насос Waterstry SQS 2-60 погружной скважинный 0,75кВт являются инновационным прорывом в серии 3” насосов. Благодаря своим размерам 3” (75мм) возможен монтаж в скважины не менее 76 мм, тем самым сокращая стоимость работ по бурению. Экономичны, просты и надежны в эксплуатации благодаря применению в их конструкции новейших технологий и материалов. Для комплектующих используется нержавеющая сталь марки AISI 304, AISI 316, что является гарантией долговечности и коррозионной стойкости данного оборудования. Рабочие колеса и диффузоры выполнены из НОРИЛА – высокопрочного полимерного материала. Встроенный обратный клапан, защитная сетка перед заборным патрубком дополняет ряд технических достоинств скважинных насосов SPERONI.

Применение

  • Для перекачивания чистой, химически неагрессивной воды из скважин
  • Системы бытового водоснабжения частных коттеджей и многоквартирных домов
  • Ирригация в садоводстве и сельском хозяйстве

Особенности и преимущества

  • Высокая надежность: корпус и другие части скважинного насоса изготовлены из нержавеющей стали
  • Высокий КПД насоса и электродвигателя
  • Экономичность
  • Износостойкость
  • Встроенный обратный клапан
  • Тепловая защита электродвигателей с напряжением 220 В

Технические характеристики

Вид насосапогружной
Тип насосавертикальная/горизонтальная
Модельный рядSQS
Подгруппа модельного рядаSQS 2
Максимальный расход2,8 м3
Максимальный напор79 м
Номинальный напор57 м
Номинальный расход 2 м3
Максимальное содержание песка50 г/м3
Класс защиты насоса и электродвигателяIP 68
Номинальная мощность0,75 кВт
Номинальный ток5,7 А
Количество пусков в час40
Температура перекачиваемой жидкостиот 0°C до 35°C
Максимальная рабочая температура35 °С
Размер присоединения1 1/4″
Максимальная глубина погружения200 м
Материал корпусанержавеющая сталь и композитные материалы
Материал рабочего колесатехнополимер
Диаметр75 мм
Вес12,8 кг
Объём упаковки0,009 м3
ПроизводствоКитай
Гарантия1 год

 

Производитель оставляет за собой право изменять страну производства, характеристики товара, его внешний вид и комплектность без предварительного уведомления продавца. Уточняйте информацию у менеджеров!

1. Способы доставки

  до 100 кг до 300 кг до 500 кг**
Москва 390 руб 500 руб 900 руб
МО, область 390 руб*  500 руб* 900 руб*
Самовывоз

Выдача товара до 20:00, Раменский район, Михайловская слобода, Старорязанская улица, д.4. (при оплате – резерв товара)

Пункт выдачи по адресу: Москва, Рязанский проспект, д.79 (пн-вс с 09:00 до 20:00)

* каждый 1 км за МКАД дополнительно 30 руб

** полная информация по доставке крупногабаритных грузов смотрите в разделе Доставка и оплата

2. Способы оплаты

      Банковской картой онлайн на сайте             ЮMoney (Я.Деньги)

     Наличными курьеру                                                    QIWI кошелек

     Сбербанк-онлайн                                                           WebMoney

     Безналичный расчет

Вы можете вернуть товар, если был обнаружен производственный брак, дефекты и прочие повреждения. Срок возврата осуществляется в течение 14 дней с даты покупки товара. 

Возврат товара осуществляется в полном соответствии с законодательством РФ, включая Закон о Правах Потребителя.

Подробная информация о возратах и обмене

Вопросы и ответы по Amazon SQS | Сервис очередей сообщений | AWS

Функциональные возможности и интерфейсы

Вопрос. Можно ли использовать Amazon SQS с другими сервисами AWS?

Да. Приложения можно сделать более гибкими и масштабируемыми, используя сервис Amazon SQS совместно с вычислительными сервисами, такими как Amazon EC2, Amazon Elastic Container Service (ECS) и AWS Lambda, а также с сервисами хранения и баз данных, такими как Amazon Simple Storage Service (Amazon S3) и Amazon DynamoDB.

Вопрос. Как взаимодействовать с сервисом Amazon SQS?

Доступ к Amazon SQS можно получить из Консоли управления AWS, с помощью которой проще создавать очереди Amazon SQS и отправлять сообщения.

Сервис Amazon SQS также поддерживает API веб-сервисов. Кроме того, он интегрирован с пакетами SDK AWS, что позволяет работать с необходимыми языками программирования.

Вопрос. Кто может выполнять операции с очередями сообщений?

Выполнять операции с очередью сообщений Amazon SQS может только владелец аккаунта AWS (или аккаунт AWS, которому владелец аккаунта делегировал соответствующие права).

Вопрос. Можно ли с сервисом Amazon SQS использовать Java Message Service (JMS)?

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

Amazon предоставляет библиотеку Amazon SQS Java Messaging Library, в которой реализована спецификация JMS 1.1 с использованием Amazon SQS в качестве поставщика JMS. Дополнительную информацию см. в разделе Использование JMS с Amazon SQS Руководства по Amazon SQS для разработчиков.

Вопрос. Как сервис Amazon SQS определяет сообщения?

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

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

Дополнительную информацию см. в разделе Идентификаторы очередей и сообщений Руководства по Amazon SQS для разработчиков.

Вопрос. Что происходит с необработанными сообщениями в Amazon SQS?

Amazon SQS позволяет использовать API или консоль для настройки очередей необрабатываемых сообщений, которые получают сообщения из других исходящих очередей. При настройке очереди необрабатываемых сообщений вам необходимо предоставить соответствующие разрешения на ее перезапуск с помощью политики RedriveAllowPolicy.

Политика RedriveAllowPolicy содержит параметры для предоставления разрешения на перезапуск очереди необрабатываемых сообщений. Она определяет, какие исходные очереди могут указывать очереди необрабатываемых сообщений в виде объекта JSON.

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

Дополнительную информацию см. в разделе Использование очередей необрабатываемых сообщений в руководстве разработчика Amazon SQS.

Вопрос. Что такое тайм-аут видимости?

Тайм-аут видимости – это период времени, в течение которого сервис Amazon SQS не дает другим компонентам, получающим сообщения, получать и обрабатывать сообщения. Дополнительную информацию см. в разделе Тайм-аут видимости

Руководства по Amazon SQS для разработчиков.

Вопрос. Поддерживает ли Amazon SQS метаданные сообщений?

Да. Сообщение Amazon SQS может содержать до 10 атрибутов метаданных. Атрибуты сообщения можно использовать для отделения тела сообщения от метаданных, описывающих его. Это позволяет обрабатывать и сохранять информацию быстрее и эффективнее, поскольку приложениям не нужно проверять сообщение целиком, чтобы понять, как его обработать.

Атрибуты сообщений Amazon SQS представляют собой триады «имя-тип-значение». Поддерживаются следующие типы данных: строка, бинарные данные и число (включая целое число, число с плавающей запятой и число двойной точности). Дополнительную информацию см. в разделе Использование атрибутов сообщений Amazon SQS Руководства по Amazon SQS для разработчиков.

Вопрос. Как определить время ожидания в очереди?

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

Вопрос. Каково обычное время задержки для Amazon SQS?

Порядок обычного времени задержки для запросов API SendMessage, ReceiveMessage и DeleteMessage измеряется в десятках или нескольких сотнях миллисекунд.

Вопрос. Какое значение имеет атрибут SenderId сообщения при анонимном доступе?

Когда идентификатор аккаунта AWS недоступен (например, при отправке сообщения анонимным пользователем), Amazon SQS указывает вместо него IP-адрес.

Вопрос. Что такое длинные опросы Amazon SQS?

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

Длинные опросы позволяют легко и без лишних затрат извлекать сообщения из очереди Amazon SQS, как только они станут доступны. Использование длинных опросов может уменьшить стоимость пользования сервисом SQS за счет сокращения числа пустых ответов. Дополнительную информацию см. в разделе Длинные опросы Amazon SQS Руководства по Amazon SQS для разработчиков.

Вопрос. Взимается ли дополнительная плата при использовании длинных опросов Amazon SQS?

Нет. Вызовы ReceiveMessage длинных опросов тарифицируются точно так же, как вызовы ReceiveMessage коротких опросов.

Вопрос. Когда следует использовать длинные опросы Amazon SQS, а когда короткие?

В большинстве случаев использовать длинные опросы Amazon SQS предпочтительнее, чем короткие. Длинные опросы позволяют получателям принимать сообщения из очереди по мере их поступления в очередь, уменьшая количество возвращенных пустых ответов ReceiveMessageResponse.

В большинстве примеров использования длинные опросы Amazon SQS позволяют повысить производительность и снизить затраты. Тем не менее, если приложение требует немедленного ответа на вызов ReceiveMessage, воспользоваться преимуществами длинных опросов, скорее всего, получится только после внесения некоторых изменений в приложение.

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

В таком приложении рекомендуется использовать один поток для обработки только одной очереди, что позволяет приложению пользоваться всеми преимуществами, предоставляемыми длинным опросом Amazon SQS.

Вопрос. Какое значение периода ожидания длинных опросов следует использовать?

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

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

Все AWS SDK по умолчанию работают с 20-секундным периодом ожидания длинных опросов. Если для доступа к Amazon SQS не используется AWS SDK или если для AWS SDK уже установлено меньшее время ожидания, возможно, потребуется изменить настройки клиента Amazon SQS, чтобы использовать более длинные опросы или использовать длинные опросы с меньшим временем ожидания.

Вопрос. Что такое AmazonSQSBufferedAsyncClient для Java?

AmazonSQSBufferedAsyncClient для Java обеспечивает реализацию интерфейса AmazonSQSAsyncClient и добавляет несколько важных возможностей.

  • Автоматическое пакетирование нескольких запросов SendMessage, DeleteMessage или ChangeMessageVisibility без внесения каких-либо необходимых изменений в приложение.
  • Предварительная загрузка сообщений в локальный буфер, которая позволяет приложению немедленно начать обработку сообщений из Amazon SQS, не дожидаясь извлечения сообщений.

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

Вопрос. Где можно загрузить клиент AmazonSQSBufferedAsyncClient для Java?

Клиент AmazonSQSBufferedAsyncClient можно загрузить в составе AWS SDK для Java.

Вопрос. Потребуется ли внесение изменений в приложение при использовании клиента AmazonSQSBufferedAsyncClient для Java?

Нет. Клиент AmazonSQSBufferedAsyncClient для Java реализован в виде быстрой замены существующего клиента AmazonSQSAsyncClient.

Если обновить приложение для использования последней версии AWS SDK и изменить устройство своего клиента, чтобы он использовал клиент AmazonSQSBufferedAsyncClient для Java вместо клиента AmazonSQSAsyncClient, то приложение получит дополнительные преимущества автоматического пакетирования и предварительной загрузки.

Вопрос. Как подписать очереди сообщений Amazon SQS для получения оповещений из тем Amazon SNS?

  1. В консоли Amazon SQS выберите очередь Amazon SQS.
  2. В разделе Queue Actions из раскрывающегося списка выбрать Subscribe Queue to SNS Topic.
  3. В диалоговом окне подписки выбрать тему из раскрывающегося списка Choose a Topic и нажать кнопку Subscribe.

Дополнительную информацию см. в разделе Подписка очереди на тему Amazon SNS Руководства по Amazon SQS для разработчиков.

Вопрос. Можно ли удалить все сообщения в очереди, не удаляя саму очередь?

Да. Все сообщения в очереди Amazon SQS можно удалить с помощью операции PurgeQueue.

При очищении очереди будут удалены все сообщения, которые были отправлены в нее ранее. Поскольку сама очередь сообщений и ее атрибуты остаются, перенастраивать очередь сообщений не требуется, можно продолжить ее использование.

Чтобы удалить только определенные сообщения, используйте операции DeleteMessage или DeleteMessageBatch.

Более подробные сведения см. в учебном пособии Удаление сообщений из очереди Amazon SQS.

Amazon SQS vs RabbitMQ / Хабр

Введение

Любой прогресс и оптимизация приветствуется кем угодно. Сегодня хотелось бы поговорить про прекрасную вещь, значительно облегчающую жизнь – очереди. Внедрение best practices в этом вопросе не только улучшают производительность приложения, но и успешно готовят ваше приложение к архитектуре «в стиле» Cloud Computing. Тем более, что не использовать уже готовые решения от провайдеров облачных технологий просто глупо.

В этой статье мы рассмотрим Amazon Web Services с точки зрения проектирования архитектуры средних и больших веб приложений.

Рассмотрим схему такого приложения:


Примерами такой организации могут быть различного рода агрегаторы: новости, курсы валют, котировки бирж и т.д.

External data providers генерируют поток сообщений, которые, проходя постобработку, сохраняются в базе.
Пользователи через web-tier делают выборку информации из базы по определённым критериям (фильтры, группировка, сортировка), а затем опциональная обработка выборок (различные статистические функции).

Amazon старается определить наиболее типовые компоненты приложений, затем автоматизирует и предоставляет компонент-сервис. Сейчас таких сервисов уже более двух десятков и с полным списком можно ознакомиться на сайте AWS: http://aws.amazon.com/products/. На хабре уже была статья с описанием ряда популярных сервисов: Популярно об Amazon Web Services. Привлекательно это в первую очередь тем, что отпадает необходимость в самостоятельной установке и конфигурации, а так же более высокой надёжностью и сдельной оплатой

И если использовать AWS, то схема проекта будет выглядеть так:

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

  1. Сколько можно сэкономить, используя AWS?
  2. Можно ли самостоятельно реализовать сервис с теми же свойствами, но за меньшие деньги?
  3. Где та грань, которая разделяет AWS от своего аналога?

Далее мы постараемся ответить на эти вопросы.

1. Обзор аналогов

Для сравнения будем рассматривать следующие компоненты:


  • Message-oriented middleware – RabbitMQ
  • Аналог вышеуказанного сервиса от AWS, который называется SQS

Сервис SQS оплачивается из расчета количества запросов к API + трафик

Рассмотрим каждый сервис подробнее.

1.1. SQS

Amazon SQS – это сервис позволяющий создавать и работать с очередями сообщений. Стандартный цикл работы с готовой очередью SQS следующий:


  1. Producer для отправки сообщения в очередь должен знать её URL. Затем, используя команду SendMessage, добавляет сообщение.
  2. Consumer получает сообщение используя команду ReceiveMessag.
  3. Как только сообщение будет получено, оно будет заблокировано для повторного получения на некоторое время.
  4. После успешной обработки сообщения Consumer использует команду DeleteMessage для удаления сообщения из очереди. Если во время обработки произошла ошибка или не была вызвана команда DeleteMessage, то по истечению таймаута сообщение вернётся обратно в очередь.

Таким образом, в среднем для отправки и обработки одного сообщения необходимо 3 вызова API.

Используя SQS, вы платите за количество вызовов API + трафик между регионами. Стоимость 10к вызовов составляет 0.01$, т.е. в среднем за 10к сообщений (х3 вызова API) вы платите 0.03$. Расценки в других регионах вы можете посмотреть тут.

Существует большое количество вариантов организации сервиса отправки сообщений:

  • RabbitMQ
  • ActiveMQ
  • ZMQ
  • OpenMQ
  • ejabbered (XMPP)

Каждый вариант имеет свои плюсы и минусы. Мы выберем RabbitMQ, как одну из самых популярных реализацию протокола AMQP.

1.2. RabbitMQ

1.2.1. Схема деплоймента

Сервер с установленным RabbitMQ и настройками по умолчанию выдаёт очень хорошую производительность. Но такой вариант деплоймента нас не устраивает, т.к. в случае падения этого узла мы можем получить сразу ряд проблем:

  1. Потеря важных данных в сообщениях;
  2. «Скапливание» информации на Producer-ах, что может привести к перегрузке Consumer-ов после восстановления работы очереди;
  3. Остановка работы всего приложения на время решения проблемы.

В тестировании будем использовать 2 узла в режиме active-active с репликацией очередей между узлами. В рамках RabbitMQ это называется mirrored queues.


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

Что бы создать такую очередь задаётся параметр «x-ha-policy» при декларировании, который указывает, где должны храниться копии очереди. Возможны 2 значения параметра

  • all: копии очереди будут хранится на всех узлах кластера. При добавлении нового узла в кластер, на нём будет создана копия;
  • nodes: копии будут созданы только на узлах, заданных параметром «x-ha-policy-params».

Детальнее о mirrored queues можно почитать тут:

http://www.rabbitmq.com/ha.html

.

1.2.2. Техника замера производительности

Ранее мы рассмотрели, как будет организовано тестовое окружение. Теперь давайте рассмотрим, что и как мы будем мерять.

Для всех измерений использовались m1.small инстансы (AWS).

Будем проводить ряд замеров:
Скорость отправки сообщений до определённого значения, потом скорость получения – тем самым мы проверим деградацию производительности с увеличением очереди.

1. Скорость отправки сообщений до определённого значения, потом скорость получения – тем самым мы проверим деградацию производительности с увеличением очереди.
2. Одновременная отправка и получение сообщений из одной очереди.
3. Одновременная отправка и получение сообщений из разных очередей.
4. Асимметричная нагрузка на очередь:

  • a. Отправляют в очередь в 10 раз больше потоков, чем принимают;
  • b. Получают из очереди в 10 раз больше потоков, чем отправляют.

5. Отправка и получение сообщений разных размеров:


  • a. 16 байт;
  • b. 1 килобайт;
  • c. 64 килобайта (max for SQS).

Все тесты кроме первого будут проводиться в 3 этапа:


  1. Прогрев 2 секунды;
  2. Прогон теста 15 секунд;
  3. Очистка очереди.

Подтверждение и получение сообщений (Message Acknowledgement)

Это свойство используется для подтверждения доставки и обработки сообщения. Существует два режима работы:

  • Auto acknowledge – сообщение считается успешно доставленным сразу после того, как оно будет отправлено получателю; в этом режиме для получения одного сообщения достаточно всего одного обращения к серверу.
  • Manual acknowledge – сообщение считается успешно доставленным после того, как получатель вызовет соответствующую команду. Этот режим позволяет обеспечить гарантированную обработку сообщения, если подтверждать доставку только после обработки. В этом режиме требуется два обращения к серверу.

В тесте выбран второй режим, т.к. он соответствует работе SQS, где обработка сообщения делается двумя командами: ReceiveMessage и DeleteMessage.

Batch processing

Что бы не тратить на каждом сообщении время для установки соединения, авторизации и прочего, RabbitMQ и SQS позволяют обрабатывать сообщения пакетами. Это доступно как для отправки, так и для получения сообщения. Т.к. пакетная обработка по умолчанию отключена и в RabbitMQ и в SQS, мы так же не будем её использовать для сравнения.

1.2.3. Результаты тестирования

Load-Unload Test

Сводные результаты:

Load-Unload Test msg/s Время запроса
avg, ms min, ms max, ms 90%, ms
SQS Consume 198 25 17 721 28
Produce 317 16 10 769 20
RabbitMQ Consume 1293 3 0 3716 3
Produce 1875 2 0 14785 0

Из таблицы видно, что SQS работает значительно стабильнее, чем RabbitMQ, в котором возможны провалы при отправке сообщения на 15 секунд! К сожалению, сразу причину такого поведения найти не удалось, а в тесте стараемся придерживаться стандартных настроек. При этом средняя скорость у RabbitMQ примерно в 6 раз выше, чем у SQS, а время выполнения запроса в несколько раз ниже.

Далее приведены графики с распределением средней скорости в зависимости от времени.

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

Parallel

Не менее интересен тест зависимости скорости работы от количества одновременно работающих потоков. Результаты теста SQS можно легко предугадать: поскольку работа идёт по HTTP протоколу и большую часть времени занимает установка соединения, то, предположительно, результаты должны расти с количеством потоков, что хорошо иллюстрирует следующая таблица:

SQS
msg/s
Threads
1 5 10 40
Produce 65 324 641 969
Consume 33 186 333 435

Среднее время одного запроса для отправки сообщения составляет 16 мс, а для получения 29 мс.

Так же видно, что для 1, 5 и 10 потоков зависимость линейная, но при увеличении до 40 потоков, средняя скорость возрастает на 50% для отправки и 30% для получения, но при этом значительно возрастает среднее время запроса: 43мс и 98мс соответственно.

Для RabbitMQ насыщение по скорости происходит значительно быстрее, уже при 5 потоках достигается максимум:

RabbitMQ Threads Threads
1 5 10 40
Produce speed, msg/s 3086 3157 3083 3200
latency, ms 0 1 3 11
Consume speed, msg/s 272 811 820 798
latency, ms 3 6 12 51

При тестировании обнаружилась особенность: если одновременно работают 1 поток на отправку и 1 поток на получение, то скорость получения сообщений падает практически до 0, при этом поток отправки показывает максимальную производительность. Проблема решается, если принудительно переключать контекст после каждой итерации теста, при этом падает пропускная способность отправки, но значительно снижается верхняя граница времени выполнения запроса. Из локальных тестов при 1 потоке (отправка/чтение): 11000/25 против 5000/1000.

Дополнительно провели тест для RabbitMQ с несколькими очередями для 5 потоков:

RabbitMQ Queues
1 5
Produce 3157 3489
Consume 811 880

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


Size

В этом тесте рассмотрим зависимость скорости от размера передаваемых данных.

И RabbitMQ и SQS показали ожидаемое ухудшение скорости отправки и получения с ростом размера сообщения. Помимо этого, очередь в RabbitMQ с ростом размера сообщения чаще «зависает» и не отвечает на запросы. Это косвенно подтверждает догадку о том, что это связанно с работой с жестким диском.

Сравнительные результаты скорости:

Сравнительные результаты времени запроса:

2. Расчёт стоимости и рекомендации

Из расчётной стоимости 0.08$ за один small instance в европейском регионе получаем стоимость в 0.16$ за RabbitMQ в конфигурации из двух узлов + стоимость трафика. В SQS стоимость отправки и получения 10000 сообщений составляет 0.03$. Получаем следующую зависимость:


60 тысяч сообщений в час – это примерно 17 сообщений в секунду, что значительно меньше, чем скорость, которую могут обеспечить SQS и RabbitMQ.

Таким образом, если вашему приложению требуется скорость в среднем меньше 17 сообщений в секунду, то предпочтительным будет использовать SQS. Если потребности приложения становятся выше, то стоит рассмотреть пути миграции на выделенные messaging сервера.

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

Ещё одной причиной использовать RabbitMQ может стать требование к latency запроса, которая на порядок ниже, чем у SQS.

2.1. Можно ли снизить стоимость RabbitMQ решения?

Есть два пути снижения стоимости:


  • Не использовать кластер.
  • Использовать micro instance.

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

Во втором случае micro instance могут быть урезаны ресурсы, если в течение некоторого времени утилизация ресурсов близка к 100%. Это может повлиять на работу очереди, когда используется persistence очереди.

3. Вывод

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

Спасибо!

Статья написана и адаптированна по материалам исследования Максима Брунера (minim), для EPAM Cloud Computing Competency Center

AWS Simple Queue Service (SQS) :: Apache Camel

(Common)

Базовый протокол, используемый для связи с SQS

HTTPS

протокол

amazonAWSHost (общий)

Имя хоста облака Amazon AWS.

Amazonsqsclient (Common)

Для использования Amazonsqs как клиент

Amazonsqs

AutoPreatequeue Common)

Установка автокреата очереди

True

Boolean

AutoDiscoverClient (Common)

Установка механизма AutodiscoverClient, если true, компонент будет выглядеть для экземпляра клиента в реестре автоматически, в противном случае проверка будет пропущена.

TRUE

TRUE

Boolean

Boolean

HeaderFilterTrategy (Common)

Для использования пользовательской заголовки для заголовков на заказ на / из верблюда.

строка

ProxyProtocol ( общий)

Для определения прокси-протокола при создании экземпляра клиента SQS.Есть 2 перечисления и ценность может быть одним из: http, https

https

QueueowneraWSACCOUNTID (Common WACKSACCCOUNTID (Common)

Укажите владелец очереди AWS Account, когда вы необходимо подключить очередь с другим владельцем учетной записи.

Строка

регион (общий)

Укажите регион очереди, который может использоваться с queueOwnerAWSAccount.При использовании этого параметра конфигурация будет ожидать название региона с заглавной буквы (например, AP_EAST_1). Вам нужно будет использовать имя Regions.EU_WEST_1.name()

String

attributeNames

(потребитель)

(Потребитель)

Позволяет соединить потребителя к обработчику ошибки маршрутизации верблюда, что означает, что любые произошли исключения, когда потребитель пытается забрать входящие сообщения или лайки, теперь будут обрабатываться как сообщение и обрабатываться обработчиком ошибок маршрутизации.По умолчанию потребитель будет использовать org.apache.camel.spi.ExceptionHandler для обработки исключений, которые будут регистрироваться на уровне WARN или ERROR и игнорироваться.

(Потребитель)

4

2

ServerSideenCryplateNeaderabled (Потребитель)

Стратегия установки messageDeduplicationId для сообщения. Может быть одним из следующих вариантов: useExchangeId, useContentBasedDeduplication. Для параметра useContentBasedDeduplication для сообщения не будет задан идентификатор messageDeduplicationId. Есть 2 перечисления, и значение может быть одним из: UseExChangeId, USECONTENTBASEDDEMANGEDULATIONALICION

4

Все остальные параметры, влияющие на queueUrl, игнорируются. Этот параметр предназначен для подключения к фиктивной реализации SQS в целях тестирования.

(очередь)

500

Список имен атрибутов для получения при потреблении. Несколько имен могут быть разделены запятой.

BridgeErrorhnhner (Потребитель)

False

Boolean

ConsurrentConsumers (Потребитель)

позволяет использовать несколько потоков для опроса очереди SQS для увеличения пропускной способности

int

(Потребитель)

Тайм-аут видимости по умолчанию (в секундах)

Integer

DELETEAFTREAD (Потребитель)

Удалить сообщение из SQS После того, как он был прочитан

TRUE

Boolean

Deletiffiltered (потребитель)

независимо от отправки в очередь SQS или нет, если обмен не проходит через фильтр.Если «false» и обмен не проходит через фильтр Camel вверх по маршруту, не отправляйте DeleteMessage.

TRUE

TRUE

BOOLEAN

EXTENDMESSAGEVisibility (Потребитель)

Если включено Затем запланированная справочная задача будет продолжать расширение видимости сообщений на SQS. Это нужно, если обработка сообщения занимает много времени. Если установлено значение true, необходимо установить значение defaultVisibilityTimeout.См. подробности в документации Amazon.

FALSE

Boolean

Boolean

KMSDatakeyReuseperiodseconds (Потребитель)

Продолжительность времени, в считанные секунды, для которых Amazon SQS может повторно использовать ключ данных для шифрования или расшифровки сообщений перед вызовом AWS KMS снова. Целое число, представляющее секунды, от 60 секунд (1 минута) до 86 400 секунд (24 часа). По умолчанию: 300 (5 минут).

Integer

kmsMasterKeyId (потребитель)

Идентификатор AWS-managed

String

maxMessagesPerPoll (потребитель)

Получает максимальное количество сообщений при каждом опросе в качестве ограничения. По умолчанию неограничен, но используйте 0 или отрицательное число, чтобы отключить его как неограниченный.

int

messageAttributeNames (потребитель)

Список имен атрибутов сообщения для получения при потреблении.Несколько имен могут быть разделены запятой.

String

sendEmptyMessageWhenIdle (потребитель)

False

Boolean

Определите, если шифрование на стороне сервера включена или не на очередь

False

Boolean

visibilityTimeout (потребитель)

Продолжительность (в секундах), в течение которой полученные сообщения скрыты от последующих запросов на получение после их получения запросом ReceiveMessage для установки в файле com.amazonaws.services.sqs.model.SetQueueAttributesRequest. Это имеет смысл только в том случае, если оно отличается от defaultVisibilityTimeout. Он постоянно изменяет атрибут тайм-аута видимости очереди.

Integer

waitTimeSeconds (потребитель)

Продолжительность в секундах (от 0 до 20)

Integer

exceptionHandler (потребитель)

Чтобы позволить потребителю использовать пользовательский ExceptionHandler.Обратите внимание, что если опция bridgeErrorHandler включена, то эта опция не используется. По умолчанию потребитель будет иметь дело с исключениями, которые будут зарегистрированы на уровне ПРЕДУПРЕЖДЕНИЯ или ОШИБКИ и проигнорированы.

ExceptionHandler

exchangePattern (потребитель)

Устанавливает шаблон обмена, когда потребитель создает обмен. Существует 3 перечисления и значение может быть одним из: InOnly, InOut, InOptionalOut

ExchangePattern

pollStrategy (consumer)

apache.camel.PollingConsumerPollingStrategy, позволяющий вам предоставить свою собственную реализацию для управления обработкой ошибок, обычно возникающих во время операции опроса до того, как Exchange был создан и маршрутизирован в Camel.

PollingConsumerPollStrategy

delaySeconds (производитель)

Число секунд для отправки сообщений.

Integer

lazyStartProducer (производитель)

Должен ли производитель запускаться первым сообщением lazy (на производителя).При ленивом запуске вы можете использовать это, чтобы разрешить запуск CamelContext и маршрутов в ситуациях, когда в противном случае производитель может выйти из строя во время запуска и вызвать сбой запуска маршрута. Откладывая этот запуск как ленивый, сбой запуска можно обработать во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что при обработке первого сообщения создание и запуск производителя может занять некоторое время и увеличить общее время обработки.

false

boolean

messageDeduplicationIdStrategy (производитель)

UseExChangeID

Строка

MessageGroupIdStrategy (производитель)

Только для очереди FIFO.Стратегия установки messageGroupId в сообщении. Может быть одним из следующих параметров: useConstant, useExchangeId, usePropertyValue. Для параметра usePropertyValue будет использоваться значение свойства CamelAwsMessageGroupId. Есть 3 перечисления и ценность может быть одним из: USECONSTANT, USEEXCHANGEID, USECPROPERTYVALUE

Эксплуатация (производитель)

Операция на случай, если пользователь не хотите отправить только сообщение.Есть 3 перечисления, и значение может быть одним из: SendBatchMessage, DeleteMessage, Livicqueues

SQSoPerations

DelayQueue (Advanced)

Определите, если вы хотите применить опцию Delayseconds в очередь или в отдельных сообщениях

false

boolean

queueUrl (дополнительно)

Строка

синхронный (расширенный)

Устанавливает, должна ли строго поддерживаться синхронная обработка для использования асинхронной обработки или Camel.

False

Boolean

ProxyHost (Proxy)

Для определения прокси-хоста при создании экземпляра SQS Client

String

ProxyPort (прокси)

для определения прокси-порта при создании клиента SQS

INTEGER

MaximummummummummumeSize (очередь)

Maximummummummessagesize (в байтах) Сообщение SQS может содержать для этой очереди.

Integer

messageRetentionPeriod (queue)

The messageRetentionPeriod (в секундах)

INTEGER

Политика для этой очереди

(очередь)

Если вы не укажете значение WaitTimeSeconds в запросе, для определения продолжительности ожидания используется атрибут очереди ReceiveMessageWaitTimeSeconds.

Целое

redrivePolicy (очередь)

Укажите политику, которая отправляет сообщение в очередь DeadLetter. См. подробности в документации Amazon.

String

backoffErrorThreshold (планировщик)

Количество последующих опросов об ошибках (failed).

int

backoffIdleThreshold (планировщик)

int

отсрочка Множитель (планировщик)

Чтобы позволить запланированному опросу потребителя отсрочку, еслиМножитель — это количество опросов, которые будут пропущены, прежде чем следующая фактическая попытка повторится. Если используется этот параметр, необходимо также настроить backoffIdleThreshold и/или backoffErrorThreshold.

int

задержка (планировщик)

Миллисекунды до следующего опроса.

50099

500

Greedy

(планировщик)

Если жадность включена, то планируйтеPollConsumer сразу же запустится, если предыдущий прогон опросал 1 или более сообщений.

false

логическое значение

initialDelay (планировщик)

5 миллисекунды до начала опроса.

трассировки

LogaggingLevel

объект

объект

Timeunit

AccessKey (Безопасность)

Amazon AWS Access Key

(Безопасность)

1000

long

RepeatCount (планировщик)

9000 максимальное количество пожаров. Поэтому, если вы установите значение 1, планировщик сработает только один раз. Если вы установите его на 5, он сработает только пять раз.Нулевое или отрицательное значение означает огонь навсегда.

0

0

длинные

runglogginglevel (планировщик)

Потребитель регистрирует начальную / полную линию журнала при его опросах. Эта опция позволяет вам настроить уровень ведения журнала для этого. Есть 6 enums, и ценность может быть одним из: следов, отладки, информация, предупреждение, ошибка, выкл.

(планировщик)

для настройки пользовательского/общего пула потоков для использования потребителем.По умолчанию каждый потребитель имеет свой собственный однопоточный пул потоков.

ScheduledExecutorService

планировщик (планировщик)

Для использования планировщика cron из camel-quartz или компонента camel-quartz. Использование величины или кварцевые для построенного в планировке

NOTE

(планировщик)

для настройки дополнительных свойств при использовании пользовательского планирования или любого из кварца, Планировщик на основе Spring.

Карта

startScheduler (планировщик)

Должен ли планировщик запускаться автоматически.

true

boolean

timeUnit (планировщик)

Есть 7 перечислений, и значение может быть одним из: наносекунды, микросекунды, миллисекунды, секунды, минуты, часы, дни

миллисекунд

UseFixedDeLay (планировщик)

Управляет использованием фиксированной задержки или фиксированной скорости.Дополнительные сведения см. в разделе ScheduledExecutorService в JDK.

True

Boolean

STRING

Секретный ключ Amazon AWS

Строка

SQS и Lambda: краткое руководство и способы работы в режимах отказа

Как SQS и Lambda работают вместе?

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

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

Очереди SQS можно настроить как источники событий для Lambda. После настройки функции Lambda автоматически запускаются, когда сообщения поступают в очередь SQS. Затем Lambda может автоматически увеличивать и уменьшать масштаб в зависимости от количества находящихся в очереди сообщений.

Это означает, что Lambda берет на себя ответственность и автоматизирует такие задачи, как опрос, чтение и удаление сообщений из очереди. Сообщения, которые успешно обработаны, удаляются, а неудачные сообщения перенаправляются в DLQ или возвращаются в очередь.Нет необходимости явно настраивать эти шаги внутри лямбда-функции.

Из этой статьи вы узнаете:

  • Как SQS и Lambda работают вместе?
  • SQS LAMBDA Преимущества и ограничения
  • Быстрое уравнение: настройка функции лямбда с триггерами SQS
  • квс лямбда: 4 сбой мод и как справиться с ними
    • NO DLQS
    • SQS Lambda Timeout
    • Частичные сбои
    • SQS Over-scaling
    • SQS Overpulling

Запуск функций Lambda с триггерами SQS может обеспечить следующие неоспоримые преимущества: дополненный пользовательским кодом, вы можете использовать одну очередь SQS для достижения того же поведения.

  • Снижение затрат — заменяя несколько служб одной, вы сокращаете текущие расходы на облако, а также время разработки, отладки и обслуживания.
  • Улучшенная отказоустойчивость — в предыдущих реализациях было сложно добиться повторных попыток. С SQS у вас есть встроенная возможность повторных попыток с возможностью использования очередей недоставленных сообщений (DLQ) для повышения отказоустойчивости.
  • Улучшенный пользовательский интерфейс — простота и повышенная устойчивость SQS с Lambda означают меньше производственных сбоев и более быструю отладку и восстановление при возникновении ошибок.
  • Также следует учитывать важные ограничения использования SQS с Lambda:

    • Время ожидания видимости — после завершения работы функции Lambda сообщения удаляются. Вы должны убедиться, что вы установили время ожидания видимости для очередей и сообщений, чтобы гарантировать, что все связанные задачи могут быть завершены. В противном случае сообщения могут снова появиться в очереди и вызвать другой вызов Lambda до того, как они будут обработаны.
    • Триггеры SQS имеют свою стоимость — Lambda долго опрашивает очереди SQS, а затем запускает функцию Lambda при появлении сообщений.Когда Lambda выполняет вызовы SQS API, они оплачиваются по обычной цене. Lambda также может добавлять дополнительные средства опроса по мере необходимости, что может потребовать дополнительных затрат.

    Краткое руководство: настройка лямбда-функции с помощью триггеров SQS

    Это сокращение от полного руководства Адриана Хорнсби. Он покажет вам, как настроить вашу первую функцию Lambda с триггером SQS.

    Шаг 1. Создайте очередь SQS

    В консоли AWS перейдите к Simple Queue Service, создайте новую очередь SQS и назовите ее TestMySQSLambda.Выберите тип Standard Queue и щелкните Quick-Create Queue .

    Шаг 2: Создайте роль IAM

    Перейдите к Amazon Identity and Access Management (IAM) и добавьте следующую политику в свою роль выполнения Lambda, назвав ее SQSLambda:

    Шаг 3: Создайте базовую Lambda function

    В консоли AWS перейдите к AWS Lambda и создайте новую функцию с именем MySQSTriggerTest. Отредактируйте функцию и добавьте базовый код функции, как показано ниже.

    В разделе Execution Role выберите роль, которую мы определили ранее, SQSLambda.

     

    Шаг 4. Выберите SQS в качестве триггера. Щелкните Добавить , а затем Сохранить .

    Источник: AWS.В раскрывающемся списке шаблона события выберите SQS. Оставьте шаблон события по умолчанию. Щелкните Создать > Проверить .

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

    SQS Lambda: 4 режима отказа и способы их устранения

    Поскольку Lambda добавила SQS в качестве источника событий, возникло ошибочное мнение, что SQS теперь является службой, основанной на push-уведомлениях.Это кажется верным с точки зрения вашей функции, потому что вам больше не нужно самостоятельно опрашивать SQS. Однако сам SQS не изменился — это по-прежнему сервис, основанный на опросе. Разница в том, что сервис Lambda управляет опросчиками (и платит за них!) от вашего имени.

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

    Электронная книга: изучите передовые методы мониторинга бессерверных приложений

    1. Отсутствие DLQ

    Самая распространенная ошибка при использовании SQS и Lambda — отсутствие настройки очереди недоставленных сообщений (DLQ). Это подвергнет вас проблеме подозрительного сообщения, когда недопустимое сообщение извлекается неоднократно и вызывает ошибку функции SQS. Эти сообщения невероятно сложно отследить и отладить, и именно поэтому в SQS были введены DLQ.

    Как правило, всегда следует настраивать DLQ для каждой очереди SQS .

    2. Тайм-аут видимости SQS Lambda

    Другой распространенной ошибкой является несогласование тайм-аута видимости SQS (который можно переопределить для каждого сообщения) с тайм-аутом Lambda. Тайм-аут видимости SQS всегда должен быть больше, чем тайм-аут функции Lambda .

    Даже если вы ожидаете, что сообщение будет обработано в течение нескольких секунд, многие пользователи AWS предоставят функциям SQS большее время ожидания «на всякий случай».Это понятно. Вы хотите дать функции наилучшие шансы на успех, даже если что-то иногда занимает больше времени. Базы данных и другие системы могут испытывать проблемы с производительностью под нагрузкой. Даже встроенные в AWS SDK повторные попытки и экспоненциальная отсрочка иногда могут быть проблематичными. Клиент DynamoDB для Node.js автоматически повторяет до 10 раз с максимальной задержкой 25,6 с между попытками (при последней попытке)!

    Однако время ожидания видимости по умолчанию для очереди SQS составляет 30 секунд. Если функция SQS имеет более высокое значение тайм-аута, сообщения в пути могут снова быть доступны и обрабатываться более одного раза.

    Но становится еще хуже.

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

    3. Частичные сбои

    Поскольку сообщения удаляются только после успешного завершения функции SQS, это означает, что пакеты всегда завершаются успешно или вместе.Это делает обработку частичных сбоев важным фактором при использовании SQS и Lambda.

    Вот несколько решений для обработки частичных сбоев:

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

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

    Лично я предпочитаю:

    • Выявлять ошибки при обработке каждого сообщения.
    • В конце партии проверьте наличие частичных сбоев.
      • Если нет, то ничего не делать. Поллер удалит сообщения из очереди для меня.
      • Если есть частичные сбои, то:
        • вызовите API DeleteMessage для успешных сообщений, чтобы вручную удалить их из очереди.
        • генерирует совокупную ошибку с информацией об идентификаторах сообщений, которые не удалось выполнить, и соответствующих им ошибках. Это оставляет ошибочные сообщения в очереди, чтобы их можно было снова обработать по истечении тайм-аута видимости.

    Электронная книга: изучите инструменты и методы сокращения MTTR в бессерверных приложениях

    4.SQS Over-scaling

    Lambda автоматически масштабирует количество опрашивающих устройств в зависимости от трафика. Это прекрасно, пока функция SQS не использует слишком много доступных одновременных исполнений в регионе. При нарушении регионального ограничения параллелизма любые вызовы Lambda могут быть заблокированы. Сюда входят функции, которые обслуживают пользовательские запросы API или обрабатывают платежи, что может негативно повлиять на взаимодействие с пользователем.

    Это нежелательный сценарий, поскольку функции SQS обычно являются менее важными частями системы.И все же они способны снимать другие более важные компоненты.

    К счастью, вы можете воспользоваться стратегиями смягчения последствий.

    Увеличьте предел параллелизма, чтобы дать вам больше возможностей для всплесков . Это, безусловно, самое простое решение, но оно не является пуленепробиваемым. Если всплеск в 1000 msg/s вас не остановит, то скачок в 2000 msg/s может. Тем не менее, ваши шансы на выживание значительно возросли без особых усилий.

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

    Реализовать контроль обратного давления перед очередью SQS . Если вы управляете издателем, ограничьте количество сообщений, которые вы публикуете в очереди.В противном случае рассмотрите возможность размещения шлюза API перед очередью SQS. Это позволяет использовать встроенную функцию ограничения скорости API Gateway. Если у вас несколько издателей, также рассмотрите возможность использования ключей API и планов использования. Они дают вам точный контроль над ограничениями скорости и квотами для каждого издателя. Недостатком является то, что вам придется ввести еще одну движущуюся часть и заплатить за использование шлюза API, и, возможно, придется написать код VTL! Если вы используете фреймворк Serverless, плагин serverless-apigateway-service-proxy сделает это проще простого.

    SQS Overpulling

    Чтобы лучше понять эту конкретную проблему, вы должны прочитать эту и эту статью Зака ​​Чарльза. Суть проблемы в том, что Lambda масштабирует количество опросчиков независимо от зарезервированного параллелизма в функции SQS.

    Если опросчиков больше, чем одновременных выполнений функции SQS, запросы на вызов (от опросчика к функции SQS) могут регулироваться. Сообщения в регулируемых запросах возвращаются в очередь по истечении времени ожидания видимости.Это может происходить с одними и теми же сообщениями несколько раз. Если у вас настроено DLQ (и вы должны это сделать), то в маловероятном случае сообщения могут оказаться там без какой-либо обработки.

    Отладка замедляет работу? Узнайте, как коррелированные журналы и трассировка виртуального стека могут помочь

    Заключение — SQS и Lambda

    Вот и все, краткое изложение распространенных режимов сбоя, которые следует учитывать при использовании SQS с Lambda. Это не исчерпывающий список, и если я пропустил некоторые распространенные режимы отказа, сообщите нам об этом в комментариях.

    Одна вещь, которую я хотел бы, чтобы вы усвоили из этого поста, заключается в том, что даже когда AWS автоматически масштабирует наши функции SQS и их опрашивающие устройства, мы все равно должны понимать потребности масштабируемости наших собственных систем. И в равной степени нам необходимо понимать сценарии сбоев и то, как мы можем наилучшим образом смягчить их влияние на наших пользователей. Поддержите свое любопытство и спросите: «Интересно, что произойдет с моей системой, если произойдет Х». Накладные расходы на проведение этих обучающих экспериментов в AWS очень малы, а вознаграждение огромно.

     

     

     

    Глава 32. Компонент AWS Simple Queue Service Red Hat Fuse 7.0

    Мы любим AWS Lambda, но его параллельная обработка с SQS — это глупо.

    Мы в Foxy.io большие фанаты бессерверных решений как в целом, так и фреймворка Serverless.com в частности. Мы используем внутренние бессерверные приложения для ряда целей, таких как автоматизация WAF (для блокировки тестировщиков карт), наша система веб-перехватчиков, наша новая интеграция электронной коммерции Help Scout + Foxy и функциональные возможности пользовательского кода доставки в Foxy.

    У нас также есть несколько бессерверных стартовых пакетов для Netlify и Cloudflare (например, для защищенного сайта на основе Cloudflare).

    Примечание. Нижеследующее немного носит технический характер и очень специфично для Lambda (бессерверная вычислительная платформа AWS) и SQS (система очередей AWS). Мы постараемся сделать его доступным, но это будет поездка.

    Очереди и пакетная обработка в бессерверных приложениях

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

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

    AWS Lambda можно настроить для извлечения данных из очереди SQS, так что это красивый и почти пуленепробиваемый способ обработки больших объемов данных.

    Масштабирование! 🚀🔜🌖

    Если ваши лямбды автономны и могут масштабироваться до Луны, прекрасно! По умолчанию Lambda одновременно извлекает из очереди до 5 пакетов событий. («Пакет» в этом контексте — это количество элементов, которые Lambda будет извлекать за один раз. Это настраивается, но для наших целей давайте просто предположим, что размер нашего пакета настроен на 1, поэтому Lambda просто извлечет 1 элемент из очереди в момент времени. время.) Из документов AWS о Lambda + SQS:

    Если сообщения все еще доступны, Lambda увеличивает количество процессов, считывающих пакеты, до 60 раз в минуту. Максимальное количество пакетов, которые могут быть обработаны одновременно сопоставлением источника событий, равно 1000.

    Отлично! Lambda масштабируется до 1000 одновременных исполнений!

    Но…

    Может быть, не так здорово. Что, если ваш код делает запрос к стороннему API, который реализует ограничение скорости? Lambda может масштабироваться для запуска вашего кода 10 000 раз за 5 минут, но третья сторона может автоматически блокировать или отклонять ваши запросы API.Что делать?

    Ограничения параллелизма в помощь? Нет 🙁

    К счастью, Lambda предлагает настройку параллелизма. Например, установите его на 2, и ваша лямбда будет выполнять только 2 одновременно. Если ваша функция занимает 1 с (скажем, есть множество внешних HTTP-запросов), это замедлит работу, поэтому она будет выполняться всего около 2 раз в секунду.

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

    Но… хотя настроить параллелизм легко, и он действительно не позволяет вашей Lambda выполнять больше, чем вы хотите, параметр параллелизма Lambda на самом деле не влияет на соединение SQS -> Lambda . Другими словами, даже если ваш параллелизм равен 2, Lambda все равно начнет с извлечения 5 пакетов из SQS за раз, , и все равно будет масштабироваться до 1000 .

    Таким образом, вашей Lambda разрешено запускать только 2 одновременно, но SQS пытается отправить сотни событий в Lambda, после чего почти все эти события будут возвращены SQS.И это проблема, потому что (как правило) вы настраиваете SQS так, чтобы каждый элемент выполнялся только несколько раз, прежде чем он сдастся и отправит этот элемент в очередь недоставленных писем (DLQ).

    Если у вас есть 10 000 элементов в очереди и вы обрабатываете только 2 за раз, очень вероятно, что у вас будет (много) элементов, которые никогда не попадут в Lambda, прежде чем они будут отправлены в DLQ. Решительно не хорошо.

    (Если это объяснение неясно, несколько других написали об этом, поэтому их сообщения могут помочь.)

    Что делать программисту?

    На наш взгляд, документация

    AWS рекомендует немного неуклюжий обходной путь. По сути, они предлагают установить значения повторных попыток SQS таким образом, чтобы элементы не попадали в DLQ до тех пор, пока не будет предпринято больше попыток, чем они, возможно, не смогут достичь Lambda. Это… вроде работает, но все же не идеально.

    Но есть способ сделать эту работу более правильной, если вы можете использовать очереди SQS FIFO (First In First Out). С обычной очередью SQS Lambda может извлекать элементы из очереди в любом порядке.Но с очередью FIFO порядок добавления элементов в очередь совпадает с порядком, в котором они будут отправлены в Lambda. Элемент должен быть обработан Lambda до отправки следующего элемента .

    При таком подходе в основном применяется параллелизм 1, потому что вторая лямбда не может получить второй элемент в очереди, пока первый элемент не будет выполнен. Один за раз.

    Это позволяет нам снизить параллелизм до 1, но что, если вам нужно нечто большее, чем 1, но меньше 1000? FIFO допускает параметр «идентификатор группы», который почти похож на мини-очередь в основной очереди.Порядок FIFO для каждого идентификатора группы является отдельным, поэтому (фактически) каждый идентификатор группы увеличивает параллелизм на 1.

    Идентификатор группы может быть любым, поэтому вы можете сделать его случайным целым числом от 1 до максимального параллелизма, настроенного вашей Lambda. Хотите, чтобы Lambda работала с максимальным параллелизмом 10? Установите его на 10, и когда вы загружаете элементы в очередь, просто назначьте каждому элементу случайный идентификатор группы от 1 до 10.

    Ключевым моментом здесь является то, что базовая система опроса SQS+Lambda (которая, как вы помните, игнорирует конфигурацию параллелизма) не будет пытаться отправлять элементы из очереди в Lambda сверх того, что вы настроили.

    На самом деле это задокументировано в сообщении блога AWS об очередях FIFO, но из документации это неясно (а блог немного запутан и немного скрывает информацию, по крайней мере, в том, что касается этого конкретного решения для параллелизма).

    Однако важно отметить, что если вы используете идентификаторы групп для чего-то другого (т. е. не случайного числа, а, например, идентификатора учетной записи), а количество идентификаторов групп превышает предел параллелизма, вы по-прежнему будет блокировать сообщения SQS .Просто кое-что, что нужно иметь в виду.

    Как мы это используем в Foxy

    Мы столкнулись с этим при перестройке нашей системы обработки ежедневных подписок. Поскольку обработка подписки может зависеть от многих третьих сторон (таких как Avalara для налогов, Square или PayPal для оплаты, FedEx для доставки, интеграции для защиты от мошенничества, пользовательского веб-хука для предоплаты и т. д.), а также потому, что наша подписка обработка на самом деле происходит в «серверной» системе, которая масштабируется медленнее, мы не можем просто отправлять тысячу запросов в секунду на каждую из этих внешних систем.Установив идентификаторы групп в сообщениях SQS, мы можем ограничить параллелизм Lambda, не беспокоясь о том, что сообщения будут преждевременно отправляться в DLQ.

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

    Вот оно! Если вы используете Lambda, запускаемую SQS, и вам нужно ограничить параллелизм Lambda, вы, вероятно, захотите использовать очередь FIFO.Если вы дочитали до этого места, мы надеемся, что наш опыт поможет вам получить желаемый параллелизм Lambda + SQS 🙂

    Бессерверная платформа — события AWS Lambda

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

    ARN для очереди может быть указан в виде строки, ссылки на ARN ресурса по логическому идентификатору или импорта ARN, который был экспортирован другой службой или стеком CloudFormation.

    Примечание: Событие sqs подключит существующую очередь SQS к функции Lambda. Serverless не создаст для вас новую очередь.

      функции:
      вычислить:
        обработчик: handler.compute
        Мероприятия:
          
          - sqs: arn:aws:sqs:region:XXXXXX:MyFirstQueue
          - квадраты:
              арн:
                Fn::GetAtt:
                  - Моя вторая очередь
                  - Арн
          - квадраты:
              арн:
                Fn::ImportValue: MyExportedQueueArnId
          - квадраты:
              арн:
                Фн::Присоединиться:
                  - ':'
                  - - арн
                    - ох
                    - квадраты
                    – Ссылка: AWS::Регион
                    – Ссылка: AWS::AccountId
                    - Моя другая очередь
      

    Установка размера партии

    Для интеграции событий SQS вы можете установить batchSize , который влияет на то, сколько сообщений SQS может быть включено в один вызов Lambda.Значение по умолчанию batchSize равно 10 . Максимальный размер партии составляет 10000 для стандартной очереди, 10 для очереди FIFO.

    Вы также можете установить maxBatchingWindow для стандартных очередей, чтобы указать максимальное время в секундах для сбора записей перед вызовом функции. Максимальное максимальное окно BatchingWindow составляет 300 секунд.

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

    Дополнительные сведения см. в документации AWS.

      функции:
      вычислить:
        обработчик: handler.compute
        Мероприятия:
          - квадраты:
              arn: arn:aws:sqs:region:XXXXXX:myQueue
              размер партии: 10
              Максимальное окно пакетной обработки: 60
              functionResponseType: Репортбатчитемфаилурес
      

    Настройка шаблонов фильтров

    Эта конфигурация позволяет клиентам фильтровать события перед вызовом лямбда-выражения. Он принимает до 5 шаблонов фильтров по умолчанию и до 10 с расширением квоты.Если одно событие соответствует хотя бы одному шаблону, лямбда обработает его.

    Дополнительные сведения и примеры шаблонов фильтров см. в документации по фильтрации событий AWS

    .

    Примечание. Serverless устанавливает это свойство, только если вы явно добавляете его в конфигурацию sqs (см. пример ниже). В следующем примере будут обрабатываться только записи, в которых поле a равно 1 или 2.

      функции:
      только один или два:
        обработчик: обработчик.препроцесс
        Мероприятия:
          - квадраты:
              arn: arn:aws:sqs:region:XXXXXX:myQueue
              filterPatterns:
                - а: [1, 2]
      

    Разрешения IAM

    Serverless Framework автоматически настроит для вас самый минимальный набор разрешений IAM.Однако вы все равно можете добавить дополнительные разрешения, если вам это нужно. Дополнительные сведения о разрешениях IAM для событий SQS см. в официальной документации AWS.

    Развертывание очередей SQS

    В приведенных выше примерах показано, как использовать сообщения из существующей очереди SQS. Чтобы создать очередь SQS в serverless.yml , вы можете либо написать собственный CloudFormation, либо использовать Lift.

    Lift — это подключаемый модуль Serverless Framework, который упрощает развертывание частей приложений с помощью «конструкций».Лифт можно установить через:

      бессерверная установка подключаемого модуля -n безсерверная-лифт
      

    Мы можем использовать конструкцию очереди для развертывания очереди SQS с ее потребителем Lambda:

      конструкции:
      моя очередь:
        тип: очередь
        работник:
          обработчик: handler.compute
    
    плагины:
      - бессерверный лифт
      

    Развертывание конструкции очереди :

    • Очередь SQS
    • A worker Лямбда-функция: эта функция обрабатывает сообщения, отправленные в очередь.
    • “Очередь недоставленных писем” SQS: в этой очереди хранятся все сообщения, которые не удалось обработать.

    Прочтите документацию по конструкции очереди , чтобы найти полный пример с кодом и узнать, как настроить размер пакета, повторные попытки и другие параметры.

    Асимметричные разветвители ПЛК

    Запрос цен

    Спасибо, что воспользовались нашими услугами

    SQS разработала и производит также асимметричные разветвители PLC, обеспечивающие асимметричное разделение энергии входного оптического сигнала на два выходных канала.SQS может поставлять разветвители ПЛК практически с любым коэффициентом деления выходного сигнала. В настоящее время мы поставляем асимметричные разветвители PLC с выходным оптическим сигналом, разделенным в следующих соотношениях: 30/70, 20/80, 10/90, 5/95 и 2/98.

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

    Разветвители

    SQS PLC характеризуются как однородные широкополосные разветвители/объединители мощности, характеризующиеся исключительной однородностью вносимых потерь по всем каналам, что фактически обеспечивает практическую независимость от длины волны во всем диапазоне передачи от 1260 до 1650 нм.

    Разветвители

    SQS PLC — лучший выбор для широкого спектра телекоммуникационных и сенсорных приложений. Разветвители SQS, основанные на технологии PLC (Planar Lightwave Circuit), оптимально сочетают в себе производительность, размер и стоимость.

    Реальные широкополосные характеристики:
    низкие вносимые потери и их однородность во всем диапазоне длин волн от 1260 до 1650 нм.

    Применение:
    • отлично подходит для FTTx, PON
    • КАТВ
    • Волоконно-оптическое испытательное и измерительное оборудование

    Выезд в нейтральный вариант сетевой инфраструктуры:

    • Волокно до бордюра
    • Оптоволокно в помещение
    • Оптоволокно к зданию
    • Оптоволокно в дом
    • Оптоволокно к столу
    Каталожный лист для скачивания в формате PDF

     

    Спецификация Асимметричные делители, коэффициент деления 60/40 %, 70/30 %, 80/20 %, 90/10 %, 95/5 %, 98/2 %

    Асимметричные разветвители с ПЛК Соотношение % IL макс.: [дБ] ПДЛ: [дБ] RL: [дБ] Направленность: [дБ] С косичками 250 [мкм] С косичками 900 [мкм] Тип косички 2 [нм]
    ПЛК 1×2 1) 60/40 3.5/4-6 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 70/30 3.0/5-7 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 80/20 2.6/7-9 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 85/15 2.1/8-10 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 90/10 1.9/9-12 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 95/5 1,2/12-15 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 98/2 1.15-18.00 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90

    1) Длина волны 1260–1650 нм, Тип волокна SM(G.652.D/G.657.A) Температура эксплуатации и хранения от -40 до +85 °C


    Спецификация Асимметричные делители PM, коэффициент деления 60/40 %, 70/30 %, 80/20 %, 90/10 %, 95/5 %, 98/2 %

    Асимметричные разветвители с ПЛК Соотношение % Коэффициент затухания дБ IL макс.: [дБ] ПДЛ: [дБ] RL: [дБ] Направленность: [дБ] С косичками 250 [мкм] С косичками 900 [мкм] Тип косички 2 [нм]
    ПЛК 1×2 1) 60/40 > 25 3.9/4-6 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 70/30 > 25 3,5/5-7 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 80/20 > 25 3.07-9 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 85/15 > 25 2,5/8-10 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 90/10 > 25 2.09-12 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 95/5 > 25 1,5/12-15 ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90
    ПЛК 1×2 1) 98/2 > 25 1.15-18 февраля ≤0,20 ≥55 ≥55 5,6x10x69 5,6x10x69 7,5x12x90

    1) Длина волны 1260–1650 нм, Тип волокна PM13, PM15 или спрос Температура эксплуатации и хранения от -40 до +80 °C


    Схема разветвителя ПЛК 1×2 90/10%

    Оптические параметры PLC Splitter 1×2 90/10% Разветвитель ПЛК для температурных испытаний 1×2 90/10%


     

    Amazon SQS — коннекторы | Документы Майкрософт

    Полезна ли эта страница?

    Пожалуйста, оцените свой опыт

    да Нет

    Любая дополнительная обратная связь?

    Отзыв будет отправлен в Microsoft: при нажатии кнопки отправки ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.

    Представлять на рассмотрение

    Simple Queue Service (SQS) — это служба очередей, предоставляемая Amazon Web Services.

    В этой статье

    Этот соединитель доступен в следующих продуктах и ​​регионах:

    Служба Класс регионов
    Логические приложения Стандарт Все регионы Logic Apps, кроме следующих:
         –   Регионы Azure для государственных организаций
         –   Регионы Azure для Китая
         –   Министерство обороны США (DoD)
    Power Automate Премиум Все регионы Power Automate, кроме следующих:
         –   Правительство США (GCC)
         –   Правительство США (GCC High)
         –   China Cloud под управлением 21Vianet
         –   Министерство обороны США (DoD)
    Силовые приложения Премиум Все регионы Power Apps, кроме следующих:
         –   Правительство США (GCC)
         –   Правительство США (GCC High)
         –   China Cloud под управлением 21Vianet
         –   Министерство обороны США (DoD)
    Метаданные соединителя
    Издатель Майкрософт

    Создание соединения

    Соединитель поддерживает следующие типы проверки подлинности:

    По умолчанию Параметры для создания соединения. Все регионы Не подлежит совместному использованию

    По умолчанию

    Применимо: Все регионы

    Параметры для создания соединения.

    Это не совместно используемое соединение. Если приложение Power используется совместно с другим пользователем, другому пользователю будет предложено явно создать новое подключение.

    Имя Тип Описание Обязательно
    URL очереди SQS строка Конечная точка очереди SQS для использования в соединении Правда
    Идентификатор ключа доступа строка Идентификатор ключа доступа Amazon Правда
    Секретный ключ доступа строка безопасности Секрет ключа доступа Amazon Правда

    Пределы регулирования

    Имя Звонки Период продления
    Вызовы API на соединение 6000 60 секунд

    Действия

    Удаляет сообщение из очереди SQS

    Удаляет сообщение из очереди SQS.

    Параметры
    Имя Ключ Обязательно Тип Описание

    Дескриптор получения сообщения

    сообщениеReceiptHandle Истинный нить

    Дескриптор квитанции, связанный с удаляемым сообщением.

    Отправляет сообщение в очередь SQS

    Отправляет сообщение в очередь SQS.

    Параметры
    Имя Ключ Обязательно Тип Описание

    Задержка видимости сообщения (в секундах)

    сообщениеVisibilityDelaySeconds целое число

    Продолжительность (в секундах), на которую следует задержать конкретное сообщение.

    Содержание сообщения

    сообщениеКонтент нить

    Сообщение с содержимым для отправки в очередь.

    Возврат

    Метаданные сообщения

    Триггеры

    При получении сообщения из очереди SQS

    При получении сообщения из очереди SQS.

    Параметры
    Имя Ключ Обязательно Тип Описание

    Время ожидания видимости сообщения (в секундах)

    сообщениеVisibilityTimeoutSeconds целое число

    Продолжительность (в секундах), в течение которой полученные сообщения скрыты от последующих запросов на получение после извлечения.

    Тайм-аут ожидания запроса (в секундах)

    запросWaitTimeoutSeconds целое число

    Продолжительность (в секундах), в течение которой вызов ожидает поступления сообщения в очередь перед возвратом.

    Имена атрибутов сообщения

    messageAttributeNames нить

    Атрибуты сообщения для выборки.Это должна быть строка с разделителями-запятыми с поддерживаемыми значениями из «Все, ApproximateFirstReceiveTimestamp, ApproximateReceiveCount, AWSTraceHeader, SenderId, SentTimestamp, MessageDeduplicationId, MessageGroupId, SequenceNumber». Имена атрибутов чувствительны к регистру.

    Возврат

    Содержание сообщения

    При получении сообщений из очереди SQS

    При получении сообщений из очереди SQS.

    Параметры
    Имя Ключ Обязательно Тип Описание

    Максимальное количество сообщений для выборки

    максимальное количество сообщений целое число

    Максимальное количество сообщений для извлечения из очереди.

    Время ожидания видимости сообщения (в секундах)

    сообщениеVisibilityTimeoutSeconds целое число

    Продолжительность (в секундах), в течение которой полученные сообщения скрыты от последующих запросов на получение после извлечения.

    Тайм-аут ожидания запроса (в секундах)

    запросWaitTimeoutSeconds целое число

    Продолжительность (в секундах), в течение которой вызов ожидает поступления сообщения в очередь перед возвратом.

    Имена атрибутов сообщения

    messageAttributeNames нить

    Атрибуты сообщения для выборки. Это должна быть строка с разделителями-запятыми с поддерживаемыми значениями из «Все, ApproximateFirstReceiveTimestamp, ApproximateReceiveCount, AWSTraceHeader, SenderId, SentTimestamp, MessageDeduplicationId, MessageGroupId, SequenceNumber». Имена атрибутов чувствительны к регистру.

    Возврат

    Содержание сообщения

    Определения

    QueueMessage

    Содержание сообщения

    Имя Путь Тип Описание

    идентификатор сообщения

    идентификатор сообщения нить

    Уникальный идентификатор сообщения.

    квитанцияРучка

    квитанцияРучка нить

    Идентификатор, связанный с актом получения сообщения.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *