Kinesis Data Streams (продюссеры, консюмеры) Flashcards
Что может быть продюссером сообщений?
Приложения, использующие SDK, KPL, Kinesis Agent
Какую API операцию вызывает продюссер в Kinesis?
PutRecord API
Producer’ы могут слать данные в Kinesis с ограничениями. Каковы эти лимиты?
1 MB/sec per shard, 1_000 records/sec per shard
Если шардов 6, то всего (overall) в Kinesis можно слать до …
до 6 MB/sec или до 6_000 records/sec
В чём отличие batching операции в Kinesis и в SQS?
Kinesis может использовать батчинг для отправки сообщений (PutRecord API). А SQS - только для консюминга.
Что такое ProvisionedThroughputExceed?
ошибка, которую мы получим, если превысим write-rate (лимит отправки сообщений).
Как справиться с ProvisionedThroughputExceed?
Есть три способа. Выровнять распределение Partition Ключей (high distribution). Использовать retry-механизм с exponential backoff’ом. Увеличить число шардов (scale shards)
Что может быть консюмером сообщений?
Приложения, использующие SDK, KCL, Lambda, Kinesis Data Firehose, Kinesis Data Analytics
Какую API операцию вызывает консюмер в Kinesis?
GetRecord API или SubscribeToShard API
В чём отличие GetRecord API и SubscribeToShard API?
При GetRecord API консюмер стягивает (poll) рекорды из Шарда. При SubscribeToShard API Шард пушит (push) рекорды в консюмер.
Какие бывают Consumer Modes?
SHARED (classic) moed и ENHANCED mode
Как устроен SHARED (classic) Consumer Mode? Что на самом деле шарится между консюмерами?
На самом деле нужно акцентировать внимание на том, что между консюмерами шарится НЕ Шард, а именно Throughput Rate. Чем больше Consumer’ов читает один шард, тем меньше у каждого из них throughput limit.
Хотя, понятное дело, речь идёт о нескольких консюмерах, которые читают (шарят друг с другом) один и тот же Шард.
Каковы лимиты SHARED (classic) Consumer Mode? Какую API операцию используют?
2 MB/sec per shard на ВСЕХ Consumer’ов. GetRecord API.
Как устроен ENHANCED Consumer Mode?
Как и в SHARED (classic) режиме, несколько консюмеров получают данные из одного шарда. Но Throughout Limit НЕ делится между консюмерами. Он персональный у каждого из них. Этот режим более дорогой и более мощный.
Каковы лимиты ENHANCED Consumer Mode? Какую API операцию используют?
2 MB/sec per shard для КАЖДОГО Consumer’а. SubscribeToShard API.
За счёт чего получается сделать независимый throughput у ENHANCED Consumer mode?
за счёт операции SubscribeToShard, которая заставляет Шард ПУШИТЬ сообщения в каждый консюмер, а НЕ наоборот.
Kinesis Data Streams - это Push модель или Pull модель?
зависит от выбранного Consumer Mode. Если SHARED (classic) mode, то это GetRecords API и PULL модель с общим для ВСЕХ консюмеров throughput’ом. Если ENHANCED mode, то это Subscribe API и PUSH модель с индивидуальным для КАЖДОГО консюмера throughput’ом.
Каков latency для SHARED (classic) mode? Каков для ENHANCED?
200мс, 70мс
Каков лимит на количество GetRecord операций при SHARED (classic) mode?
5
Каков лимит на количество читаемых данных при SHARED (classic) mode?
5 GetRecord операций умножаем на 2 MB за одну GetRecord операцию. Получаем 10 MB/s лимит. Или 10к записей в секунду лимит.
Как выбрать Consumer Mode?
ENHANCED более дорогой, но максимально производительный. Push модель.
Можно ли читать данные батчами в Kinesis? А писать? Каков лимит по батчам для консюминга?
Да, можно и читать и писать батчами. До 10-ти батчей на шард одновременно.