Amazon Kinesis Data Streams
Luồng dữ liệu real-time
Luồng dữ liệu bền vững, xếp theo shard; nhiều consumer có thể đọc lại dữ liệu trong thời gian lưu (mặc định 24 giờ, kéo dài được tới 365 ngày). Có chế độ provisioned và on-demand.
- Chi phí$$ Vừa phải
- Độ khó●●●●●
- Để không có tốn tiền?Có
- Serverless
- Có trong đềSAA · DVA · SOA
Hình dungNhư băng ghi hình liên tục: nhiều người có thể tua lại xem cùng một đoạn.
Khi nào nên dùng
✓ Nên dùng khi
Xử lý real-time độ trễ thấp, nhiều ứng dụng cùng đọc một stream, cần giữ thứ tự theo partition key.
✗ Không nên dùng khi
Chỉ cần đổ dữ liệu vào S3/Redshift → Data Firehose; hàng đợi việc đơn giản → SQS.
Ví dụ hay gặp
- Clickstream cho dashboard real-time
- Thu log tập trung cho nhiều consumer
- Dữ liệu IoT xử lý bằng Lambda
Tốn bao nhiêu tiền?
- Cách tính: Provisioned: theo shard-giờ và PUT payload unit; On-demand: theo stream-giờ và GB ghi/đọc.
Shard provisioned tính tiền theo giờ dù không có dữ liệu; lỗi ProvisionedThroughputExceeded do partition key bị "nóng".
Đề hỏi “nhiều ứng dụng cùng đọc, đọc lại dữ liệu, giữ thứ tự theo key, real-time” thì chọn Kinesis Data Streams; “giữ thứ tự và số consumer tăng, bị chậm” thì enhanced fan-out; “tải khó đoán, không muốn quản shard” thì chế độ on-demand.
Câu hỏi thường gặp
Shard là gì và vì sao ảnh hưởng hiệu năng?
Shard là đơn vị dung lượng của stream: mỗi shard có giới hạn tốc độ ghi và đọc cố định, và dữ liệu cùng partition key luôn vào cùng một shard để giữ thứ tự. Nếu một partition key quá “nóng” thì shard đó bị nghẽn dù các shard khác rảnh, nên cần chọn key phân bố đều. Cần thêm thông lượng thì tăng số shard (resharding).
Provisioned và on-demand khác nhau thế nào?
Provisioned: bạn chọn số shard, tính tiền theo shard-giờ, hợp khi tải dễ đoán. On-demand: AWS tự co giãn theo lưu lượng, tính theo lượng dữ liệu, không phải tính toán shard, hợp khi tải biến động hoặc chưa biết trước. Cả hai đều lưu dữ liệu theo thời gian lưu bạn chọn.
Enhanced fan-out dùng khi nào?
Mặc định các consumer chia sẻ băng thông đọc của mỗi shard, nên thêm consumer làm chậm nhau. Enhanced fan-out cấp cho mỗi consumer một đường đọc riêng được đẩy (push) về với độ trễ thấp, hợp khi có nhiều consumer cùng đọc một stream, đổi lại phát sinh thêm chi phí. Consumer dùng KCL còn cần DynamoDB để lưu checkpoint.
Dịch vụ liên quan
Ôn thi SAA-C03
Kinesis Data Streams xuất hiện trong các chủ đề ôn thi sau: