Bài này chúng ta và cafedev sẽ tìm hiểu về SQS là gì? trong AWS, trước khi chúng ta bắt đầu sử dụng AWS một cách dễ dàng hơn.

1. SQS là gì?

  • SQS là viết tắt của Simple Queue Service .
  • SQS là dịch vụ đầu tiên có sẵn trong AWS.
  • Amazon SQS là một dịch vụ web cung cấp cho bạn quyền truy cập vào hàng đợi tin nhắn có thể được sử dụng để lưu trữ tin nhắn trong khi chờ máy tính xử lý chúng.
  • Amazon SQS là một hệ thống hàng đợi phân tán cho phép các ứng dụng dịch vụ web xếp hàng một cách nhanh chóng và đáng tin cậy các thông báo mà một thành phần trong ứng dụng tạo ra để được sử dụng bởi một thành phần khác trong đó hàng đợi là kho lưu trữ tạm thời cho các thông báo đang chờ xử lý.
  • Với sự trợ giúp của SQS, bạn có thể gửi, lưu trữ và nhận tin nhắn giữa các thành phần phần mềm ở bất kỳ khối lượng nào mà không bị mất tin nhắn.
  • Sử dụng Amazon sqs, bạn có thể tách các thành phần của ứng dụng để chúng có thể chạy độc lập, giúp dễ dàng quản lý tin nhắn giữa các thành phần.
  • Bất kỳ thành phần nào của một ứng dụng phân tán đều có thể lưu trữ các thông báo trong hàng đợi.
  • Tin nhắn có thể chứa tối đa 256 KB văn bản ở bất kỳ định dạng nào như json, xml, v.v.
  • Bất kỳ thành phần nào của ứng dụng sau này đều có thể truy xuất thông báo theo chương trình bằng API Amazon SQS.
  • Hàng đợi hoạt động như một bộ đệm giữa thành phần sản xuất và lưu dữ liệu, và thành phần nhận dữ liệu để xử lý. Điều này có nghĩa là hàng đợi giải quyết các vấn đề phát sinh nếu nhà sản xuất đang sản xuất công việc nhanh hơn mức mà người tiêu dùng có thể xử lý hoặc nếu nhà sản xuất hoặc người tiêu dùng chỉ được kết nối không liên tục với mạng.
  • Nếu bạn có hai phiên bản EC2 đang kéo Hàng đợi SQS. Bạn có thể định cấu hình nhóm tính năng tự động nếu số lượng thư vượt quá một giới hạn nhất định. Giả sử số lượng tin nhắn vượt quá 10, thì bạn có thể thêm phiên bản EC2 bổ sung để xử lý công việc nhanh hơn. Bằng cách này, SQS cung cấp độ đàn hồi.

Hãy hiểu qua một ví dụ.

Hãy xem một trang web tạo Meme. Giả sử người dùng muốn tải ảnh lên và muốn chuyển đổi thành Meme. Người dùng tải ảnh lên một trang web và trang web có thể lưu trữ ảnh trong s3. Ngay sau khi tải lên xong, nó sẽ kích hoạt một hàm Lambda. Lambda phân tích dữ liệu về hình ảnh cụ thể này cho SQS và dữ liệu này có thể là “phần trên cùng của meme nên nói gì”, “phần dưới của meme nên nói gì”, vị trí của nhóm S3, v.v. bên trong SQS dưới dạng tin nhắn. Một cá thể EC2 xem xét thông báo và thực hiện công việc của nó. Một cá thể EC2 tạo một Meme và lưu trữ nó trong nhóm S3. Sau khi cá thể EC2 hoàn thành công việc của mình, nó sẽ quay trở lại SQS. Điều tốt nhất là nếu bạn mất phiên bản EC2 của mình, thì bạn cũng sẽ không bị mất công việc vì công việc nằm bên trong thùng S3.

Hãy xem xét một ví dụ khác về SQS, tức là Trang web Du lịch.

Giả sử người dùng muốn tìm kiếm một kỳ nghỉ trọn gói và muốn xem chuyến bay tốt nhất có thể. Người dùng nhập một truy vấn trong trình duyệt, sau đó truy vấn truy cập vào phiên bản EC2. Một cá thể EC2 trông “Người dùng đang tìm kiếm gì?”, Sau đó nó đưa thông báo vào hàng đợi đến SQS. Một cá thể EC2 kéo hàng đợi. Một cá thể EC2 liên tục kéo hàng đợi và tìm kiếm các công việc cần làm. Khi nó nhận được công việc, nó sẽ xử lý nó. Nó thẩm vấn dịch vụ Hàng không để có được tất cả các chuyến bay tốt nhất có thể. Nó gửi kết quả đến máy chủ web và máy chủ web sẽ gửi lại kết quả cho người dùng. Sau đó, Người dùng chọn chuyến bay tốt nhất theo ngân sách của mình.

Nếu chúng ta không có SQS, thì điều gì đã xảy ra?

Máy chủ web chuyển thông tin đến máy chủ ứng dụng và sau đó máy chủ ứng dụng truy vấn dịch vụ của Hãng hàng không. Nếu máy chủ Ứng dụng gặp sự cố, thì người dùng sẽ mất truy vấn của nó. Một trong những điều tuyệt vời về SQS là dữ liệu được xếp hàng đợi trong SQS ngay cả khi máy chủ ứng dụng gặp sự cố, thông báo trong hàng đợi được đánh dấu là ẩn trong cửa sổ khoảng thời gian chờ. Khi hết thời gian chờ, thông báo sẽ xuất hiện lại trong hàng đợi; thì một thực thể EC2 mới có thể sử dụng thông báo này để thực hiện công việc của nó. Do đó, chúng ta có thể nói rằng SQS loại bỏ sự phụ thuộc của máy chủ ứng dụng.

2. Các loại hàng đợi

Có hai loại Hàng đợi:

  • Hàng đợi Chuẩn (mặc định)Standard Queues (default)
  • Hàng đợi FIFO (First-In-First-Out)
  • Hàng đợi tiêu chuẩnStandard Queue
  • SQS cung cấp một hàng đợi tiêu chuẩn làm loại hàng đợi mặc định.
  • Nó cho phép bạn có số lượng giao dịch không giới hạn mỗi giây.
  • Nó đảm bảo rằng một thông điệp được gửi ít nhất một lần. Tuy nhiên, đôi khi, nhiều bản sao của một tin nhắn có thể được gửi không theo yêu cầu.
  • Nó cung cấp cách đặt hàng với nỗ lực cao nhất để đảm bảo rằng các thông điệp nói chung được gửi theo đúng thứ tự khi chúng được gửi nhưng nó không cung cấp một sự đảm bảo.
  • Hàng đợi FIFO
  • Hàng đợi FIFO bổ sung cho Hàng đợi tiêu chuẩn.
  • Nó đảm bảo việc đặt hàng, tức là, đơn hàng mà chúng được gửi đi cũng được nhận theo cùng một thứ tự.
  • Các tính năng quan trọng nhất của hàng đợi là Hàng đợi FIFO và xử lý chính xác một lần, tức là, một thông điệp được gửi một lần và vẫn có sẵn cho đến khi người tiêu dùng xử lý và xóa nó.
  • Hàng đợi FIFO không cho phép các bản sao được đưa vào Hàng đợi.
  • Nó cũng hỗ trợ các nhóm tin nhắn cho phép nhiều nhóm tin nhắn có thứ tự trong một Hàng đợi.
  • Hàng đợi FIFO được giới hạn ở 300 giao dịch mỗi giây nhưng có tất cả các khả năng của hàng đợi tiêu chuẩn.

3. Thời gian chờ hiển thị SQS

  • Thời gian chờ hiển thị là khoảng thời gian mà thư được hiển thị trong Hàng đợi SQS sau khi người đọc nhận thư đó.
  • Nếu công việc đã cung cấp được xử lý trước khi hết thời gian hiển thị, thông báo sau đó sẽ bị xóa khỏi Hàng đợi. Nếu công việc không được xử lý trong thời gian đó, thông báo sẽ hiển thị trở lại và người đọc khác sẽ xử lý nó. Điều này có thể dẫn đến cùng một tin nhắn được gửi hai lần.
  • Thời gian chờ hiển thị mặc định là 30 giây.
  • Thời gian chờ hiển thị có thể được tăng lên nếu nhiệm vụ của bạn mất hơn 30 giây.
  • Thời gian chờ hiển thị tối đa là 12 giờ.

4. Những điểm quan trọng cần nhớ:

  • SQS là dựa trên kéo, không dựa trên đẩy.
  • Tin nhắn có kích thước 256 KB.
  • Tin nhắn được giữ trong hàng đợi từ 1 phút đến 14 ngày.
  • Khoảng thời gian lưu giữ mặc định là 4 ngày.
  • Nó đảm bảo rằng tin nhắn của bạn sẽ được xử lý ít nhất một lần.

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!