Truyền thông dựa trên thông điệp là phương pháp Inter-Process Communication (IPC) nơi tiến trình trao đổi dữ liệu bằng gửi và nhận thông điệp. Trong mô hình này, tiến trình gửi tạo thông điệp chứa dữ liệu chia sẻ và truyền đến tiến trình nhận. Tiến trình nhận sau đó lấy thông điệp và trích xuất thông tin cần thiết.
Cách tiếp cận này cung cấp trừu tượng sạch cho giao tiếp tiến trình, cho phép trao đổi dữ liệu không chia sẻ bộ nhớ trực tiếp. Truyền thông dựa trên thông điệp hỗ trợ cả đồng bộ (blocking) và bất đồng bộ (non-blocking), phù hợp nhiều kiến trúc hệ thống.
Cách Truyền Thông Dựa Trên Thông Điệp Hoạt Động
Truyền Thông Dựa Trên Thông Điệp
Tiến trình Gửi Thông điệp Hàng đợi Thông điệp Tiến trình Nhận
1. Gửi 2. Nhận
Hàng đợi Phản hồi 3. Phản hồi 4. Đọc
Các bước:
1. Tiến trình gửi tạo và gửi thông điệp đến hàng đợi
2. Tiến trình nhận đọc thông điệp từ hàng đợi
3. Tiến trình nhận xử lý và gửi phản hồi (tùy chọn)
Quy trình truyền thông theo các bước:
- Tiến trình gửi tạo thông điệp và chỉ định tiến trình nhận
- Thông điệp đặt vào hàng đợi liên kết với tiến trình nhận
- Tiến trình nhận đọc thông điệp từ hàng đợi
- Tiến trình nhận xử lý thông điệp và tùy chọn gửi phản hồi
- Thông điệp phản hồi theo cùng cơ chế hàng đợi về người gửi
Loại Truyền Thông Điệp
| Loại | Mô tả | Đặc điểm |
|---|---|---|
| Đồng bộ (Synchronous) | Giao tiếp chặn | Người gửi chờ người nhận lấy thông điệp |
| Bất đồng bộ (Asynchronous) | Giao tiếp không chặn | Người gửi tiếp tục thực thi sau gửi |
| Trực tiếp (Direct) | Tiến trình giao tiếp trực tiếp | Đặt tên rõ ràng người gửi/nhận |
| Gián tiếp (Indirect) | Giao tiếp qua mailbox/port | Thông điệp gửi đến mailbox chung |
Ưu Điểm
- Đơn giản và Linh hoạt: Cung cấp trừu tượng sạch trao đổi dữ liệu với hỗ trợ đồng bộ và bất đồng bộ
- Mô-đun: Tiến trình độc lập không phụ thuộc bộ nhớ chung, dễ thiết kế và bảo trì hệ thống
- Độc lập nền tảng: Hoạt động cross-OS và ranh giới mạng
- Hỗ trợ đồng bộ: Có thể triển khai primitive đồng bộ như semaphore và barrier
- Bảo mật: Thông điệp có thể mã hóa và kiểm soát truy cập
- Xử lý lỗi: Cơ chế built-in phát hiện và phục hồi lỗi truyền
Nhược Điểm
- Chi phí hiệu năng: Tạo, truyền, hàng đợi thông điệp thêm overhead tính toán và bộ nhớ so với shared memory
- Độ phức tạp triển khai: Phức tạp hơn thiết kế và implement so với shared memory
- Giới hạn mở rộng: Có thể không phù hợp giao tiếp volume cao hoặc low-latency
- Ràng buộc kích thước thông điệp: Giới hạn hệ thống về size thông điệp có thể yêu cầu fragmentation cho dữ liệu lớn
- Độ tin cậy giao hàng: Thông điệp có thể mất hoặc hỏng, cần cơ chế xử lý lỗi thêm
Trường Hợp Dùng Phổ Biến
- Hệ thống phân tán: Giao tiếp giữa tiến trình trên máy khác nhau
- Kiến trúc Microservices: Giao tiếp service-to-service qua hàng đợi thông điệp
- Hệ thống Producer-Consumer: Tách biệt producer dữ liệu từ consumer
- Hệ thống Event-Driven: Phát sự kiện và thông báo giữa component
Kết Luận
Truyền thông dựa trên thông điệp là cơ chế IPC cơ bản cung cấp cách ly tiến trình, linh hoạt, và độc lập nền tảng. Mặc dù gây overhead hiệu năng so với shared memory, nó cung cấp mô-đun tốt hơn và thiết yếu cho hệ thống phân tán và kiến trúc lỏng lẻo.
