0
0
Lập trình
Admin Team
Admin Teamtechmely

Khảo sát SQS: Polling ngắn và dài

Đăng vào 3 ngày trước

• 4 phút đọc

Chủ đề:

#sqs

Khảo sát SQS: Polling ngắn và dài

Amazon Simple Queue Service (SQS) là một dịch vụ nhắn tin phân tán giúp bạn gửi, nhận và lưu trữ các thông điệp giữa các thành phần của ứng dụng. Trong bài viết này, chúng ta sẽ tìm hiểu về hai phương thức chính của SQS: polling ngắn (short polling) và polling dài (long polling), cũng như cách thức hoạt động của chúng.

Mục lục

  1. Polling ngắn
  2. Polling dài
  3. Cách ReceiveMessageWaitTimeSeconds hoạt động
  4. Tại sao polling dài giảm chi phí?
  5. Thực tiễn tốt nhất khi sử dụng SQS
  6. Những cạm bẫy thường gặp
  7. Mẹo hiệu suất
  8. Khắc phục sự cố
  9. Câu hỏi thường gặp

Polling ngắn {#polling-ngan}

Khi một instance EC2 yêu cầu lấy thông điệp, SQS kiểm tra chỉ một phần của các máy chủ để xem có thông điệp nào có sẵn hay không. Quá trình này được thực hiện nhanh chóng, vì vậy nó trả lời ngay lập tức.

Ưu điểm và nhược điểm của polling ngắn

  • Ưu điểm: phản hồi nhanh hơn.
  • Nhược điểm: có thể trả về các phản hồi rỗng ngay cả khi có thông điệp (bởi vì không kiểm tra tất cả các máy chủ).
  • Cài đặt mặc định: ReceiveMessageWaitTimeSeconds = 0.

Ví dụ:
Hãy tưởng tượng bạn kiểm tra một số làn trên cao tốc thay vì tất cả các làn — bạn có thể bỏ lỡ một chiếc xe (thông điệp).

Polling dài {#polling-dai}

SQS đợi trong một khoảng thời gian nhất định trước khi trả về phản hồi. Nó kiểm tra kỹ lưỡng hơn để xem có thông điệp nào có sẵn không.

Ưu điểm của polling dài

  • Giảm thiểu các phản hồi rỗngcác yêu cầu không cần thiết.
  • Tiết kiệm chi phí vì số lượng cuộc gọi API giảm.
  • Được kiểm soát bởi thuộc tính ReceiveMessageWaitTimeSeconds.
  • Nếu cài đặt giá trị > 0 (tối đa 20 giây), polling dài sẽ được kích hoạt.

Ví dụ:
Giống như việc bạn đợi lâu hơn một chút trước khi kiểm tra các làn đường để đảm bảo bạn bắt kịp bất kỳ chiếc xe nào đang đến.

Cách ReceiveMessageWaitTimeSeconds hoạt động {#cach-receivemessagewaittimeseconds-hoat-dong}

  • Mặc định: 0 giây → polling ngắn.
  • Lớn hơn 0: polling dài.
  • Ví dụ, nếu bạn cài đặt nó thành 10 giây, có nghĩa là: Khi ứng dụng truy vấn hàng đợi, nó sẽ đợi tối đa 10 giây để xem nếu có thông điệp nào xuất hiện trước khi trả về.

Tại sao polling dài giảm chi phí? {#tai-sao-polling-dai-giam-chi-phi}

  • Polling ngắn có thể trả về phản hồi rỗng → các instance EC2 liên tục gửi thêm yêu cầu → nhiều cuộc gọi API hơn → chi phí cao hơn.
  • Polling dài giảm thiểu các phản hồi rỗng → ít yêu cầu hơn → tiết kiệm chi phí.

Thực tiễn tốt nhất khi sử dụng SQS {#thuc-tien-tot-nhat-khi-su-dung-sqs}

  • Chọn polling dài khi cần tiết kiệm chi phí và cải thiện hiệu suất truy vấn thông điệp.
  • Đặt ReceiveMessageWaitTimeSeconds thành một giá trị hợp lý dựa trên khối lượng công việc của bạn.
  • Giám sát và điều chỉnh cài đặt của bạn theo nhu cầu thực tế.

Những cạm bẫy thường gặp {#nhung-cam-bay-thuong-gap}

  • Chỉ sử dụng polling ngắn trong các ứng dụng mà thời gian phản hồi là ưu tiên hàng đầu.
  • Không cấu hình giá trị ReceiveMessageWaitTimeSeconds quá cao, có thể dẫn đến thời gian chờ lâu không cần thiết.

Mẹo hiệu suất {#meo-hieu-suat}

  • Tối ưu hóa số lượng thông điệp mà bạn xử lý trong một lần gọi.
  • Sử dụng batch processing để giảm thiểu số lượng cuộc gọi API.
  • Giám sát hiệu suất của SQS thông qua Amazon CloudWatch để có được cái nhìn tổng quan và điều chỉnh cài đặt của bạn nếu cần.

Khắc phục sự cố {#khac-phuc-su-co}

  • Nếu bạn gặp phải các phản hồi rỗng không mong muốn, hãy xem xét thay đổi từ polling ngắn sang polling dài.
  • Kiểm tra các cài đặt của ReceiveMessageWaitTimeSeconds để đảm bảo rằng chúng được cấu hình đúng.

Câu hỏi thường gặp {#cau-hoi-thuong-gap}

  1. Polling ngắn là gì?
    Polling ngắn là phương thức mà SQS kiểm tra một phần nhỏ các máy chủ để lấy thông điệp, trả về phản hồi nhanh chóng nhưng có thể rỗng.
  2. Polling dài là gì?
    Polling dài là phương thức mà SQS đợi một khoảng thời gian trước khi trả về phản hồi, giúp giảm thiểu phản hồi rỗng và tiết kiệm chi phí.
  3. Tôi nên sử dụng phương thức nào?
    Nếu bạn ưu tiên chi phí và không cần phản hồi ngay lập tức, hãy sử dụng polling dài.

💡 Điểm mấu chốt:
Bằng cách đặt ReceiveMessageWaitTimeSeconds thành một số lớn hơn 0, bạn chuyển từ polling ngắn sang polling dài — làm cho việc truy xuất thông điệp hiệu quả hơn và giảm chi phí.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào