หลังจากประเมินทั้ง Redis และ RabbitMQ แล้วฉันเลือก RabbitMQ เป็นโบรกเกอร์ของเราด้วยเหตุผลดังต่อไปนี้:
- RabbitMQ ช่วยให้คุณใช้ชั้นความปลอดภัยในตัวโดยใช้ใบรับรอง SSL เพื่อเข้ารหัสข้อมูลที่คุณส่งไปยังโบรกเกอร์และหมายความว่าจะไม่มีใครดักฟังข้อมูลของคุณและเข้าถึงข้อมูลสำคัญขององค์กรของคุณได้
- RabbitMQ เป็นผลิตภัณฑ์ที่มีความเสถียรสูงซึ่งสามารถรองรับเหตุการณ์จำนวนมากต่อวินาทีและการเชื่อมต่อจำนวนมากโดยไม่ต้องเป็นคอขวด
- ในองค์กรของเราเราใช้ RabbitMQ อยู่แล้วและมีความรู้ภายในที่ดีเกี่ยวกับการใช้มันและการผสานรวมกับเชฟที่เตรียมไว้แล้ว
สำหรับการปรับขนาด RabbitMQ มีการใช้งานคลัสเตอร์ในตัวซึ่งคุณสามารถใช้นอกเหนือจากตัวโหลดบาลานเซอร์เพื่อใช้สภาพแวดล้อมโบรกเกอร์ที่ซ้ำซ้อน
คลัสเตอร์ RabbitMQ ของฉันเป็น Active Active หรือ Active Passive?
ตอนนี้ถึงจุดที่อ่อนแอกว่าในการใช้ RabbitMQ:
- ผู้ขนส่ง Logstash ส่วนใหญ่ไม่รองรับ RabbitMQ แต่ในทางกลับกันผู้ให้บริการที่ดีที่สุดชื่อ Beaver มีการใช้งานที่จะส่งข้อมูลไปยัง RabbitMQ โดยไม่มีปัญหา
- การใช้งานที่ Beaver มีกับ RabbitMQ ในเวอร์ชันปัจจุบันนั้นมีประสิทธิภาพช้าเล็กน้อย (สำหรับวัตถุประสงค์ของฉัน) และไม่สามารถจัดการกับอัตรา 3000 เหตุการณ์ / วินาทีจากเซิร์ฟเวอร์หนึ่งเครื่องและบริการขัดข้องในบางครั้ง
- ตอนนี้ฉันกำลังแก้ไขปัญหาที่จะแก้ปัญหาประสิทธิภาพของ RabbitMQ และทำให้ผู้ขนส่งของ Beaver มีเสถียรภาพมากขึ้น ทางออกแรกคือการเพิ่มกระบวนการอื่น ๆ ที่สามารถทำงานได้พร้อมกันและจะทำให้ผู้ขนส่งมีอำนาจมากขึ้น วิธีที่สองคือการเปลี่ยน Beaver เพื่อส่งข้อมูลไปยัง RabbitMQ แบบอะซิงโครนัสซึ่งในทางทฤษฎีควรจะเร็วกว่ามาก ฉันหวังว่าจะใช้ทั้งสองโซลูชันให้เสร็จสิ้นภายในสิ้นสัปดาห์นี้
คุณสามารถติดตามปัญหาได้ที่นี่:
https://github.com/josegonzalez/python-beaver/issues/323
และตรวจสอบคำขอดึงที่นี่:
https://github.com/josegonzalez/python-beaver/pull/324
หากคุณมีคำถามเพิ่มเติมอย่าลังเลที่จะแสดงความคิดเห็น