Amazon SQS

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Amazon SQS
AWS Simple Icons Messaging Amazon SQS.svg
Тип служба черги повідомленьd
Розробник Amazon.com
Ліцензія Пропрієтарне програмне забезпечення
aws.amazon.com/sqs/

Amazon Simple Queue Service (Amazon SQS) — розподілена служба черги повідомлень[en]. З'явилась в наприкінці 2004 року[1]. Підтримує програмне відправлення повідомлень через програми веб-сервісів як спосіб спілкування через Інтернет. SQS призначений для забезпечення високо масштабованої черги повідомлень. Розробники можуть легко переміщати дані, розподілені між компонентами програми, які виконують різні завдання, не втрачаючи при цьому повідомлення. При цьому досягається висока масштабованість та надійність передачі. Також вирішуються супутні складнощі, які виникають для задачі постачальника-споживача. Входить в інфраструктуру сервісів Amazon Web Services.

Amazon SQS може бути описаний як комерціалізація служби обміну повідомленнями. Серед відомих прикладів служб повідомлень є IBM WebSphere MQ[en] та 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[en], цифровий підпис обчислюється за допомогою секретного ключа доступу (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[en][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

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Jeff Barr's Blog. Jeff-barr.com. Процитовано 2015-08-13. 
  2. Amazon SQS FIFO (First-In-First-Out) Queues - Amazon Simple Queue Service. docs.aws.amazon.com. Процитовано 2019-09-06. 
  3. AWS Developer Forums: Amazon SQS introduces Free Tier and adds support for Larger Messages and Longer Retention. forums.aws.amazon.com. Архів оригіналу за August 29, 2011. 
  4. Amazon SQS and SNS Announce 256KB Large Payloads. Aws.amazon.com. 2013-06-18. Процитовано 2015-08-13. 
  5. Netflix TechBlog – Medium. Medium. 
  6. Fang, Wenbin (August 13, 2014). Nextdoor Taskworker: Simple, Efficient & Scalable. Nextdoor Engineering. 

Посилання[ред. | ред. код]