Giao tiếp dựa trên tin nhắn là một phương thức Giao tiếp giữa các quá trình (IPC) trong đó các quá trình trao đổi dữ liệu bằng cách gửi và nhận tin nhắn. Trong mô hình truyền thông này, quá trình gửi sẽ tạo một thông báo chứa dữ liệu được chia sẻ và truyền nó đến quá trình nhận. Quá trình nhận sau đó sẽ truy xuất tin nhắn và trích xuất thông tin cần thiết.
Cách tiếp cận này cung cấp một sự trừu tượng hóa rõ ràng cho quá trình giao tiếp, cho phép các quá trình trao đổi dữ liệu mà không cần chia sẻ trực tiếp không gian bộ nhớ. Giao tiếp dựa trên tin nhắn hỗ trợ cả kiểu giao tiếp đồng bộ (chặn) và không đồng bộ (không chặn), khiến nó phù hợp với nhiều kiến trúc hệ thống khác nhau.
Cách thức hoạt động của giao tiếp dựa trên tin nhắn
Quá trình giao tiếp dựa trên tin nhắn Quá trình người gửi Hàng đợi tin nhắn Quá trình người nhận 1. Gửi 2. Nhận hàng đợi phản hồi 3. Phản hồi 4. Các bước đọc:1. Người gửi tạo và gửi tin nhắn đến hàng đợi 2. Người nhận đọc tin nhắn từ hàng đợi 3. Người nhận xử lý và gửi phản hồi (tùy chọn)
Quá trình giao tiếp thực hiện theo các bước sau:
-
Quá trình gửi sẽ tạo một tin nhắn và chỉ định quy trình người nhận
-
Tin nhắn được đặt trong hàng đợi tin nhắn được liên kết với quá trình người nhận
-
Quá trình người nhận đọc tin nhắn từ hàng đợi
-
Quá trình người nhận xử lý tin nhắn và tùy ý gửi phản hồi
-
Tin nhắn phản hồi tuân theo cơ chế xếp hàng tương tự trở lại người gửi
Các kiểu truyền tin nhắn
Ưu điểm
-
Tính đơn giản và linh hoạt Cung cấp khả năng trừu tượng rõ ràng cho việc trao đổi dữ liệu với sự hỗ trợ cho cả giao tiếp đồng bộ và không đồng bộ
-
Các quy trình mô-đun vẫn độc lập mà không phụ thuộc vào bộ nhớ dùng chung, cho phép thiết kế và bảo trì hệ thống dễ dàng hơn
-
Tính độc lập của nền tảng Hoạt động trên các hệ điều hành và ranh giới mạng khác nhau
-
Hỗ trợ đồng bộ hóa Có thể triển khai các nguyên tắc đồng bộ hóa nguyên thủy như ngữ nghĩa và rào cản
-
Bảo mật Tin nhắn có thể được mã hóa và kiểm soát quyền truy cập để tăng cường bảo mật
-
Xử lý lỗi Cơ chế tích hợp để phát hiện và khôi phục từ các lỗi truyền tải
Nhược điểm
-
Chi phí hiệu suất Việc tạo, truyền và xếp hàng tin nhắn sẽ tăng thêm chi phí tính toán và bộ nhớ so với bộ nhớ dùng chung
-
Độ phức tạp triển khai Thiết kế và triển khai phức tạp hơn so với các phương pháp tiếp cận bộ nhớ dùng chung
-
Giới hạn về khả năng mở rộng Có thể không phù hợp với các tình huống giao tiếp có khối lượng lớn hoặc độ trễ thấp
-
Ràng buộc về kích thước tin nhắn Các giới hạn do hệ thống áp đặt đối với kích thước tin nhắn có thể yêu cầu phân mảnh đối với dữ liệu lớn
-
Tin nhắn về độ tin cậy khi gửi có thể bị mất hoặc bị hỏng, cần có cơ chế xử lý lỗi bổ sung
Các trường hợp sử dụng phổ biến
-
Hệ thống phân tán Giao tiếp giữa các tiến trình trên các máy khác nhau
-
Kiến trúc microservice Giao tiếp giữa các dịch vụ thông qua hàng đợi tin nhắn
-
Hệ thống nhà sản xuất-người tiêu dùng Tách rời nhà sản xuất dữ liệu khỏi người tiêu dùng
-
Hệ thống hướng sự kiện Truyền phát các sự kiện và thông báo giữa các thành phần
Kết luận
Giao tiếp dựa trên thông báo là một cơ chế IPC cơ bản cung cấp khả năng cách ly quy trình, tính linh hoạt và tính độc lập của nền tảng. Mặc dù có một số chi phí về hiệu năng so với bộ nhớ dùng chung, nhưng nó cung cấp tính mô-đun tốt hơn và cần thiết cho các hệ thống phân tán cũng như kiến trúc liên kết lỏng lẻo.