Amazon SQS
Amazon Simple Queue Service (Amazon SQS) — розподілена служба черги повідомлень. З'явилась в наприкінці 2004 року[1]. Підтримує програмне відправлення повідомлень через програми веб-сервісів як спосіб спілкування через Інтернет. SQS призначений для забезпечення високо масштабованої черги повідомлень. Розробники можуть легко переміщати дані, розподілені між компонентами програми, які виконують різні завдання, не втрачаючи при цьому повідомлення. При цьому досягається висока масштабованість та надійність передачі. Також вирішуються супутні складнощі, які виникають для задачі постачальника-споживача. Входить в інфраструктуру сервісів Amazon Web Services.
Тип | служба черги повідомленьd і програмне забезпечення як послуга |
---|---|
Розробник | Amazon.com |
Ліцензія | Пропрієтарне програмне забезпечення |
Вебсайт | aws.amazon.com/sqs/ |
Amazon SQS може бути описаний як комерціалізація служби обміну повідомленнями. Серед відомих прикладів служб повідомлень є IBM WebSphere MQ та Microsoft Message Queuing. Проте на відміну від цих технологій, користувачам не потрібно підтримувати власний сервер. Amazon робить це за них і продає послугу SQS, яку тарифікує за кількістю звернень.
API
Amazon надає SDKs на декількох мовах програмування, включаючи Java, Ruby, Python, .NET, PHP та JavaScript. Клієнт Java Message Service (JMS) 1.1 для Amazon SQS був випущений у грудні 2014 року.
Аутентифікація
Amazon SQS забезпечує процедури аутентифікації для забезпечення безпечної обробки даних. Для цього Amazon використовує свою ідентифікацію веб-служб Amazon (AWS), це потребує від користувачів облікового запису з підтримкою AWS на Amazon.com, який можна створити у веб-службах Amazon (AWS) — хмарних обчислювальних службах. AWS призначає пару пов'язаних ідентифікаторів, ключі доступу до AWS, для облікового запису, що підтримує AWS, для здійснення ідентифікації. Перший ідентифікатор (Access Key) — це відкритий ключ доступу довжиною 20 символів. Цей ключ додається у запит до сервісу AWS для ідентифікації користувача. Якщо користувач не використовує SOAP (протокол) з WS-Security, цифровий підпис обчислюється за допомогою секретного ключа доступу (Secret Access Key). Секретний ключ доступу — це приватний ідентифікатор довжиною 40 символів. AWS використовує ідентифікатор ключа доступу (Access Key ID), який додається до запиту до сервісу, для пошуку секретного ключа доступу облікового запису. Потім Amazon.com обчислює цифровий підпис за допомогою цього ключа. Якщо вони збігаються, то користувач вважається справжнім, якщо ні, то аутентифікація не підтверджується, а запит не обробляється.
Доставка повідомлень
Amazon SQS гарантує доставку принаймні один раз. Повідомлення зберігаються на декількох серверах для надмірності та забезпечення їх доступності. Якщо під час доставки повідомлення, сервер недоступний, то повідомлення не може бути вилучено із черги цього сервера і може бути повторно відправлено. Станом на 2007, Amazon SQS не гарантує, що одержувач отримає повідомлення у тому порядку, який вони надіслали відправником. Якщо впорядкування повідомлень має важливе значення, тоді потрібно потурбуватись, щоб застосунок розмістив інформацію про послідовність всередині повідомлень, щоб забезпечити можливість упорядкування після доставки або використовувати Amazon SQS FIFO[2].
Повідомлення можуть бути будь-якого типу, і нема обмежень на дані, що містяться в них. Спочатку тіло повідомлень було обмежене розміром 8 КБ, але згодом було підвищено до 64 КБ (з 1 липня 2010)[3] , а згодом до 256 КБ (з 18 червня 2013)[4]. Для більш великих повідомлень користувач має кілька варіантів, щоб обійти це обмеження. Велике повідомлення може бути розділене на кілька сегментів, які надсилаються окремо, або дані повідомлення можуть зберігатися за допомогою служби Amazon S3 або Amazon DynamoDB з лише вказівником на дані, що передаються у повідомленні SQS. Amazon зробила доступною для цієї мети бібліотеку розширених клієнтів - розширення для клієнта Amazon SQS, що дозволяє надсилати та отримувати повідомлення розміром до 2 Гб через Amazon S3. : awslabs / amazon-sqs-java-Extended-client-lib.
Сервіс підтримує як необмежені черги, так і трафік повідомлень.
Видалення повідомлення
SQS не видаляє автоматично повідомлення після доставки. Коли повідомлення доставлено, генерується дескриптор цієї доставки та надсилається одержувачу. Дескриптори не надсилаються разом із повідомленням, а на додачу до нього. SQS вимагає від одержувача повернути дескриптор після чого повідомлення видаляється. Ця функція з'явилась у 2008 року, до цього, для видалення повідомлення був потрібний лише ідентифікатор повідомлення. Оскільки система є розподіленою, то повідомлення може надсилатися декілька разів. У цьому випадку видалення повідомлення відбувається за останнім дескриптором.
Після того, як повідомлення було доставлено, починається відлік очікування видимості (англ. visibility timeout) під час якого повідомлення стає «невидимим» і не може буде відправлене знов. Відлік часу видимості починається після надсилання повідомлення, час за замовчуванням — 30 секунд. Якщо черзі протягом цього часу не буде сказано видаляти повідомлення, то воно знову стає видимим і буде відправлене повторно.
Кожна черга також має параметр утримання (англ. retention), за замовчуванням — до 4 днів. Будь-яке повідомлення, що залишається в черзі довше цього терміну, буде видалене автоматично. Час утримання може бути змінено користувачем на термін від 1 хвилини до 14 днів. Якщо параметр утримання буде змінено, коли повідомлення вже знаходяться в черзі, будь-яке повідомлення, що перебувало в черзі довший час ніж нове значення параметру, буде видалене.
Відомі споживачі
Dropbox, Netflix[5] та Nextdoor[6] — приклади компаній, які широко використовують SQS. SQS також широко використовується в Amazon.com.
Ціни
Перший мільйон щомісячних запитів безкоштовний. Після цього ціноутворення є наступним для всіх регіонів:
Ціна за 1 мільйон запитів після вичерпання безкоштовного пакету (щомісяця) | |
Стандартна черга | 0,40 дол. (0,00000040 дол. США за запит) |
Черга FIFO | 0,50 $ (0,00000050 $ за запит) |
Ціна пересилки даних
Ціна | |
---|---|
Передача даних IN | |
Усі передачі даних у | $ 0,000 за ГБ |
Передача даних OUT *** | |
Перший 1 Гб / місяць | $ 0,000 за ГБ |
До 10 ТБ / місяць | $ 0,090 за ГБ |
Наступні 40 ТБ / місяць | $ 0,085 за ГБ |
Наступні 100 ТБ / місяць | $ 0,070 за ГБ |
Наступні 350 ТБ / місяць | $ 0,050 за ГБ |
Наступні 524 ТБ / місяць | Зверніться до AWS |
Наступні 4 ПБ / місяць | Зверніться до AWS |
Більше 5 ПБ / місяць | Зверніться до AWS |
Див. також
Примітки
- Jeff Barr's Blog. Jeff-barr.com. Процитовано 13 серпня 2015.
- Amazon SQS FIFO (First-In-First-Out) Queues - Amazon Simple Queue Service. docs.aws.amazon.com. Процитовано 6 вересня 2019.
- AWS Developer Forums: Amazon SQS introduces Free Tier and adds support for Larger Messages and Longer Retention. forums.aws.amazon.com. Архів оригіналу за 29 серпня 2011.
- Amazon SQS and SNS Announce 256KB Large Payloads. Aws.amazon.com. 18 червня 2013. Процитовано 13 серпня 2015.
- Netflix TechBlog – Medium. Medium.
- Fang, Wenbin (13 серпня 2014). Nextdoor Taskworker: Simple, Efficient & Scalable. Nextdoor Engineering.