Mời tôi một ly cafe nếu bạn thích :) Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Lâu lắm rồi mới rảnh rỗi ngồi viết lại, hôm nay ngồi vọc RabbitMQ xem performance nó như thế nào mà nhiều người dùng như vậy. :)


RabbitMQ là phần mềm Opensource message-broker , ban đầu nó thực hiện Advanced Message Queuing Protocol (AMQP) và sau này mở rộng thêm kiến trúc hỗ trợ cho Streaming Text Oriented Messaging Protocol và MQTT protocol, cái này có thể vào trang chủ nó để xem.




Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay




OK, giờ đang phân vân nên chọn máy ảo hay là máy thật, đã test thì chơi lớn luôn lôi cái laptop i5 8Gb win10 ra chơi.


Cái này cài khá đơn giản nên vào đây tải về là cài thôi, nhanh mau lẹ, RabbitMQ không bận tâm việc cài lắm đâu, quan trọng hiểu nó và config cho nó chạy theo yêu cầu mới quan trọng, đây win 10 next next nên nhanh.


Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay


Cuối cùng thì phần cài đặt cũng xong



Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay


Giờ mục đích sẽ như sau : Bài test này sẽ bắt đầu gồm 2 phần, một là sender gởi message sang receiver, tạm hiểu như mô hình rabbitmq là Producer gởi message cho Consumer. Chơi kiểu demo đơn giản vậy mới nhanh thấy :)


Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Sau khi ngồi test trên RabbitMQ Management nào là tạo queue name xong tạo exchange gán  Bindings xong, test Publish message kiểm tra thì mọi thứ ok


Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay




Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Như tiêu đề RabbitMQ performance, thế là lôi python pika lib và chiến thôi, mục tiêu là tao ra thật nhiều queue, nào là send và receive thật nhiều xem nó banh không :)


pip install pika


Producer (Sender)



Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Consumer (Receiver)



Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Trước tiên chạy sender trước vì muốn nó có thật nhiều queue xem nó như thế nào, chơi nhiều tab cho nhanh haha. Nói cho vui chứ không khác nào DDOS luôn, nhưng kệ vậy mới xem được nó ngon lành hay không :)


Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay




Mới đầu là chạy thấy ngon ngon, lên vài tab nữa là báo đỏ, xem lại memory nó đỏ cmnr, default nó lên 4Gb là đỏ, cảnh báo, thế nào nâng lên 6Gb xem sức tới đâu



Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay


Như vậy queue càng cao thì performance càng cao nhưng vấn đề đang để publish message ồ ạc nhưng nó vẫn gánh nỗi khá là ok, nếu một host bình thường mà request ồ ạc vậy coi như banh luôn.


Nó có cơ chế khi request nhiều quá sẽ khóa lại, đợi ok rồi nhả ra từ từ nên hệ thống lúc nào cũng được an toàn hơn, không bị banh nữa chừng :) nó sẽ theo dõi và đánh vào các Connections, thằng nào mà tào lao là khóa phát, êm êm nói chuyện lại haha.

 Tiếp theo chạy Consumer để nó nhận hết các message queue về, thời gian nhận cũng khá nhanh vì message cũng nhẹ, nên thời gian giải phóng cũng nhanh.


Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay


Sau khi giải phóng hết Queue message thì nó nhẹ nhàng như sau




Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay


Test thử vừa send vừa nhận 1 triệu message

Sau khi chạy xong kiểm tra thì Message rates cũng tương đối :)



Reference - Ngày nghỉ ngồi chém gió về RabbitMQ performance với Python có gì hay



Tùy vào mục đích bạn cần làm gì thì đưa vào sử dụng từ cách config, nhu cầu vật lý thích ứng ra sao cho phù hợp... Thường các hệ thống lớn người ta mới dùng đến RabbitMQ hoặc Microservice architecture bạn mới biết đến và dùng nó, đa phần là vậy.


Ok chém gió tới đây cũng tạm được rồi, nếu tiếp xúc và trực tiếp test và vọc vạch nghiên cứu thằng này bạn sẽ thấy rất tuyệt vời luôn :)



Nhãn: