SQS

- Hoạt động theo cơ chế queuing (polling data)
- Retention: 4 (mặc định) – 14 ngày


- Security:
- Encryption: HTTPS, KMS Keys, client-side encryption
- SQS Access Policies: tương tự như các service khác, kiểu soát việc gửi messages vào queue, đọc queue, …..
- Visibility timeout:
- Quãng thời gian mà sau khi message được polled, message sẽ quay ngược trở lại queue ⇒ khoảng thời gian mà message (request) bắt buộc phải được xử lý xong nếu không muốn bị duplicated
- Có thể dùng API ChangeMessageVisibility có request thêm time nếu chưa handle xong

- Bao gồm Standard Queue và FIFO Queue

- Dead Letter Queue (DLQ)
- Nếu một message bị xử lý fail, nó sẽ quay trở lại queue sau một khoảng time (visibility timeout)
- Điều này có thể lặp lại nhiều lần ⇒ Set up MaximumReceives threshold và sau đó message sẽ bị đưa vào DLQ nếu vượt quá số lần được processed
- DLQ cũng là một queue, giúp hỗ trợ debug dễ dàng hơn
- Sử dụng cơ chế
redrive task
để move hết message quay trở lại queue thật sau khi debug và fix bug

- Delay Queue: message sẽ không xuất hiện trong queue ngay lập tức mà sẽ xuất hiện sau một khoảng thời gian (0s – 15 mins)

- Long Polling: giảm số lần polling bằng cách tăng thời gian chờ mỗi lần polling data (thời gian chờ thường từ 1s-20s)

- Cách để queue một message ứng với một lượng dữ liệu lớn (static data)

- Deduplication:
- Interval là 5 mins
- Có 2 phương pháp để de-duplicate:
- dựa vào content: message body sẽ được hash theo phương thức SHA-256 và so sánh
- Dựa vào message deduplication ID

- Message Group:
- Chia một SQS thành các group nhỏ
- Các messages trong một group sẽ được đảm bảo thứ tự
- Messages trong các groups có thể được handle song song với nhau


SNS

- Hoạt động theo cơ chế Pub / Sub
- Cho phép gửi messages tới nhiều receivers
- Các giới hạn Số lượng topic Số lượng subscription mỗi topic 100.000 12.500.000
- Có thể tương tác với rất nhiều các AWS Services
- Security:
- Encryption: HTTPS, KMS, client-side encrypt
- IAM policies
- SNS Access Policies (tương tự như cái S3 bucket policies)
- Kết hợp với SQS tạo ra một số mô hình:



- Bao gồm 2 loại là Standard và FIFO (tương tự như SQS)
- Hỗ trợ cơ chế Message Group ID và Deduplication tương tự như SQS
- Dùng SNS loại nào thì CHỈ có thể kết hợp với SQS loại đó

- Có thể apply cơ chế Filter trước khi gửi data tới các subsriptions

Kinesis
- Xử lý các luồng dữ liệu real-time
- Bao gồm:
- Kinesis Data Streams: xử lý data stream
- Kinesis Data Firehose: load data stream vào AWS data stores
- Kinesis Data Analytics: phân tích data stream với SQL hoặc Apache Flink
- Kinesis Video Streams: làm việc với video stream

- Retention: 1 – 365 ngày
- Security
- HTTPS
- KMS
- IAM Policies
- VPC Endpoints (?????)

- Producers

- Khi gặp ThroughoutExceeded
- Sử dụng
highly distributed partition key
- Tăng số lượng shards
- Áp dụng cơ chế Retry
Exponential backoff
- Sử dụng
- Consumers

- Shard Splitting
- Khi traffic đến một shard quá lớn, có thể áp dụng cơ chế chia shard để tăng capacity
- Với mỗi lần chia, 1 shard CHỈ CÓ THỂ chia thành tối đa 2 shards
- Shard cũ sẽ bị xoá

- Merge shards
- Ngược lại với Split shards
- Các shard có lượng traffics thấp có thể sẽ merge lại với nhau thành 1
- 1 lần chỉ có thể merge tối đa 2 shards lại với nhau

- Sử dụng cơ chế Partition Key để gom data liên quan đến nhau vào cùng một shard ⇒ tăng khả năng xử lý song song

Kinesis Data Firehose/Analytics


So sánh Kinesis Data Stream với Kinesis Data Firehose
Stream | Firehose |
---|---|
Gần như realtime | Độ trễ khá lớn (~60s) |
Store data tối đa 365 ngày | Store data trong S3 hoặc đổ data đến các Services khác |
Cần phải tự setup cơ chế splitting, merging shards | Tự động scaling |
Link tham khảo hữu ích
- AWS SNS chính thức
https://docs.aws.amazon.com/sns/latest/dg/welcome.html - AWS Kinesis chính thức
https://docs.aws.amazon.com/streams/latest/dev/introduction.html - Hiểu về Visibility Timeout trên SQS
https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html - SQS Dead Letter Queue (DLQ) và cách sử dụng
https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html - SQS FIFO queue và deduplication
https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/FIFO-queues.html - SNS Filtering và Subscription
https://docs.aws.amazon.com/sns/latest/dg/sns-message-filtering.html - Kinesis Data Streams Scaling và Shard Splitting/Merging
https://docs.aws.amazon.com/streams/latest/dev/kinesis-using-sdk-java-shard-resharding.html