Message Queue Là Gì

     

Message Queue là một thành phần quan trọng thường áp dụng trong các hệ thống lớn (Ví dụ Yahoo, Tiki) hoặc phần mềm theo kiến trúc microservice.

Bạn đang xem: Message queue là gì

Tuy vậy, giả dụ không gặp các dự án công trình có hệ thống lớn thì sẽ không biết rõ Message Queue là gì, được áp dụng với mục tiêu gì!


*
*

Ý nghĩa của queue (hàng đợi) là nó triển khai việc lấy message theo phép tắc vào trước hoá ra trước ( First In First Out ).

Một hệ thống Message Queue thường có những thành phần sau:

Message: tin tức được gửi (có thể là text, binary hoặc JSON)Message Queue: vị trí chứa hầu như message này, có thể chấp nhận được producer và consumer có thể trao đổi với nhauProducer: Service tạo nên thông tin, cung cấp tin vào message queueConsumer: Service dìm message từ message queue và xử lýMột service gồm thể vừa có tác dụng producer, vừa có tác dụng consumer 

Một số Message queue được dùng hiện nay:

RabitMQActiveMQSQSZeroMQMSMQIronMQKinesisRocketMQ
*

Thực tế Message Queue được sử dụng thế nào?

Trong những hệ thống dùng phong cách xây dựng microservice, ta áp dụng message queue để giúp các service contact với nhau một cách bất đồng bộ. Service X làm xong xuôi việc rất có thể gửi message queue để service Y kích hoạt xử lý.

Ví dụ: có một trang web chất nhận được người dùng tải video từ hệ thống thì nó sẽ có các nhân tố sau:

API service: là một trong producer. Nhận thông tin (URL Video) trường đoản cú phía người dùng và đưa thông tin này vào message queueProcessing Service: Vừa là consumer vừa là producer. Service này gọi URL đoạn clip từ message queue, bắt đầu tải file video về với encode lại, lưu lại vào server. Sau khi encode xong, nó chuyển URL của file đã encode vào message queueUploading Service: Khi nhận thấy message từ processing server, nó đã upload video đó lên Amazon S3
*

Tại sao lại áp dụng Message Queue?

Ưu điểm về Message Queue

Dễ scaling hệ thống: vào giờ cao điểm, những truy vấn, ta có thể tăng con số consumer lên để xử lý được rất nhiều messege hơn. Lúc không cần ta có thể giảm lại.

Xem thêm: To Reach A Consensus Là Gì, Học Từ Vựng Qua Bản Tin Ngắn: Consensus (Voa)

Đảm bảo duration/recovery: vì message đã có được lưu vào queue, lúc 1 service đang xử trí nhưng bị crash, ta không lo ngại bị mất data vì có thể lấy message từ trong queue ra với retry. Trong một hệ thống có nhiều consumer, trường hợp vài consume crash cũng không làm cho crash cả hệ thốngHỗ trợ rate limit, batch process: vào trường hợp khả năng xử lý của khối hệ thống có hạn (chỉ hoàn toàn có thể xử lý 100 lượt release/s) mà đề xuất xử lý 10000 lượt release. Với message queue, ta rất có thể lấy từng lượt release chưa xử trí trong queue ra cách xử lý từ từ, không sợ bị mất.
*

Điểm cần để ý về Message Queue

Làm khối hệ thống phức tạp hơn: Thêm message queue sẽ tăng tính phức tạp của hệ thống. Ta nên biết rõ message nào giữ hộ vào queue nào, ai giữ hộ ai nhận. Dịp debug sống local sẽ khó khăn hơnPhải có Monitor Queue: đề xuất có các biện phát theo dõi (monitor), để bảo đảm an toàn lượng message queue không quá nhiều, làm đầy queue. Queue tốt nhất là queue luôn rỗng, hoặc số lượng message vào queue không tăng lên nhiều (message giữ hộ vào queue đều bị consume không còn trong thời hạn ngắn nhất)Phải bao gồm message format: Để gửi/nhận tự 2 phía producer và consumer thống tốt nhất format với nhau. Trường hợp 1 bên biến hóa sẽ làm bên đó không gọi được dữ liệu.

Xem thêm: Bình Xịt Bọt Tẩy Rửa Đa Năng Vệ Sinh Bếp Kitchen Cleaner, Chai Xịt Bọt Tuyết Nano Tẩy Vệ Sinh Bếp

Khó xử lý đồng bộ: không phải hệ thống nào cũng cần được tới message queue. Nếu như như service A call service B, theo vẻ ngoài đồng bộ, cần hiệu quả xử lý ngay, ta nên dùng Rest hoặc gRPC sẽ giỏi hơn.

Bài viết gốc được đăng cài tại lcdung.top