Tìm hiểu về các loại Messaging. Phân biệt Pub/Sub và Message base

Các giải pháp Message giúp đơn giản hóa việc phát triển ứng dụng bằng cách cung cấp một thành phần được tiêu chuẩn hóa, có thể tái sử dụng để xử lý mạnh mẽ các luồng dữ liệu, cho phép các nhà phát triển và kiến ​​trúc sư tập trung vào logic cốt lõi của các ứng dụng. Ngoài dữ liệu định tuyến, hệ thống Messaging cũng có thể cung cấp các khả năng ghi nhật ký, xử lý phân tán, kiểm soát luồng và khả năng phục hồi để cải thiện hiệu suất, khả năng mở rộng, khả năng quản lý và độ tin cậy.

Có 02 loại messaging được sử dụng phổ biến là Pub/Sub và Message Queue. Trong bài viết này chúng tôi sẽ phân tích sự khác biệt giữa 2 loại này.

Message Queue (Priority Queue)

Ứng trong các trường hợp:

  • Hệ thống phản quản lý nhiều tác vụ với các mức ưu tiên khác nhau
  • Người dùng khác nhau hoặc các tenant khác nhau được phục vụ với mức ưu tiên khác nhau

Case Study

  • Heap sort: được xử lý theo thuât toán hàng đợi ưu tiên
  • Hệ điều hành khi thực hiện tác vụ cân bằng tải hay điều khiển quá trình ngắt

Publisher/Subscriber

Ứng dụng trong các trường hợp:

  • Ứng dụng cần phải quảng bá broadcast thông tin cho 1 số lượng nhiều các consumer
  • Ứng dụng cần giao tiếp với một hay nhiều các ứng dụng hay dịch vụ độc lập phát triển sử dụng ngôn ngữ lập trình, nền tảng và giao thức khác nhau
  • Ứng dụng không yêu cầu thông tin gửi tới consumer đảm bảo tính thời gian thực hoặc gần thời gian thực
  • Ứng dụng được tích hợp thiết kế hỗ trợ đảm bảo tính nhất quán ( eventual consistency) cho dữ liệu sử dụng
  • Ứng dụng cần giao tiếp thông tin với nhiều consumer mà yêu cầu tính khả dụng và sẵn sàng khác nhau hoặc thời gian uptime khác nhau so với bên gửi

Không nên sử dụng trong các trường hợp:

  • Ứng dụng chỉ có một vài consumer cần thông tin khác biệt đáng kể từ ứng dụng Producing
  • Ứng dụng yêu cầu tương tác near realtime với consumer

Case study:

Hình bên dưới mô tả kiến trúc Enterprise sử dụng Service bus và Event Grid trong đó:

  • Service Bus để điều phối luông dữ liệu
  • Event Grid để làm notification của hệ thống con sub-system khi có sự kiện
Enterprise integration architecture

Công nghệ sử dụng Messaging

Không có gì ngạc nhiên khi xét đến mức độ cơ bản của Messaging đối với các ứng dụng theo hướng dữ liệu, có một số công nghệ hỗ trợ một số hình thức xếp hàng tin nhắn, nhắn tin đăng ký xuất bản hoặc cả hai.

Công nghệ như Apache ActiveMQ, Amazon SQS, IBM Websphere, RabbitMQ hay RocketMQ ban đầu được thiết kể sử dụng cho mục đích Message Queue

Các công nghê khác như Kakfa, Google Pub/Sub chủ yếu hỗ trợ dạng Publish/Subcribe Messaging.

Ngoài ra công nghệ mới như Apache Pulstar hỗ trợ cả 2 loại.

Việc xác định công nghệ nào là phù hợp nhất cho một trường hợp sử dụng cụ thể đòi hỏi bạn phải hiểu các yêu cầu thiết yếu cho trường hợp sử dụng đó – ví dụ: việc sắp xếp theo thứ tự có quan trọng hay không và liệu nhiều consumer có cần xử lý từng thông báo hay không. Mỗi công nghệ mang đến một tập hợp các tính năng và tối ưu hóa khác nhau cần được đánh giá dựa trên các yêu cầu đó. Điều quan trọng nữa để đánh giá các lựa chọn công nghệ là hiểu được mức độ dễ dàng phát triển ứng dụng, hiệu suất, khả năng phục hồi và các nhu cầu hoạt động liên quan đến các công nghệ khác nhau và cách chúng được triển khai.

Tham khảo:

https://dzone.com/articles/comparing-publish-subscribe-messaging-and-message

https://docs.microsoft.com/en-us/azure/architecture/patterns/publisher-subscriber

https://docs.microsoft.com/en-us/azure/architecture/patterns/priority-queue

Leave a Reply

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