Apache Kafka và RabbitMQ

RabbitMQ và Apache Kafka đều cho phép nhà cung cấp có thể gửi các thông điệp đến người sử dụng. Nhà cung cấp là các ứng dụng gửi thông tin trong khi người sử dụng là các ứng dụng đăng ký nhận và xử lý thông tin.





RabbitMQ và Apache Kafka gửi thông điệp từ nhà cung cấp sang người sử dụng theo nhiều cách khác nhau. Với RabbitMQ thì đây là một trình truyền tải thông điệp đa dụng, nó ưu tiên việc phân phối thông điệp toàn diện có kiểm soát. Kafka lại là một nển tảng truyền tải các topic phân tán. Kafka hỗ trợ trao đổi lượng dữ liệu lớn và liên tục theo thời gian thực.

RabbitMQ và Apache Kafka được thiết cho các mục đích sử dụng khác nhau vì thế các thông điệp của chúng cũng được xử lý khác nhau.

Cách tiếp cận của RabbitMQ:


RabbitMQ broker cho phép truyền tải thông điệp với độ trễ thấp và phân bổ thông điệp phức tạp với các thành phần:"exchange" nhận các thông điệp (message) từ nhà cung cấp (publisher) và phân bổ chúng.
"queue" là nơi lưu trữ các thông điệp (message) từ "exchange" và gửi chúng đến người dùng cuối (consumers).
"binding" là một đường dẫn kết nối "exchange" và "broker"




Cách tiếp cận của Apache Kafka:


Kafka cluster cung cấp khả băng xử lý luồng thông lượng cao với một kiến trúc phức tạp hơn với các thành phần chính sau:Kafka "broker" là một máy chủ kafka cho phép các nhà cung cấp (producers) truyền dữ liệu đến người sử dụng (consumers). Kafka "broker" chứa các topic và phân vùng tương ứng của chúng.
  • "Topic" là một kho lưu trữ dữ liệu thực hiện nhóm các dữ liệu tương tự trong một trình truyền tải kafka.
  • "Partition" là một kho lưu trữ dữ liệu nhỏ hơn trong một "topic" mà người sử dụng (consumer) đăng ký nhận.
  • "ZooKeeper" là một phần mềm đặc biệt quản lý Kafka clusters và partitions để cung cấp luồng có khả năng chịu lỗi. "ZooKeeper" có thể được thay thế bằng giao thức Apache Kafka Raft (KRaft).

Ứng dụng của RabbitMQ trong thực tế:

Trong ứng dụng này solution microservice sử dụng MassTransit
như một thư viện phân phối các thông điệp giữa các micro service. Đối với RabbitMQ thì các thông điệp này được quản lý bới các queue.


Các bạn có thể xem kỹ hơn trong template nuget.

Ứng dụng của Apache Kafka trong thực tế:

Trong ứng dụng này solution microservice sử dụng MassTransit
như một thư viện phân phối các thông điệp giữa các micro service. Đối với Apache Kafka thì các thông điệp này được phân phối tới các topic.


Các bạn có thể xem kỹ hơn trong template nuget

Nhận xét