เราสนใจที่จะรับฟังประสบการณ์ใด ๆ กับข้อดีและข้อเสียของ ActiveMQ เทียบกับ RabbitMQ กับ ZeroMQ ข้อมูลเกี่ยวกับคิวข้อความที่น่าสนใจอื่น ๆ ก็ยินดีต้อนรับเช่นกัน
เราสนใจที่จะรับฟังประสบการณ์ใด ๆ กับข้อดีและข้อเสียของ ActiveMQ เทียบกับ RabbitMQ กับ ZeroMQ ข้อมูลเกี่ยวกับคิวข้อความที่น่าสนใจอื่น ๆ ก็ยินดีต้อนรับเช่นกัน
คำตอบ:
แก้ไข:คำตอบเริ่มต้นของฉันมุ่งเน้นไปที่ AMQP ฉันตัดสินใจที่จะเขียนใหม่เพื่อเสนอมุมมองที่กว้างขึ้นในหัวข้อ
เทคโนโลยีการส่งข้อความ 3 ตัวเหล่านี้มีวิธีการต่าง ๆ ในการสร้างระบบกระจาย:
RabbitMQเป็นหนึ่งในการนำโพรโทคอล AMQP (พร้อมด้วย Apache Qpid) มาใช้ ดังนั้นจึงใช้สถาปัตยกรรมโบรกเกอร์ซึ่งหมายความว่าข้อความจะถูกจัดคิวบนโหนดกลางก่อนที่จะถูกส่งไปยังลูกค้า วิธีการนี้ทำให้ RabbitMQ ใช้งานและปรับใช้ได้ง่ายเนื่องจากสถานการณ์ขั้นสูงเช่นการกำหนดเส้นทางการโหลดบาลานซ์หรือการจัดคิวข้อความแบบถาวรได้รับการสนับสนุนในโค้ดเพียงไม่กี่บรรทัด อย่างไรก็ตามมันยังทำให้สามารถปรับขนาดได้น้อยลงและ“ ช้าลง” เนื่องจากโหนดกลางเพิ่มความหน่วงแฝงและซองข้อความมีขนาดค่อนข้างใหญ่
ZeroMqเป็นระบบส่งข้อความที่มีน้ำหนักเบามากซึ่งออกแบบมาเป็นพิเศษสำหรับสถานการณ์ปริมาณงานสูง / เวลาแฝงต่ำเช่นเดียวกับที่คุณพบในโลกการเงิน Zmq สนับสนุนสถานการณ์การส่งข้อความขั้นสูงมากมาย แต่ตรงกันข้ามกับ RabbitMQ คุณจะต้องใช้ตัวเองเป็นส่วนใหญ่โดยการรวมเฟรมเวิร์กต่าง ๆ (เช่นซ็อกเก็ตและอุปกรณ์) Zmq มีความยืดหยุ่นสูง แต่คุณจะต้องศึกษาคู่มือ80 หน้าหรือมากกว่านั้น (ซึ่งฉันแนะนำให้อ่านสำหรับใครก็ตามที่เขียนระบบการกระจายแม้ว่าคุณจะไม่ได้ใช้ Zmq) ก่อนที่จะทำอะไรที่ซับซ้อนกว่าการส่งข้อความ ระหว่าง 2 เพื่อน
ActiveMQอยู่ในระดับกลาง เช่นเดียวกับ Zmq มันสามารถปรับใช้กับทั้งนายหน้าและ P2P ทอพอโลยี เช่น RabbitMQ มันง่ายกว่าที่จะใช้สถานการณ์ขั้นสูง แต่โดยทั่วไปแล้วจะต้องเสียค่าใช้จ่ายที่ประสิทธิภาพ มันคือมีดกองทัพสวิสสำหรับการส่งข้อความ :-)
ในที่สุดทั้ง 3 ผลิตภัณฑ์:
ทำไมคุณถึงพลาดSparrow , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ ?
เซิร์ฟเวอร์คิวข้อความ
เซิร์ฟเวอร์คิวข้อความมีให้บริการในหลายภาษา, Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling or Sparrow), Scala (Kestrel, Kafka) หรือ Java (ActiveMQ) สามารถดูภาพรวมสั้น ๆ ได้ที่นี่
กระจอก
นกเล็กชนิดหนึ่ง
เหยี่ยวชวา
RabbitMQ
Apache ActiveMQ
Beanstalkd
Amazon SQS
Kafka
ZMQ
EagleMQ
IronMQ
ฉันหวังว่าสิ่งนี้จะเป็นประโยชน์สำหรับเรา แหล่ง
ข้อมูลมากกว่าที่คุณอยากรู้:
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
เพียงอธิบายสิ่งที่ Paul เพิ่มไว้ในความคิดเห็น หน้าดังกล่าวข้างต้นจะตายหลังจากปี 2010 เพื่อให้อ่านด้วยเหน็บแนมของเกลือ มีการเปลี่ยนแปลงหลายสิ่งใน 3 ปี
มันขึ้นอยู่กับการใช้งานของคุณจริงๆ
การเปรียบเทียบ 0MQ กับ ActiveMQ หรือ RabbitMQ นั้นไม่ยุติธรรม ActiveMQ และ RabbitMQ คือ Messaging Systems ซึ่งต้องการการติดตั้งและการดูแลระบบ พวกเขามีฟีเจอร์ตามเข็มได้มากกว่า ZeroMQ พวกเขามีคิวถาวรจริงสนับสนุนธุรกรรม ฯลฯ
ZeroMQ คือการปรับใช้ซ็อกเก็ตที่เน้นข้อความ นอกจากนี้ยังเหมาะสำหรับการเขียนโปรแกรมแบบอะซิงโครนัสในกระบวนการ เป็นไปได้ที่จะเรียกใช้ "ระบบส่งข้อความองค์กร" เหนือ ZeroMQ แต่คุณจะต้องติดตั้งระบบของคุณเองเป็นจำนวนมาก
ดังนั้น:
ActiveMQ, RabbitMQ, Websphere MQ & MSMQ คือ "คิวข้อความองค์กร"
ZeroMQ เป็นข้อความที่จัดวาง IPC Library
มีการเปรียบเทียบระหว่าง RabbitMQ และ ActiveMQ เป็นที่นี่ ActiveMQ ได้รับการกำหนดค่าไว้เพื่อรับประกันการส่งข้อความซึ่งสามารถให้ความประทับใจได้ช้าเมื่อเทียบกับระบบส่งข้อความที่เชื่อถือได้น้อยกว่า คุณสามารถเปลี่ยนการกำหนดค่าสำหรับประสิทธิภาพได้ตลอดเวลาหากคุณต้องการและได้ประสิทธิภาพที่ดีเท่ากับระบบส่งข้อความอื่น ๆ อย่างน้อยคุณก็มีทางเลือกนั้น มีข้อมูลจำนวนมากในฟอรัมและคำถามที่ถามบ่อยเกี่ยวกับ ActiveMQ สำหรับการกำหนดค่าการปรับขนาดประสิทธิภาพและความพร้อมใช้งานสูง นอกจากนี้ ActiveMQ จะรองรับ AMQP 1.0 เมื่อสเป็คจะได้รับการสรุปพร้อมกับรูปแบบสายอื่น ๆ เช่น STOMP
ข้อดีอีกอย่างสำหรับ ActiveMQ คือโครงการ Apache ดังนั้นจึงมีความหลากหลายในชุมชนนักพัฒนา - และไม่เชื่อมโยงกับ บริษัท เดียว
ฉันไม่ได้ใช้ ActiveMQ หรือ RabbitMQ แต่ใช้ ZeroMQ ความแตกต่างอย่างมากที่ฉันเห็นระหว่าง ZeroMQ และ ActiveMQ เป็นต้นนั้นคือ 0MQ นั้นไม่มีนายหน้าและไม่ได้สร้างความน่าเชื่อถือสำหรับการส่งข้อความ หากคุณกำลังมองหา API การส่งข้อความที่ใช้งานง่ายที่รองรับรูปแบบการส่งข้อความการขนส่งแพลตฟอร์มและการผูกภาษาจำนวนมาก 0MQ นั้นคุ้มค่าที่จะดู หากคุณกำลังมองหาแพลตฟอร์มการส่งข้อความแบบเป่าแล้ว 0MQ อาจไม่เหมาะกับการเรียกเก็บเงิน
ดูwww.zeromq.org/docs:cookbookสำหรับตัวอย่างมากมายเกี่ยวกับวิธีการใช้ 0MQ
ฉันประสบความสำเร็จในการใช้ 0MQ สำหรับการส่งข้อความในแอปพลิเคชันตรวจสอบการใช้ไฟฟ้า (ดูhttp://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ )
ฉันใช้ zeroMQ ฉันต้องการระบบส่งข้อความที่เรียบง่ายและฉันไม่ต้องการความยุ่งยากของนายหน้า ฉันไม่ต้องการระบบองค์กรขนาดใหญ่ที่มุ่งเน้น Java
หากคุณต้องการระบบที่รวดเร็วและง่ายและคุณต้องรองรับหลายภาษา (ฉันใช้ C และ. net) ดังนั้นฉันขอแนะนำให้ดูที่ 0MQ
ฉันสามารถเพิ่ม 2 เซนต์ของฉันเกี่ยวกับ ActiveMQ เท่านั้น แต่เนื่องจากนี่เป็นหนึ่งในยอดนิยม:
ภาษาที่คุณต้องการเขียนอาจมีความสำคัญ แม้ว่า ActiveMQ จะมีไคลเอนต์เป็นส่วนใหญ่การใช้งาน C # ของพวกเขานั้นยังห่างไกลจากความสมบูรณ์เมื่อเทียบกับ Java Library
ซึ่งหมายความว่าฟังก์ชันการทำงานพื้นฐานบางอย่างไม่สม่ำเสมอ (โปรโตคอลล้มเหลวที่ ... ดี ... ล้มเหลวในบางกรณีไม่มีการสนับสนุนการส่งซ้ำ) และอื่น ๆ ก็ไม่ได้มี เนื่องจาก. NET ดูเหมือนจะไม่สำคัญกับโครงการเลยการพัฒนาค่อนข้างช้าและดูเหมือนจะไม่มีแผนเปิดตัวใด ๆ Trunk มักจะเสียหายดังนั้นหากคุณพิจารณาสิ่งนี้คุณอาจต้องการพิจารณาร่วมทำโครงการหากคุณต้องการให้สิ่งต่าง ๆ ดำเนินต่อไป
จากนั้นก็มี ActiveMQ ซึ่งมีฟีเจอร์ที่ดีมากมาย แต่ก็มีปัญหาแปลก ๆ เช่นกัน เราใช้ activemq เวอร์ชัน Fuse (Progress) เพื่อเหตุผลด้านความมั่นคง แต่ถึงอย่างนั้นก็มี "บั๊ก" แปลก ๆ ที่คุณต้องการทราบ:
ทั้งหมดและทั้งหมดเป็นผลิตภัณฑ์ที่ดีถ้าคุณสามารถมีชีวิตอยู่กับปัญหา:
A) ไม่กลัวที่จะมีส่วนร่วมอย่างแข็งขันเมื่อใช้. NET
B) พัฒนาใน java ;-)
ZeroMQ นั้นจริง ๆ แล้วมีคิวเป็นศูนย์! มันเป็นความผิดพลาดจริงๆ! มันไม่ได้มีการรอคิว, หัวข้อ, การคงอยู่, ไม่มีอะไร! มันเป็นเพียงมิดเดิลแวร์สำหรับ sockets API ถ้ามันเป็นสิ่งที่คุณดูเท่! อย่างอื่นลืมมัน! มันไม่เหมือน activeMQ หรือ rabbitmq
มีการเปรียบเทียบคุณสมบัติและประสิทธิภาพของ RabbitMQ ActiveMQ และ QPID ที่ให้ไว้ที่
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
โดยส่วนตัวฉันลองทั้งสามข้อข้างต้น RabbitMQ เป็นประสิทธิภาพที่ดีที่สุดตามที่ฉันต้องการ แต่มันไม่มีตัวเลือกการเข้าแทนที่และการกู้คืน ActiveMQ มีคุณสมบัติส่วนใหญ่ แต่ช้ากว่า
อัปเดต: HornetQยังเป็นตัวเลือกที่คุณสามารถพิจารณาได้นั่นคือ JMS Complaint ซึ่งเป็นตัวเลือกที่ดีกว่า ActiveMQ หากคุณกำลังมองหาโซลูชันที่ใช้ JMS
ฉันเขียนเกี่ยวกับประสบการณ์ครั้งแรกของฉันเกี่ยวกับ AMQP, Qpid และ ZeroMQ ที่นี่: http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
ความเห็นส่วนตัวของฉันคือ AMQP นั้นใช้ได้ถ้าคุณต้องการสิ่งอำนวยความสะดวกการส่งข้อความแบบถาวรและไม่ต้องกังวลว่าโบรกเกอร์อาจเป็นปัญหาคอขวด นอกจากนี้ไคลเอนต์ C ++ หายไปสำหรับ AMQP (Qpid ไม่ได้รับการสนับสนุนของฉัน แต่ไม่แน่ใจเกี่ยวกับไคลเอนต์ ActiveMQ) แต่อาจกำลังดำเนินการอยู่ ZeroMQ อาจเป็นวิธีอื่น
ฉันใช้ ActiveMQ ในสภาพแวดล้อมการผลิตประมาณ 3 ปีแล้ว ในขณะที่ทำงานเสร็จสิ้นการจัดเรียงไลบรารี่ของไคลเอ็นต์เวอร์ชันที่ทำงานอย่างถูกต้องและปราศจากข้อบกพร่องอาจเป็นปัญหาได้ กำลังมองหาการเปลี่ยนไปใช้ RabbitMQ
มีการอภิปรายในความคิดเห็นของโพสต์บล็อกนี้เกี่ยวกับ Twitter ที่เขียนคิวข้อความของตัวเองซึ่งอาจน่าสนใจ
สตีฟทำการทดสอบอย่างกว้างขวางและทดสอบความเครียดของ ActiveMQ, RabbitMQ และอื่น ๆ ActiveMQ นั้นค่อนข้างช้า (ช้ากว่า Kestrel มาก) RabbitMQ ก็ล้มเหลวอย่างต่อเนื่องกับผู้ผลิตจำนวนมากและผู้บริโภคน้อยเกินไป
คุณอาจไม่ได้โหลดเหมือน Twitter ในตอนแรก :)
มีแอพพลิเคชั่นเพียงไม่กี่ตัวที่ปรับแต่งค่าได้มากเท่ากับ ActiveMQ คุณลักษณะบางอย่างที่ทำให้ ActiveMQ โดดเด่นคือ:
ขนาดการดึงข้อมูลล่วงหน้าที่กำหนดค่าได้ เธรดที่กำหนดค่าได้ ล้มเหลวที่กำหนดค่าได้ การแจ้งเตือนการดูแลระบบที่กำหนดให้กับผู้ผลิต ... รายละเอียดที่:
Abie มันทั้งหมดลงมาในกรณีการใช้งานของคุณ แทนที่จะใช้บัญชีของบุคคลอื่นในกรณีการใช้งานของพวกเขาอย่าลังเลที่จะโพสต์กรณีการใช้งานของคุณไปยังรายการ Rabbitmq- อภิปราย การถามทวิตเตอร์จะทำให้คุณได้รับคำตอบเช่นกัน ด้วยความปรารถนาดี alexis
เกี่ยวกับ ZeroMQ หรือที่รู้จักกันว่า 0MQ อย่างที่คุณรู้อยู่แล้วมันเป็นข้อความที่จะทำให้คุณได้รับข้อความมากที่สุดต่อวินาที (ประมาณ 4 ล้านต่อวินาทีบนเซิร์ฟเวอร์อ้างอิงของพวกเขาเมื่อฉันตรวจสอบครั้งล่าสุด) แต่อย่างที่คุณอาจทราบแล้ว เอกสารไม่มีอยู่จริง คุณจะมีเวลาในการค้นหาวิธีเริ่มต้นเซิร์ฟเวอร์อย่างยากลำบาก ฉันคิดว่านั่นเป็นส่วนหนึ่งที่ว่าทำไมยังไม่มีใครสนับสนุนเกี่ยวกับ 0MQ
มีความสุข!
หากคุณมีความสนใจในการใช้งานเชิงพาณิชย์คุณควรจะดูที่นิพพานจากช่องทางของฉัน
เนอร์วาน่าถูกใช้อย่างมากในอุตสาหกรรมบริการทางการเงินสำหรับแพลตฟอร์มการค้าและการกระจายราคาที่มีความหน่วงต่ำขนาดใหญ่
มีการสนับสนุนภาษาการเขียนโปรแกรมไคลเอ็นต์ที่หลากหลายทั่วทั้งองค์กรเว็บไซต์และโดเมนมือถือ
ความสามารถในการจัดกลุ่มเป็นขั้นสูงและคุ้มค่าที่จะดูว่า HA โปร่งใสหรือโหลดบาลานซ์นั้นมีความสำคัญต่อคุณหรือไม่
เนอร์วานามีให้ดาวน์โหลดฟรีเพื่อการพัฒนา