Cloud Pub/Sub – How Does It Work?

4 min read

Cloud Pub/Sub hoạt động dựa trên mô hình publish-subscribe (xuất bản và đăng ký), trong đó một publisher (nhà xuất bản) gửi tin nhắn đến một topic (chủ đề), và một hoặc nhiều subscriber (người đăng ký) nhận các tin nhắn từ chủ đề đó. Dưới đây là cách hoạt động của nó chi tiết hơn

Các thành phần chính trong Cloud Pub/Sub:

Publisher (Nhà xuất bản):

  • Là ứng dụng hoặc dịch vụ gửi tin nhắn đến một chủ đề Pub/Sub. Nhà xuất bản không cần biết về các người đăng ký.
  • Nhà xuất bản gửi tin nhắn vào một chủ đề thông qua các yêu cầu API.

Topic (Chủ đề):

  • Chủ đề là tài nguyên được đặt tên, nơi mà các nhà xuất bản gửi tin nhắn.
  • Chủ đề hoạt động như một hàng đợi tin nhắn, nhận tin nhắn từ các nhà xuất bản và giữ chúng cho đến khi được xử lý bởi người đăng ký.
  • Một chủ đề có thể có nhiều người đăng ký và mỗi người đăng ký có thể xử lý các tin nhắn song song.

Subscriber (Người đăng ký):

  • Là ứng dụng hoặc dịch vụ nhận các tin nhắn từ chủ đề.
  • Người đăng ký có thể nhận tin nhắn theo một trong hai cách: pull (kéo tin nhắn từ chủ đề) hoặc push (chủ đề gửi tin nhắn đến một điểm cuối HTTP đã cấu hình sẵn).
  • Người đăng ký phải xác nhận việc nhận tin nhắn sau khi xử lý. Nếu không xác nhận, Pub/Sub sẽ gửi lại tin nhắn cho người đăng ký.

Subscription (Đăng ký):

  • Đăng ký định nghĩa cách mà người đăng ký nhận tin nhắn từ một chủ đề.
  • Bạn có thể có nhiều đăng ký cho cùng một chủ đề, cho phép nhiều người đăng ký nhận bản sao của cùng một tin nhắn.
  • Đăng ký có thể là push hoặc pull:
    • Pull subscription: Người đăng ký sẽ định kỳ kéo tin nhắn từ chủ đề.
    • Push subscription: Pub/Sub sẽ đẩy tin nhắn đến một điểm cuối HTTP đã được cấu hình.

Quy trình hoạt động của Cloud Pub/Sub:

Xuất bản tin nhắn:

  • Nhà xuất bản gửi tin nhắn đến một chủ đề thông qua yêu cầu xuất bản. Tin nhắn có thể ở bất kỳ định dạng nào (JSON, XML, v.v.).
  • Pub/Sub lưu trữ tin nhắn trong chủ đề cho đến khi người đăng ký xử lý thành công.

Gửi tin nhắn đến người đăng ký:

  • Mô hình Pull: Người đăng ký kéo tin nhắn từ đăng ký. Người đăng ký có trách nhiệm yêu cầu tin nhắn và xử lý chúng khi cần thiết.
  • Mô hình Push: Pub/Sub đẩy tin nhắn đến một điểm cuối của người đăng ký. Người đăng ký nhận tin nhắn một cách bất đồng bộ.

Xác nhận tin nhắn:

  • Sau khi người đăng ký xử lý thành công một tin nhắn, họ gửi yêu cầu xác nhận tới Pub/Sub, thông báo rằng tin nhắn đã được tiêu thụ thành công.
  • Nếu Pub/Sub không nhận được xác nhận trong một khoảng thời gian nhất định, tin nhắn sẽ được gửi lại.

Lưu trữ tin nhắn:

  • Cloud Pub/Sub giữ các tin nhắn chưa được xác nhận trong một khoảng thời gian cấu hình được. Mặc định, thời gian giữ tin nhắn là bảy ngày.
  • Sau khi một tin nhắn được xác nhận, nó sẽ bị xóa khỏi chủ đề.

Mở rộng quy mô:

  • Pub/Sub có thể mở rộng theo chiều ngang, nghĩa là có thể xử lý một lượng lớn tin nhắn từ nhiều nhà xuất bản và người đăng ký. Điều này cho phép hệ thống hỗ trợ các ứng dụng phân tán lớn và các hệ thống dựa trên sự kiện.

Chính sách xử lý tin nhắn lỗi (Dead-letter):

  • Nếu một tin nhắn không thể được gửi đi sau một số lần thử, Cloud Pub/Sub có thể chuyển tin nhắn đến một hàng đợi lỗi để phân tích hoặc xử lý lại.

Các tính năng chính của Cloud Pub/Sub:

Gửi tin nhắn theo thời gian thực: Tin nhắn được gửi gần như ngay lập tức tới người đăng ký sau khi xuất bản.

Lọc tin nhắn: Người đăng ký có thể cấu hình bộ lọc tin nhắn để chỉ nhận những tin nhắn cụ thể từ chủ đề.

Nhiều đăng ký: Một chủ đề có thể có nhiều đăng ký, cho phép cùng một tin nhắn được xử lý bởi các dịch vụ khác nhau song song.

Khả năng sẵn sàng toàn cầu: Cloud Pub/Sub hoạt động toàn cầu, cho phép giao tiếp giữa các khu vực và trung tâm dữ liệu khác nhau.

Ví dụ về trường hợp sử dụng:

Giả sử bạn đang xây dựng một ứng dụng dữ liệu thời tiết. Hệ thống hoạt động như sau:

  1. Nhà xuất bản gửi dữ liệu thời tiết (ví dụ: nhiệt độ, độ ẩm) đến một chủ đề Pub/Sub có tên weather-updates.
  2. Người đăng ký (ví dụ: một bảng điều khiển thời gian thực) đăng ký với chủ đề và xử lý các cập nhật thời tiết đến.
  3. Nếu người đăng ký không xác nhận được một tin nhắn (ví dụ: do sự cố mạng), Pub/Sub sẽ tự động gửi lại tin nhắn.
  4. Một người đăng ký khác (ví dụ: hệ thống cảnh báo thời tiết) cũng đăng ký với cùng một chủ đề và nhận bản sao của dữ liệu, cho phép nó gửi thông báo nếu có hiện tượng thời tiết cực đoan.

Ref: https://cloud.google.com/pubsub/docs/overview

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *