Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

QStash:Hàng đợi &Lập lịch tin nhắn không có máy chủ

Chúng tôi tự hào và vui mừng thông báo QStash 🔥🔥🔥

Về mặt hình thức, QStash là một hàng đợi tin nhắn và công cụ lập lịch tác vụ được thiết kế cho thời gian chạy không có máy chủ. Một cách không chính thức, QStash là chất kết dính cho các chức năng không có máy chủ của bạn.

Có quan niệm cho rằng serverless chỉ tốt cho những tác vụ đơn giản. Không còn nữa. Mọi người xây dựng các hệ thống mạnh mẽ với serverless stack. Hệ thống mạnh mẽ bao gồm nhiều thành phần. Giao tiếp giữa các thành phần đó là một vấn đề kỹ thuật lớn. Đã có những giải pháp tuyệt vời cho vấn đề này. Nhưng chúng tôi cho rằng các giải pháp hiện tại không phù hợp với không gian không có máy chủ. Hoặc chúng quá phức tạp hoặc không được thiết kế để hoạt động với thời gian chạy không trạng thái. Vì vậy chúng tôi muốn có một giải pháp (là):

  • Hoạt động ở mọi nơi kể cả serverless và biên.
  • Nhắn tin là một dịch vụ không có phần phụ trợ để người dùng chạy.
  • Nhẹ nhàng, dễ hiểu, không cần phải học.
  • Giá tăng dần về 0.

Hãy nói về một ví dụ thực tế. Chúng tôi có một ứng dụng thương mại điện tử và chúng tôi muốn gửi email thông tin sau mỗi lần mua hàng. Chúng tôi có một dịch vụ (tuyến API) cho các giao dịch mua mới (newPurchase) và dịch vụ thứ hai để gửi email và thông báo (sendEmail). Chúng ta có thể gọi dịch vụ sendEmail từ dịch vụ newPurchase. Nhưng nếu cuộc gọi thất bại thì sao? Chúng ta có nên đợi phản hồi và thử lại không? Điều gì sẽ xảy ra nếu có quá nhiều cuộc gọi làm tắc nghẽn dịch vụ sendEmail và dịch vụ này không phản hồi đúng hạn? Bạn cần xử lý tất cả các trường hợp này trong dịch vụ newPurchase của mình. Hơn nữa, khi bạn thay đổi hợp đồng dịch vụ sendEmail; bạn cũng phải cập nhật dịch vụ Mua hàng mới của mình.

Nếu bạn sử dụng QStash trong ví dụ trên, bạn chỉ cần gửi yêu cầu tới QStash từ dịch vụ newPurchase. QStash sẽ xếp hàng yêu cầu và gọi dịch vụ sendEmail. Nếu dịch vụ không phản hồi, QStash sẽ thử lại với chiến lược rút lui. Độ trễ của dịch vụ sendEmail sẽ không ảnh hưởng đến dịch vụ newPurchase vì nó sẽ không chờ phản hồi từ dịch vụ sendEmail. QStash tách riêng các dịch vụ Mua và gửiEmail mới. Bạn có thể cập nhật cả hai dịch vụ một cách độc lập miễn là bạn giữ cho định dạng tin nhắn tương thích.

Với QStash, bạn có thể thêm delays tới các yêu cầu. Gửi email 3 ngày sau khi giao hàng để nhắc khách hàng thêm đánh giá. Bạn cũng có thể lên lịch các nhiệm vụ. Bạn có thể gửi yêu cầu bằng biểu thức CRON để nó sẽ được chạy lặp đi lặp lại.

QStash:Hàng đợi &Lập lịch tin nhắn không có máy chủ

Bây giờ chúng ta hãy xem sơ qua các tính năng của QStash:

Hoạt động ở mọi nơi

