RabbitMQ được giải thích trong 5 phút hoặc ít hơn

Spread the love

Hôm nay chúng ta sẽ xem cách tăng tốc thời gian tải trang của bạn bằng cách thực hiện xử lý nặng nhất một cách không đồng bộ, tất cả được quản lý rất đơn giản nhờ RabbitMQ.

Sự ổn định và tốc độ của một ứng dụng hoặc trang web chắc chắn là một trong những yếu tố quan trọng nhất đối với người dùng. Ai chưa bao giờ rời khỏi một trang web trước khi nhìn thấy trang đầu tiên vì mất quá nhiều thời gian?

RabbitMQ là gì

RabbitMQ là một nhà môi giới nhắn tin nguồn mở, phân tán và có thể mở rộng, đóng vai trò trung gian để giao tiếp hiệu quả giữa nhà sản xuất và người tiêu dùng.

RabbitMQ triển khai giao thức nhắn tin lớp ứng dụng AMQP, giao thức này tập trung vào việc truyền tin nhắn không đồng bộ với đảm bảo gửi thông qua xác nhận nhận tin nhắn từ nhà môi giới đến nhà sản xuất và từ người tiêu dùng đến nhà sản xuất.

RabbitHQ hoạt động như thế nào

Nói một cách đơn giản, RabbitMQ định nghĩa các hàng đợi sẽ lưu trữ các tin nhắn được gửi bởi nhà sản xuất cho đến khi các ứng dụng sử dụng nhận được tin nhắn và xử lý nó. Nó cho phép chúng ta thiết kế và thực hiện các hệ thống phân tán, trong đó một hệ thống được chia thành các mô-đun độc lập giao tiếp với nhau thông qua các thông điệp.

Giống như tất cả các giao tiếp, chúng tôi cần một nhà sản xuất, một tin nhắn và một người nhận. Ở giữa chiếc bánh là RabbitMQ, đây sẽ là nơi chứa tin nhắn đang chờ người nhận.

Hãy hiểu rõ hơn về cách thức hoạt động của nó bằng cách biết các loại trao đổi đại diện cho việc trao đổi tin nhắn.

Các loại trao đổi

Thông qua trao đổi, bất cứ khi nào chúng tôi gửi tin nhắn qua RabbitMQ, chúng tôi không gửi trực tiếp đến hàng đợi; để các hệ thống khác đọc được, chúng tôi gửi nó đến một sàn giao dịch chịu trách nhiệm chuyển tiếp tin nhắn đến các hàng đợi khác nhau.

Tín dụng hình ảnh: CloudAQMP

Các loại trao đổi là Trực tiếp, Fanout, Chủ đề và Độc giả.

Trao đổi trực tiếp

Giả sử một nhà sản xuất cần đưa ra một thông báo xác nhận mua hàng cho ba người tiêu dùng. Nghĩa là, hệ thống cần liên lạc với ba hệ thống khác để thực hiện giao dịch mua.

Vì RabbitMQ gửi tin nhắn riêng biệt đến từng hàng đợi nên sẽ có động lực để khiến các hệ thống khác này nhận tin nhắn trực tiếp.

Thông thường, trao đổi chuyển tiếp tin nhắn đến hàng đợi, nhưng chúng tôi thường không muốn tin nhắn của mình được gửi đến tất cả các hàng đợi. Do đó, có một số điều kiện mà chúng tôi có thể áp dụng để thực hiện trao đổi.

  Phần mềm giám sát cổng chuyển mạch tốt nhất để “xem” lưu lượng truy cập thực tế

Vì vậy, bạn có thể gửi tin nhắn của mình cho chỉ một người tiêu dùng; thay vì được gửi đến mọi người.

Khóa liên kết: Để kết nối một hàng đợi với một sàn giao dịch, bạn cần tạo một liên kết, mối quan hệ giữa hàng đợi và một sàn giao dịch, giống như một trình kết nối.

Khóa định tuyến: Trong liên kết này, chúng ta cũng có thể tạo một phần tử được gọi là khóa định tuyến, nói cách khác, là khóa để chuyển tiếp thư của chúng ta đến một hàng đợi cụ thể.

Nếu bạn có khóa định tuyến X, khóa định tuyến Y và khóa định tuyến Z, chẳng hạn, tin nhắn có khóa định tuyến Y sẽ đi qua hàng đợi Y và được gửi trực tiếp đến người tiêu dùng mà bạn đã xác định để nhận tin nhắn.

Bằng cách này, chúng tôi có thể có một số hàng đợi được kết nối với một sàn giao dịch, nhưng đồng thời, chúng cũng có thể có các mối quan hệ khác nhau với các sàn giao dịch bằng cách sử dụng khóa định tuyến.

Trao đổi fanout

