Tách ghép bằng AWS Messaging Services

Phát triển ứng dụng trên AWS

Ricardo Sueiras

Principal Technologist

Những điều cơ bản về Amazon SQS

 

tổng quan sqs

  • Xử lý đột biến lưu lượng độc lập với producer.
  • Hàng đợi thông điệp được quản lý cho giao tiếp bất đồng bộ.
  • Producer gửi message vào queue.
  • Consumer lấy message từ queue.
  • Message được giữ lại cho đến khi có consumer nhận.
  • Thời gian lưu: mặc định 4 ngày, tối đa 14 ngày.
  • Consumer thăm dò (poll) queue và xử lý theo tốc độ riêng.
Phát triển ứng dụng trên AWS

Khả kiến của message

  • Message sẽ ẩn khi consumer đọc.
  • Visibility timeout kiểm soát thời gian bị ẩn.
  • Nếu xử lý thất bại và message không bị xóa:
    • Nó sẽ hiện lại.
    • Có thể được xử lý lại.
  • Visibility timeout: mặc định 30 giây.
  • Tối đa 12 giờ.

 

khả kiến của message

Phát triển ứng dụng trên AWS

Kích thước message

 

kích thước ảnh

  • Message có thể lớn đến 256KB.
  • Thư viện SQS Extended Client cho phép message lớn hơn.
  • Lưu payload lớn trong Amazon S3.
  • Gửi một con trỏ tới S3 trong payload của message.
Phát triển ứng dụng trên AWS

Short polling

  • Chiến lược polling ảnh hưởng chi phí và hiệu quả.
  • Short polling là mặc định.
  • Truy vấn một phần các máy chủ SQS, trả về ngay.
  • Có thể trả về rỗng dù còn message.
  • Dẫn đến nhiều API call hơn và chi phí cao hơn.

 

polling

Phát triển ứng dụng trên AWS

Long polling

  • Long polling truy vấn toàn bộ máy chủ SQS.
  • Chờ tối đa 20 giây cho một message.
  • Loại bỏ các phản hồi rỗng không cần thiết.
  • Giảm API call và hạ chi phí.

 

polling

Phát triển ứng dụng trên AWS

Standard queue

  • SQS có hai loại queue.
  • Standard queue:
    • Giao hàng ít nhất một lần.
    • Sắp xếp theo nỗ lực tốt nhất.
    • Thông lượng gần như không giới hạn.

 

các loại queue

Phát triển ứng dụng trên AWS

FIFO queue

 

các loại queue

  • FIFO queue:
    • Xử lý đúng một lần.
    • Thứ tự message nghiêm ngặt.
    • Khử trùng lặp message tích hợp.
  • Mặc định 300 TPS
    • Tăng lên 3.000 với batching hoặc hơn với chế độ thông lượng cao.
  • Chọn loại queue theo bài toán:
    • Standard cho khả năng mở rộng và thông lượng.
    • FIFO cho thứ tự và khử trùng lặp.
Phát triển ứng dụng trên AWS

Xử lý poison message

 

dlq

  • Dead letter queue (DLQ) lưu message xử lý thất bại.
  • Message chuyển sang DLQ khi vượt quá maxReceiveCount.
  • Tránh lặp lại vô hạn với poison message.
  • DLQ phải cùng loại queue với nguồn.
  • Di chuyển message về queue nguồn để xử lý lại.
Phát triển ứng dụng trên AWS

Bảo mật queue

 

bảo mật SQS

  • Mã hóa khi truyền bằng HTTPS mặc định.
  • Mã hóa phía server khi lưu trữ bằng AWS KMS.
  • Mã hóa payload phía client với AWS Encryption SDK.
  • IAM policy quản lý ai có thể truy cập queue SQS.
  • Resource-based policy cho quyền chi tiết ở cấp queue.
Phát triển ứng dụng trên AWS

Những điều cơ bản về Amazon SNS

  • Dịch vụ pub/sub được quản lý.
  • Dùng mô hình push.
  • Publisher gửi message vào topic.
    • Kích thước message tối đa 256KB.
  • Consumer đăng ký (subscribe) vào topic.
  • Subscriber nhận message thụ động.

 

tổng quan sns

Phát triển ứng dụng trên AWS

Khả năng mở rộng

  • Hỗ trợ tối đa 12,5 triệu subscription mỗi topic.
  • Không lưu message:
    • Mất message nếu subscriber không sẵn sàng.
    • Dùng DLQ hoặc subscriber bền vững (SQS queue) để tránh mất.
  • Phân phối một sự kiện đến nhiều consumer (fan-out).

 

mở rộng sns

Phát triển ứng dụng trên AWS

Lọc message

  • SNS hỗ trợ chính sách lọc message.
  • Mỗi subscription chỉ nhận message liên quan.
  • Không có bộ lọc, subscription nhận mọi message.
  • Chính sách lọc áp dụng ở cấp subscription, không phải topic.

 

lọc

Phát triển ứng dụng trên AWS

Logic và đánh giá bộ lọc

 

chính sách lọc

  • Bộ lọc được định nghĩa bằng JSON.
  • So khớp với thuộc tính của message.
  • Nhiều điều kiện được đánh giá theo AND.
  • Nhiều giá trị trong một điều kiện theo OR.
  • Hỗ trợ nhiều phép lọc:
    • Khớp chuỗi chính xác, số, tiền tố, loại trừ, và theo khoảng.
Phát triển ứng dụng trên AWS

Bảo mật SNS

 

bảo mật sns

  • Mã hóa dữ liệu khi truyền bằng HTTPS mặc định.
  • Mã hóa phía server khi lưu trữ bằng AWS KMS.
    • Cấp quyền cho SNS dùng khóa KMS.
  • IAM policy cung cấp kiểm soát truy cập.
    • Quản lý ai có thể publish vào hoặc subscribe từ một topic.
Phát triển ứng dụng trên AWS

Cùng luyện tập nào!

Phát triển ứng dụng trên AWS

Preparing Video For Download...