DEV Community

Cover image for Google Pub/Sub: Hướng Dẫn Toàn Diện về Nhắn Tin Đám Mây
Sebastian Petrus
Sebastian Petrus

Posted on • Originally published at apidog.com

Google Pub/Sub: Hướng Dẫn Toàn Diện về Nhắn Tin Đám Mây

Google Pub Sub (Google Cloud Pub/Sub) là dịch vụ nhắn tin thời gian thực, hoàn toàn được quản lý, cho phép giao tiếp không đồng bộ giữa các ứng dụng và dịch vụ độc lập. Ở mức cốt lõi, nó hỗ trợ tách rời hệ thống với mô hình publish-subscribe đáng tin cậy, mở rộng và toàn cầu cho các kiến trúc hướng sự kiện—rất phù hợp cho ứng dụng đám mây hiện đại, thu nạp và phân phối sự kiện quy mô lớn.

Dùng thử Apidog ngay hôm nay

Dù bạn xây dựng microservices, pipeline phân tích hay tích hợp hệ thống phân tán, nắm chắc Google Pub Sub là yêu cầu quan trọng cho mọi lập trình viên cloud-native.

Google Pub Sub Hoạt Động Như Thế Nào: Các Khái Niệm Chính & Kiến Trúc

Google Pub Sub dựa trên mô hình nhắn tin publish-subscribe (pub/sub). Một bên xuất bản gửi tin nhắn tới một chủ đề, các bên đăng ký nhận tin nhắn đó một cách không đồng bộ.

Các Thành Phần Chính của Google Pub Sub

  • Chủ đề (Topic): Tài nguyên mà bên xuất bản gửi tin nhắn vào.
  • Đăng ký (Subscription): Luồng tin nhắn từ một chủ đề tới các bên đăng ký.
  • Bên xuất bản (Publisher): Ứng dụng gửi tin nhắn vào chủ đề.
  • Bên đăng ký (Subscriber): Ứng dụng/dịch vụ nhận tin nhắn từ đăng ký.

Luồng Tin Nhắn

  1. Bên xuất bản gửi tin nhắn tới một chủ đề.
  2. Một hoặc nhiều đăng ký gắn với chủ đề đó.
  3. Bên đăng ký lấy (pull) hoặc nhận (push) tin nhắn từ đăng ký.
  4. Subscriber xác nhận tin nhắn (ack) để đảm bảo phân phối ít nhất một lần (at-least-once delivery).
  • Pull: Ứng dụng chủ động kéo tin nhắn.
  • Push: Pub/Sub chủ động đẩy tin nhắn tới endpoint HTTP bạn cấu hình.

Độ Tin Cậy & Khả Năng Mở Rộng

Pub/Sub đảm bảo phân phối ít nhất một lần, lưu trữ dự phòng trên nhiều vùng, tự động mở rộng để xử lý hàng triệu tin nhắn/s—phù hợp cho big data, analytics & IoT.

Các Tính Năng Nổi Bật của Google Pub Sub

1. Serverless & Được Quản Lý Hoàn Toàn

Không cần lo server, cụm hay partition. Pub/Sub tự động scale, xử lý sẵn sàng và bền vững.

2. Khả Năng Sẵn Sàng Toàn Cầu

Hoạt động đa vùng, lý tưởng cho ứng dụng toàn cầu hoặc DR.

3. Chế Độ Phân Phối Linh Hoạt

Hỗ trợ cả push và pull, fan-out một-đến-nhiều.

4. Bảo Mật & Tuân Thủ

Dữ liệu mã hóa khi truyền và lưu trữ. Quyền kiểm soát qua IAM, chỉ dịch vụ được phép mới truy cập.

5. Phân Phối Theo Thứ Tự & Xử Lý Chính Xác Một Lần

Hỗ trợ sắp xếp tin nhắn theo key và tích hợp với Dataflow để đảm bảo xử lý exactly-once.

Thiết Lập Google Pub Sub: Hướng Dẫn Từng Bước

Thực hiện các thao tác sau để thiết lập Pub/Sub trong dự án của bạn.

1. Tạo Chủ Đề

gcloud pubsub topics create my-topic
Enter fullscreen mode Exit fullscreen mode

2. Tạo Đăng Ký

gcloud pubsub subscriptions create my-subscription --topic=my-topic
Enter fullscreen mode Exit fullscreen mode

3. Xuất Bản Tin Nhắn

gcloud pubsub topics publish my-topic --message="Hello, world!"
Enter fullscreen mode Exit fullscreen mode

4. Kéo Tin Nhắn

gcloud pubsub subscriptions pull my-subscription --auto-ack
Enter fullscreen mode Exit fullscreen mode

Bạn cũng có thể dùng thư viện máy khách Pub/Sub cho Java, Python, Node.js,... để nhúng vào code.

Ví dụ Python:

from google.cloud import pubsub_v1

# Xuất bản tin nhắn
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path('your-project-id', 'my-topic')
publisher.publish(topic_path, b'Hello, Pub/Sub!')

# Nhận tin nhắn
subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path('your-project-id', 'my-subscription')

def callback(message):
    print(f"Đã nhận: {message.data}")
    message.ack()

subscriber.subscribe(subscription_path, callback=callback)
Enter fullscreen mode Exit fullscreen mode

Các Trường Hợp Sử Dụng Thực Tế của Google Pub Sub

1. Microservices Hướng Sự Kiện

Giúp các service giao tiếp không đồng bộ, giảm phụ thuộc, tăng khả năng mở rộng.

2. Thu Nạp Dữ Liệu Phân Tích & Log

Streaming log/sự kiện từ nhiều nguồn vào BigQuery, Dataflow, v.v. qua Pub/Sub.

3. Luồng Dữ Liệu IoT

Hàng ngàn/millions thiết bị xuất bản dữ liệu cảm biến lên Pub/Sub, backend xử lý realtime.

4. Thông Báo Thời Gian Thực

Gửi thông báo realtime tới người dùng, cập nhật dashboard hoặc trigger workflow dựa vào sự kiện.

5. Điều Phối Quy Trình Làm Việc

Trigger, điều phối các bước workflow phân tán thông qua Pub/Sub mà không phụ thuộc chặt chẽ.

Tích Hợp Google Pub Sub với Phát Triển Hướng API

Để thiết kế API tương tác với Pub/Sub, hãy tận dụng các công cụ như Apidog. Apidog giúp bạn:

  • Thiết kế và tài liệu hóa API xuất bản/đăng ký chủ đề Pub/Sub.
  • Giả lập endpoint Pub/Sub để mô phỏng luồng tin nhắn khi phát triển.
  • Kiểm thử endpoint HTTP nhận tin nhắn push từ Pub/Sub, đảm bảo xử lý đúng dữ liệu đến.

Tích hợp Apidog vào quy trình giúp bạn thiết kế, giả lậpkiểm thử API kết nối Pub/Sub, tối ưu hóa phát triển và tăng tốc go-to-market.

Các Thực Tiễn Tốt Nhất Khi Sử Dụng Google Pub Sub

1. Tải Trọng Tin Nhắn Có Cấu Trúc

Dùng định dạng JSON/Protobuf thay vì plain text để tương tác & parse dễ dàng.

2. Bên Đăng Ký Idempotent

Thiết kế subscriber xử lý trùng lặp tin nhắn ổn định (at-least-once delivery có thể gửi lại).

3. Giám Sát & Cảnh Báo

Kết nối với Google Cloud Monitoring để theo dõi hàng đợi, độ trễ, lỗi và đảm bảo sức khỏe hệ thống.

4. Kiểm Soát Quyền Truy Cập

Dùng IAM phân quyền xuất bản/đăng ký ở mức tối thiểu cần thiết.

5. Phát Triển Hướng API Đầu Tiên

Xác định API Pub/Sub và schema tin nhắn sớm. Apidog giúp tài liệu hóa/chia sẻ định nghĩa cho team, đảm bảo đồng nhất và ít lỗi.

Các Tính Năng Nâng Cao: Sắp Xếp, Lọc & Chủ Đề Thư Chết

Sắp Xếp Tin Nhắn

Với trường hợp cần đảm bảo thứ tự nghiêm ngặt (ví dụ giao dịch tài chính), dùng sắp xếp theo key để mọi tin nhắn cùng khóa được phân phối đúng thứ tự.

Lọc Tin Nhắn

Đăng ký có thể lọc theo thuộc tính, chỉ nhận dữ liệu liên quan—giảm chi phí xử lý.

Chủ Đề Thư Chết (Dead-Letter Topics)

Cấu hình dead-letter topic để tách riêng các message không phân phối được, phục vụ kiểm tra hoặc xử lý lại.

Giá và Giới Hạn của Google Pub Sub

Chi phí dựa trên lượng dữ liệu thu nạp/phân phối, có gói miễn phí hào phóng (tới 10GB/tháng). Hạn mức: kích thước message tối đa 10MB, thông lượng và số topic/subscription trên mỗi dự án. Tham khảo bảng giá Google Cloud Pub/Sub để biết chi tiết cập nhật.

Ví Dụ Thực Tế: Xây Dựng Đường Ống Phân Tích Thời Gian Thực với Google Pub Sub

Ví dụ: Xây dựng nền tảng analytics web. Mỗi page view trên frontend được publish lên topic pageviews. Backend đăng ký chủ đề này, xử lý sự kiện và ghi dữ liệu tổng hợp vào BigQuery.

Quy trình:

  1. Frontend: Xuất bản payload JSON lên topic pageviews.
  2. Pub/Sub: Phân phối sự kiện đến subscription analytics-service.
  3. Backend subscriber: Pull message, xử lý, ghi BigQuery.
  4. Dashboard phân tích: Truy vấn BigQuery lấy chỉ số realtime.

Dùng Apidog bạn có thể thiết kế/tài liệu hóa các endpoint API publish/receive sự kiện, giả lập phản hồi để kiểm thử tích hợp frontend/backend.

Kết Luận: Nắm Vững Google Pub Sub cho Ứng Dụng Đám Mây Hiện Đại

Google Pub Sub là nền tảng vững chắc cho các kiến trúc đám mây hướng sự kiện, mở rộng linh hoạt. Thiết kế serverless, global và bảo mật khiến nó là giải pháp hàng đầu cho messaging realtime, thu nạp dữ liệu lớn và giao tiếp microservices.

Dù bạn thiết kế API, điều phối workflow hay xây dựng pipeline phân tích, Pub/Sub giúp tách rời hệ thống và thúc đẩy đổi mới. Kết hợp với công cụ API mạnh như Apidog, bạn đảm bảo ứng dụng hướng tin nhắn mạnh mẽ, tài liệu hóa tốt, dễ bảo trì.

Top comments (0)