Khi tin nhắn được gửi đến sàn giao dịch, nó sẽ được gửi đến tất cả các hàng đợi được kết nối với nó. Vì vậy, nếu bạn có 10 hàng đợi được kết nối với một trao đổi fanout, thì tất cả các hàng đợi sẽ nhận được thông báo đã được gửi.

chủ đề trao đổi

Đó là một trong những trao đổi linh hoạt nhất, cho phép chúng tôi gửi tin nhắn theo chủ đề. Và dựa trên cách bạn đặt tên cho các khóa định tuyến, có thể tạo ra các mẫu quy tắc và mối quan hệ giữa các hệ thống.

Ví dụ: khóa định tuyến (x.*); khóa định tuyến(*.z); khóa định tuyến (*.y.*).

AQMP trong RabbitMQ là gì

AMQP (Giao thức xếp hàng tin nhắn nâng cao) là một giao thức nhắn tin mở được sử dụng để xác định việc vận chuyển tin nhắn giữa nhiều ứng dụng. Nó tương tự như các giao thức HTTP và TCP ở chỗ nó là một giao thức cấp dây, ngoại trừ việc nó cho phép vận chuyển không đồng bộ.

RabbitMQ đã chọn triển khai AMQP vì một số lý do. Đầu tiên là giao thức này được mô tả như một tiêu chuẩn cho phần mềm trung gian, không giống như JMS, định nghĩa API.

Một tập đoàn quốc tế, bao gồm các công ty lớn như Red Hat, Cisco Systems và Microsoft, đã viết Thông số kỹ thuật AMQP này. Thứ hai là khả năng tương tác của giao thức này, cho phép bất kỳ ứng dụng nào triển khai AMQP giao tiếp với nhà môi giới AMQP.

AMQP không phải là giao thức duy nhất được sử dụng bởi RabbitMQ. Hình ảnh bên dưới đại diện cho tất cả các giao thức, ngôn ngữ và API được RabbitMQ triển khai và/hoặc hỗ trợ.

Các tính năng tốt nhất của RabbitMQ

Ngoài việc cho phép tích hợp các ứng dụng khác nhau thông qua các tin nhắn một cách không đồng bộ và từ các vị trí khác nhau, RabbitMQ còn cung cấp cho chúng ta các tính năng khác khiến nó trở nên rất phổ biến trong thế giới của các nhà môi giới nhắn tin:

  Cách xuất và nhập máy ảo trong VMware Workstation

Lưu trữ đáng tin cậy

RabbitMQ kết hợp một số tính năng cho phép nó đảm bảo gửi tin nhắn. Trong số này, nó cung cấp dung lượng lưu trữ khi không có người tiêu dùng nào có thể nhận được tin nhắn. Nó cho phép người tiêu dùng chấp nhận việc gửi tin nhắn để đảm bảo rằng nó đã được xử lý thành công.

Nếu quá trình xử lý không thành công, RabbitMQ cho phép thông báo được xếp hàng đợi lại để được sử dụng bởi một phiên bản khác của người tiêu dùng hoặc được xử lý lại bởi cùng một người tiêu dùng đã thất bại ban đầu khi khôi phục.

RabbitMQ cũng đảm bảo thứ tự gửi tin nhắn; nghĩa là, chúng được tiêu thụ theo cùng thứ tự mà chúng đến trong hàng đợi RabbitMQ.

Tạo các cụm

Mặc dù RabbitMQ cung cấp hiệu suất tuyệt vời bằng cách xử lý hàng nghìn tin nhắn mỗi giây, nhưng đôi khi, nó cần có khả năng xử lý số lượng tin nhắn lớn hơn mà không ảnh hưởng đến hiệu suất của ứng dụng.

Đối với điều này, RabbitMQ cho phép tạo các cụm để mở rộng giải pháp theo chiều ngang, điều này minh bạch cho cả nhà sản xuất và người tiêu dùng.

Hàng đợi có sẵn cao

Trong RabbitMQ, hàng đợi có thể được sao chép trên nhiều nút trong một cụm, đảm bảo rằng trong trường hợp nút bị lỗi hoặc ngừng hoạt động, nhà môi giới có thể tiếp tục nhận tin nhắn từ nhà sản xuất và gửi chúng đến người tiêu dùng thích hợp.

Định tuyến linh hoạt

Trong RabbitMQ, các quy tắc định tuyến linh hoạt có thể được xác định, thậm chí theo một mẫu nhất định, để định tuyến thư giữa các trao đổi và hàng đợi, thông qua các liên kết.

Hỗ trợ nhiều giao thức

Ngoài việc hỗ trợ giao thức AMQP, RabbitMQ còn hỗ trợ STOMP, MQTT và HTTP thông qua các plugin. Nó cũng kết hợp các cơ chế kiểm soát truy cập và xác thực cho từng thành phần của nhà môi giới.