Thay vì nhắn tin dựa trên kéo truyền thống nơi bạn yêu cầu một quy trình chạy dài để tiêu thụ từ hàng đợi, QStash sẽ đẩy tin nhắn tới API của bạn. Điều này cho phép bạn sử dụng các chức năng serverless để xử lý chúng. Chúng tôi xử lý việc thử lại, độ trễ tùy chỉnh và lập lịch cho bạn. Tất cả những gì bạn cần là một API HTTP có thể truy cập công khai.

Tăng giá về 0

Giá QStash là 1 USD trên 100.000 yêu cầu. Điều tốt là không có khoản thanh toán tối thiểu hoặc cố định. Bạn chỉ trả tiền cho những gì bạn sử dụng. Nếu bạn mong đợi có hàng triệu yêu cầu, chúng tôi sẽ cung cấp cho bạn gói doanh nghiệp với giá mỗi yêu cầu thấp hơn.

Cập nhật - Tháng 9 năm 2022

Chúng tôi đã giảm giá QStash xuống còn 1 USD cho mỗi 100 nghìn yêu cầu. Xem trang QStashPricing để biết thông tin về giá mới nhất.

Điểm cuối và chủ đề

Bạn bao gồm điểm cuối cùng với thông báo tới QStash. Vì vậy QStash gửi tin nhắn đến điểm cuối này. Ngoài ra, bạn có thể xác định một chủ đề cho phép nhóm một hoặc nhiều điểm cuối vào một không gian tên duy nhất. Nhờ tính năng trừu tượng hóa chủ đề, bạn có thể sửa đổi điểm cuối mà không cần chạm vào việc triển khai phụ trợ. Bên dưới gửi yêu cầu đến chủ đề user-apis . Một bản sao của tin nhắn sẽ được gửi đến từng điểm cuối.

Gửi tới điểm cuối
curl -XPOST \
 "https://qstash.upstash.io/v1/publish/https://example.com" \
 -H "Authorization: Bearer XXX" \
 -H "Content-Type: application/json" \
 -d "{ \"hello\" : \"world\" }"
Gửi chủ đề
curl -XPOST \
 "https://qstash.upstash.io/v1/publish/user-apis" \
 -H "Authorization: Bearer XXX" \
 -H "Content-Type: application/json" \
 -d "{ \"hello\" : \"world\" }"

Lịch trình

QStash có thể lặp lại việc gửi nhiệm vụ của bạn theo lịch trình. Đặt biểu thức CRON làm giá trị cho tiêu đề Upstash-Cron. Ví dụ dưới đây hướng dẫn QStash gọi API mỗi phút.

curl -XPOST \
 'https://qstash.upstash.io/v1/publish/https://example.com'
 -H 'Authorization: Bearer XXX' \
 -H "Content-type: application/json" \
 -H "Upstash-Cron: * * * * *" \
 -d '{ "hello": "world" }' \

Thêm

  • Thử lại:Nếu API của bạn không phản hồi với mã trạng thái thành công, QStash sẽ thử lại yêu cầu để đảm bảo mọi thư sẽ được gửi.
  • Độ trễ:Trì hoãn việc gửi tin nhắn lên tới 90 ngày.
  • Loại bỏ trùng lặp:Bạn có thể ngăn các thư trùng lặp bằng cách sử dụng Id chống trùng lặp hoặc loại bỏ trùng lặp dựa trên nội dung tự động.
  • Ký yêu cầu:API của bạn phải ở chế độ công khai. Bạn có thể xác minh tính xác thực của từng yêu cầu gửi đến bằng cách xác minh chữ ký.
  • SDK JS/TS:API REST rất đơn giản, nhưng nếu bạn đang xây dựng trên JS/TS thì SDK của chúng tôi thậm chí còn đơn giản hơn.

Lời kết

QStash nhằm mục đích cung cấp dịch vụ nhắn tin tốt nhất cho thế giới không có máy chủ. Đây là bản phát hành đầu tiên của chúng tôi, vì vậy chúng tôi rất cần phản hồi và đóng góp của bạn. Kiểm tra tài liệu QStash. Hãy liên hệ với chúng tôi trên Discord và Twitter để nhận xét và đề xuất của bạn..