Sau khi đánh giá cả Redis và RabbitMQ, tôi đã chọn RabbitMQ làm nhà môi giới của chúng tôi vì những lý do sau:
- RabbitMQ cho phép bạn sử dụng lớp bảo mật tích hợp bằng cách sử dụng chứng chỉ SSL để mã hóa dữ liệu bạn đang gửi cho nhà môi giới và điều đó có nghĩa là không ai sẽ đánh hơi dữ liệu của bạn và có quyền truy cập vào dữ liệu tổ chức quan trọng của bạn.
- RabbitMQ là một sản phẩm rất ổn định có thể xử lý số lượng lớn các sự kiện trong một giây và nhiều kết nối mà không bị chai.
- Trong tổ chức của chúng tôi, chúng tôi đã sử dụng RabbitMQ và có kiến thức nội bộ tốt về việc sử dụng nó và tích hợp sẵn sàng với đầu bếp.
Về việc mở rộng quy mô, RabbitMQ có một triển khai cụm tích hợp mà bạn có thể sử dụng ngoài bộ cân bằng tải để triển khai môi trường môi giới dự phòng.
Cụm RabbitMQ của tôi là Active Active hay Active Passive?
Bây giờ đến điểm yếu hơn của việc sử dụng RabbitMQ:
- hầu hết các chủ hàng của Logstash không hỗ trợ RabbitMQ nhưng mặt khác, công cụ tốt nhất, có tên là Beaver, có một triển khai sẽ gửi dữ liệu đến RabbitMQ mà không gặp vấn đề gì.
- Việc triển khai Beaver với RabbitMQ trong phiên bản hiện tại của nó hơi chậm về hiệu suất (đối với mục đích của tôi) và không thể xử lý tốc độ 3000 sự kiện / giây từ một máy chủ và thỉnh thoảng dịch vụ bị lỗi.
- Hiện tại, tôi đang thực hiện một bản sửa lỗi để giải quyết vấn đề hiệu suất cho RabbitMQ và giúp Beaver shipper hoạt động ổn định hơn. Giải pháp đầu tiên là thêm nhiều quy trình có thể chạy đồng thời và sẽ cung cấp cho người gửi hàng nhiều quyền lực hơn. Giải pháp thứ hai là thay đổi Beaver để gửi dữ liệu không đồng bộ đến RabbitMQ về mặt lý thuyết sẽ nhanh hơn nhiều. Tôi hy vọng rằng tôi sẽ hoàn thành việc triển khai cả hai giải pháp vào cuối tuần này.
Bạn có thể theo dõi vấn đề tại đây:
https://github.com/josegonzalez/python-beaver/issues/323
Và kiểm tra yêu cầu kéo tại đây:
https://github.com/josegonzalez/python-beaver/pull/324
Nếu bạn có thêm câu hỏi, hãy để lại bình luận.