Các trường hợp sử dụng thực tế của RabbitMQ

Các trường hợp sử dụng quan trọng nhất của RabbitMQ là đảm bảo tính không đồng bộ giữa các ứng dụng, giảm sự ghép nối giữa các ứng dụng, phân phối cảnh báo và kiểm soát hàng đợi của các công việc trong nền.

Tuy nhiên, các trường hợp sử dụng thực tế của RabbitMQ là trong Thương mại điện tử, trong đó t được sử dụng để thao tác, xử lý và chuyển tiếp đơn đặt hàng của bạn đến các hệ thống trong các lĩnh vực khác, chẳng hạn như phân phối và phát hành hóa đơn.

Khi xử lý đơn đặt hàng, bạn có thể chuyển tiếp thông báo bán hàng của mình đến trung tâm phân phối và khu vực hóa đơn. Trong sơ đồ này, mọi thứ hoạt động theo chiều ngang, tuân theo mẫu không đồng bộ để gửi tin nhắn, nhưng thường có thể gửi một hành động đến một số hàng đợi.

Theo ví dụ trước, chức năng này có thể rất hữu ích khi khách hàng mua hàng và sản phẩm cần được chuẩn bị để phân phối, vận chuyển và lập hóa đơn.

Và vì mỗi khu vực này là một hệ thống khác nhau, mục tiêu của RabbitMQ là chuyển tiếp tất cả các thông báo này đến các hệ thống tương ứng.

  Cách du hành thời gian trong “Animal Crossing: New Horizons”

Các lựa chọn thay thế Rabbit MQ:

RabbitMQ đơn giản hơn rất nhiều so với vẻ ngoài của nó và có một số lựa chọn thay thế cho nó bao gồm:

#1. sắtMQ

IronMQ là phần mềm xếp hàng tin nhắn siêu nhanh. Nó có tính sẵn sàng cao, thiết kế bền và tốt nhất là giao hàng một lần. IronMQ là giải pháp dựa trên đám mây mạnh mẽ nhất cho kiến ​​trúc ứng dụng hiện đại.

Nó hỗ trợ hàng đợi đẩy, hàng đợi kéo và các cuộc thăm dò dài, giúp giữ cho các yêu cầu thăm dò mở lâu hơn. Hơn nữa, nó có thể sử dụng nhiều trung tâm dữ liệu có tính sẵn sàng cao, tạo điều kiện thuận lợi cho khả năng mở rộng.

Bạn có thể triển khai trên đám mây, trên phần cứng dùng chung hoặc chuyên dụng hoặc tại chỗ. Nó cũng có một loạt các thư viện máy khách với tài liệu dễ đọc.

#2. Apache Kafka

Kafka là một nền tảng có sự hiện diện mạnh mẽ trong phát trực tuyến sự kiện phân tán. Về cốt lõi, Kafka được thiết kế dưới dạng nhật ký cam kết được sao chép, phân tán và liên tục.

Khả năng sử dụng lớn nhất của nó là dành cho các vi dịch vụ cấp nguồn theo sự kiện hoặc các ứng dụng xử lý luồng quy mô lớn, tự động sao chép các sự kiện không đồng bộ trong cụm để có khả năng chịu lỗi và tính sẵn sàng cao.

#3. Apache ActiveMQ

ActiveMQ là một Trình môi giới tin nhắn đa giao thức dựa trên Java. Với nó, chúng ta có thể tích hợp các ứng dụng sử dụng giao thức xếp hàng tin nhắn AMQP ở lớp ứng dụng.

Nó thực hiện một số giao thức để tích hợp, chẳng hạn như JMS (Java gốc) và Stomp (có thể được sử dụng bởi các ứng dụng PHP), trong số những giao thức khác.

Ngoài ra, Amazon có phiên bản “được quản lý” có tên là Amazon MQ, giúp sử dụng dịch vụ dễ dàng hơn nhiều.

Từ cuối cùng

Các nhà môi giới nhắn tin theo truyền thống là một phần quan trọng trong kiến ​​trúc của các tổ chức. Tuy nhiên, với sự gia tăng người dùng truy cập hệ thống của công ty thông qua các kênh khác nhau, cần có các sản phẩm cho phép chúng được mở rộng theo chiều ngang với chi phí thấp. Cho phép xử lý một số lượng lớn tin nhắn mỗi giây.

Đây là nơi mà một thế hệ nhà môi giới mới, chẳng hạn như RabbitMQ, đang trở nên phù hợp hơn trong các ứng dụng hiện đại, nhằm cung cấp mức độ sẵn sàng, độ tin cậy, khả năng tương tác và hiệu suất cao cho khách hàng của chúng tôi.

Bạn cũng có thể khám phá một số nền tảng lưu trữ RabbitMQ đáng tin cậy cho ứng dụng của mình.

x