Message queue là gì và nó quan trọng như thế nào trong kiến trúc microservice và các hệ thống lớn? Nó có vai trò quan trọng như thế nào trong thực tiễn? Cùng tìm hiểu nhé!
1. Message queue là gì?
Message queue có thể dịch là: hàng đợi tin nhắn. Nó sắp xếp các dữ liệu chuyển từ người gửi đến người nhận theo nguyên tắc FIFO (First In First Out) – vào trước ra trước. Nhờ có Message queue mà dữ liệu được xử lý tuần tự, quy tắc.
Các thành phần chính trong một hệ thống message queue bao gồm:
– Đầu tiên, không thể thiếu chính là Message, có tin nhắn, cần chuyển mới sinh ra hệ thống hàng đợi tin nhắn đúng không nào. Meassage ở đây có thể là văn bản (text), nhị phân (binary) hay JSON.
– Thứ hai là Meassage Queue: Đây là nơi các tin nhắn được chuyển đến, nó diễn ra sự trao đổi giữa producer và consumer.
– Thứ ba, Producer: đây chính là bên service tạo ra thông tin, bên chuyển thông tin và hệ thống Message Queue.
– Cuối cùng là Consumer: Có người gửi thì có người nhận phải không nào. Đây là Service nhận tin và xử lý thông tin từ hệ thống.
Hiện nay, trên thị trường có nhiều Message queue, điển hình là Kafka, RabitMQ, Pulsar, Activer MQ, SQS, MSMQ.
2. Biết Message Queue là gì rồi vậy nó hoạt động ra sao?
Trong kiến trúc microservice, message queue được vận dụng để liên hệ một cách không đồng bộ các service với nhau. Service A làm xong có thể gửi tin nhắn để service B kích hoạt xử lý kịp thời.
Ví dụ cụ thể như sau: Trang web X có thể cho bạn thực hiện lệnh tải video từ hệ thống thì nó sẽ bao gồm:
– API service: Là 1 producer có nhiệm vụ nhận thông tin (liên kết video) từ người dùng để chuyển đến message queue chờ xử lý.
– Processing Service: Bộ phận này khá đa nhiệm, vùa là producer vừa có vai trò của consumer. Sau khi tiếp nhận liên kết video vừa được API chuyển về Message queue nó sẽ bắt đầu tải tệp xuống, encode và lưu vào server. Sau đó đưa đầu ra là liên kết video mới đã encode vào lại message queue.
– Uploading Service: Đây là công đoạn cuối cùng, sau khi nhận được tin từ bộ phận processing, nó sẽ up video lên Amazon S3.
3. Ưu – Nhược điểm của message queue
3.1. Ưu điểm:
– Đây là thành phần không thể thiếu cho các hệ thống xử lý thông tin lớn, đặc biệt trong kiến trúc Microservice. Nói một chút về microservice, đây là kiến trúc phần mềm được các nhà phát triển thế giới tin dùng để mở rộng cấu trúc dữ liệu. Ví dụ điển hình như các ông lớn mang tên Amazon, Netflix, Spotify… Vậy Message queue có tác vụ nổi bật gì mà nó lại trở thành bộ phận quan trọng của Microservice?
– Tính năng dự phòng: Để đảm bảo không xảy ra những lần bỏ qua đáng tiếc không tìm thấy dữ liệu, Message queue sẽ chỉ loại bỏ khi tin nhắn được xác nhận. Như vậy, tin nhắn không bị mất và sau sẽ được xử lý.
– Khả năng phục hồi: Ví dụ bạn có 1 hệ thống gồm 2 microservice, 1 để gửi mail cho khách, cái còn lại để xử lý đơn hàng. Nếu hàng đợi thông báo 1 email cần được gửi đi có nghĩa là kể cả hệ thống email không hoạt động thì dịch vụ xử lý đơn hàng vẫn làm nhiệm vụ. Tới khi email trở lại, nó sẽ đọc tin nhắn và gửi email.
– Nhắn tin không đồng bộ: Trong trường hợp ứng dụng của bạn không yêu cầu phản hồi đúng, các consumer vẫn nhận và xử lý theo logic và tốc độ riêng của nó.
– Khả năng mở rộng: Message queue cho phép tách hệ thống của mình thành nhiều microdevices khác nhau và chia tỷ lệ chúng theo ý mình.
3.2. Nhược điểm:
Bên cạnh những ưu điểm trên, message queue có 3 nhược điểm sau mà bạn cần lưu ý khi sử dụng:
– Hệ thống phức tạp hệ thống hơn, cần có message format. Khi thêm message queue cần biết rõ message nào gửi cho queue nào, người nhận là ai người gửi là ai phải đảm bảo chính xác. Để gửi hay nhận, thì cả phía producer và consumer phải áp dụng chung 1 format. Hơn nữa nếu không chẳng may 1 trong 2 bên thay đổi sẽ không nhận được dữ liệu.
– Khó xử lý đồng bộ: Không phải lúc nào hệ thống cũng cần đến message queque. Nhiều khi hệ thống cần các cơ chế khác để xử lý đồng bộ service thì hàng đợi tin n0hắn lúc này không phù hợp.
– Phải có Monitoring Queue: Đây là điều kiện cần có để theo dõi, đảm bảo hàng đợi tin nhắn không quá nhiều, làm đầy queue. Trạng thái tốt nhất là luôn giữ cho queue rỗng hoặc số lượng không tăng (quá trình gửi nhận luôn được diễn ra đúng quy trình)
4. Phân loại Message queue
Ngoài việc biết message queue là gì, cách thức hoạt động thì nắm được phân loại cũng là phần cực kỳ quan trọng. Có 2 kiểu hàng đợi tin nhắn với cơ chế hoạt động khác nhau để xử lý nhiều các service độc lập, đó là:
– Point –to –point: Kiểu này bao gồm 1 hàng đợi tin nhắn và một consumer duy nhất để xử lý các tin nhắn trong một hàng đợi.
– Publisher – Subscriber: Định dạng này có nhà sản xuất (publisher) gửi dữ liệu đến hàng đợi và tất cả người đăng ký (subscriber) vào cùng một chủ đề (topic) đều sẽ nhận được tin nhắn
Trên đây là những vấn đề cần biết về Message queue là gì để nghiên cứu và áp dụng nó vào hệ thống. Hy vọng bài viết đã cung cấp đủ nội dung mà bạn đang tìm kiếm. Hãy chia sẻ thêm những kiến thức hoặc thắc mắc của bạn vào phần bình luận bên dưới nhé.