RabbitMQ อธิบายใน 5 นาทีหรือน้อยกว่า
เผยแพร่แล้ว: 2022-11-24วันนี้เราจะมาดูวิธีเพิ่มความเร็วในการโหลดหน้าเว็บของคุณด้วยการดำเนินการประมวลผลที่หนักที่สุดแบบอะซิงโครนัส จัดการทั้งหมดได้ง่ายมาก ขอบคุณ RabbitMQ
ความเสถียรและความเร็วของแอปพลิเคชันหรือเว็บไซต์เป็นปัจจัยที่สำคัญที่สุดสำหรับผู้ใช้ ใครบ้างที่ไม่เคยออกจากเว็บไซต์ก่อนที่จะเห็นหน้าแรกเพราะใช้เวลานานเกินไป?
RabbitMQ คืออะไร

RabbitMQ เป็นโบรกเกอร์รับส่งข้อความแบบโอเพ่นซอร์ส กระจายและปรับขนาดได้ ซึ่งทำหน้าที่เป็นตัวกลางสำหรับการสื่อสารที่มีประสิทธิภาพระหว่างผู้ผลิตและผู้บริโภค
RabbitMQ ใช้โปรโตคอลการส่งข้อความเลเยอร์ของแอปพลิเคชัน AMQP ซึ่งเน้นที่การสื่อสารข้อความแบบอะซิงโครนัสพร้อมการรับประกันการจัดส่งผ่านการยืนยันการรับข้อความจากนายหน้าไปยังผู้ผลิตและจากผู้บริโภคไปยังผู้ผลิต
RabbitHQ ทำงานอย่างไร
ในวิธีที่ง่ายขึ้น RabbitMQ กำหนดคิวที่จะเก็บข้อความที่ส่งโดยผู้ผลิตจนกว่าแอปพลิเคชันที่ใช้งานจะได้รับข้อความและประมวลผล ช่วยให้เราสามารถออกแบบและใช้งานระบบแบบกระจาย ซึ่งระบบจะแบ่งออกเป็นโมดูลอิสระที่สื่อสารระหว่างกันผ่านข้อความ
เช่นเดียวกับการสื่อสารทั้งหมด เราต้องการผู้ผลิต ข้อความ และผู้รับ ตรงกลางของเค้กคือ RabbitMQ ซึ่งจะเป็นที่ที่ข้อความกำลังรอผู้รับ
มาทำความเข้าใจวิธีการทำงานกันดีกว่าโดยรู้จักประเภทของการแลกเปลี่ยนที่แสดงถึงการแลกเปลี่ยนข้อความ
ประเภทการแลกเปลี่ยน
ผ่านการแลกเปลี่ยน เมื่อใดก็ตามที่เราส่งข้อความผ่าน RabbitMQ เราจะไม่ส่งไปยังคิวโดยตรง เพื่อให้ระบบอื่นอ่าน เราจะส่งไปยังการแลกเปลี่ยนซึ่งมีหน้าที่ส่งต่อข้อความไปยังคิวต่างๆ

ประเภทของการแลกเปลี่ยนคือ Direct, Fanout, Topic และ Readers
การแลกเปลี่ยนโดยตรง
สมมติว่าผู้ผลิตต้องการส่งข้อความยืนยันการซื้อไปยังผู้บริโภคสามราย นั่นคือระบบจำเป็นต้องสื่อสารกับระบบที่แตกต่างกันสามระบบเพื่อทำการซื้อ
เนื่องจาก RabbitMQ ส่งข้อความแยกกันไปยังแต่ละคิว จึงมีโมเมนตัมที่จะทำให้ระบบอื่นๆ เหล่านี้ได้รับข้อความโดยตรง
โดยปกติการแลกเปลี่ยนจะส่งต่อข้อความไปยังคิว แต่เรามักไม่ต้องการให้ข้อความของเราถูกส่งไปยังคิวทั้งหมด ดังนั้นจึงมีเงื่อนไขหลายประการที่เราสามารถนำไปใช้ในการแลกเปลี่ยนได้
คุณจึงสามารถส่งข้อความของคุณไปยังผู้บริโภคเพียงรายเดียว แทนที่จะส่งไปให้ทุกคน
Binding Key : ในการเชื่อมต่อคิวกับการแลกเปลี่ยน คุณต้องสร้างการเชื่อมโยง ซึ่งเป็นความสัมพันธ์ระหว่างคิวและการแลกเปลี่ยน เช่น ตัวเชื่อมต่อ
Routing Key : ในการเชื่อมโยงนี้ เรายังสามารถสร้างองค์ประกอบที่เรียกว่า routing key ซึ่งอีกนัยหนึ่งคือกุญแจสำคัญในการส่งต่อข้อความของเราไปยังคิวเฉพาะ
หากคุณมีคีย์การกำหนดเส้นทาง X, คีย์การกำหนดเส้นทาง Y และคีย์การกำหนดเส้นทาง Z ตัวอย่างเช่น ข้อความที่มีคีย์การกำหนดเส้นทาง Y จะผ่านคิว Y และส่งตรงไปยังผู้บริโภคที่คุณกำหนดให้รับข้อความ
ด้วยวิธีนี้ เราสามารถมีคิวหลายรายการที่เชื่อมต่อกับการแลกเปลี่ยน แต่ในขณะเดียวกัน พวกมันยังสามารถมีความสัมพันธ์ที่แตกต่างกันกับการแลกเปลี่ยนโดยใช้คีย์การกำหนดเส้นทาง
Fanout แลกเปลี่ยน
เมื่อข้อความถูกส่งไปยังการแลกเปลี่ยน ข้อความนั้นจะถูกส่งไปยังคิวทั้งหมดที่เชื่อมต่ออยู่ ดังนั้นหากคุณมี 10 คิวที่เชื่อมต่อกับ fanout exchange คิวทั้งหมดจะได้รับข้อความที่ส่งไป
การแลกเปลี่ยนหัวข้อ
เป็นหนึ่งในการแลกเปลี่ยนที่ยืดหยุ่นที่สุด ทำให้เราสามารถส่งข้อความตามหัวเรื่องได้ และขึ้นอยู่กับวิธีที่คุณตั้งชื่อคีย์การกำหนดเส้นทาง คุณสามารถสร้างรูปแบบของกฎและความสัมพันธ์ระหว่างระบบได้
ตัวอย่างเช่น: routing key (x.*); routing key(*.z); routing key (*.y.*).
routing key (x.*); routing key(*.z); routing key (*.y.*).
AQMP ใน RabbitMQ คืออะไร
AMQP (Advanced Message Queuing Protocol) เป็นโปรโตคอลการส่งข้อความแบบเปิดที่ใช้ในการกำหนดการส่งข้อความระหว่างแอปพลิเคชันต่างๆ คล้ายกับโปรโตคอล HTTP และ TCP ตรงที่เป็นโปรโตคอลระดับสาย ยกเว้นว่าจะอนุญาตสำหรับการขนส่งแบบอะซิงโครนัส
RabbitMQ เลือกที่จะใช้ AMQP ด้วยเหตุผลหลายประการ ประการแรกคือโปรโตคอลนี้ได้รับการอธิบายว่าเป็นมาตรฐานสำหรับมิดเดิลแวร์ ซึ่งแตกต่างจาก JMS ซึ่งกำหนด API
สมาคมระหว่างประเทศ ซึ่งรวมถึงบริษัทขนาดใหญ่ เช่น Red Hat, Cisco Systems และ Microsoft ได้เขียนข้อกำหนด AMQP นี้ ประการที่สองคือความสามารถในการทำงานร่วมกันของโปรโตคอลนี้ ซึ่งช่วยให้แอปพลิเคชันใด ๆ ที่ใช้ AMQP สามารถสื่อสารกับนายหน้า AMQP ได้
AMQP ไม่ใช่โปรโตคอลเดียวที่ใช้โดย RabbitMQ รูปภาพด้านล่างแสดงโปรโตคอล ภาษา และ API ทั้งหมดที่ใช้งานและ/หรือรองรับโดย RabbitMQ
คุณสมบัติที่ดีที่สุดของ RabbitMQ
นอกเหนือจากการอนุญาตให้รวมแอพพลิเคชั่นต่างๆ ผ่านข้อความแบบอะซิงโครนัสและจากสถานที่ต่างๆ แล้ว RabbitMQ ยังเสนอคุณสมบัติอื่น ๆ ที่ทำให้เป็นที่นิยมอย่างมากในโลกของนายหน้าส่งข้อความ:
การจัดเก็บที่เชื่อถือได้
RabbitMQ รวมคุณสมบัติหลายอย่างที่ช่วยให้รับประกันการส่งข้อความ ในบรรดาสิ่งเหล่านี้ มันให้พื้นที่เก็บข้อมูลเมื่อไม่มีผู้บริโภคที่สามารถรับข้อความได้ ช่วยให้ผู้บริโภคยอมรับการส่งข้อความเพื่อให้แน่ใจว่าได้รับการประมวลผลเรียบร้อยแล้ว

หากการประมวลผลล้มเหลว RabbitMQ อนุญาตให้ใช้อินสแตนซ์ที่แตกต่างกันของผู้บริโภคหรือประมวลผลอีกครั้งโดยผู้บริโภครายเดิมที่ล้มเหลวในตอนแรกเมื่อกู้คืน
RabbitMQ ยังรับประกันลำดับการส่งข้อความ นั่นคือพวกมันจะถูกบริโภคตามลำดับเดียวกับที่มาถึงคิว RabbitMQ
การสร้างคลัสเตอร์
แม้ว่า RabbitMQ จะให้ประสิทธิภาพที่ยอดเยี่ยมด้วยการประมวลผลข้อความนับพันต่อวินาที แต่บางครั้งก็ต้องสามารถประมวลผลข้อความจำนวนมากขึ้นได้โดยไม่กระทบต่อประสิทธิภาพของแอปพลิเคชัน
สำหรับสิ่งนี้ RabbitMQ อนุญาตให้สร้างคลัสเตอร์เพื่อปรับขนาดโซลูชันในแนวนอน ซึ่งโปร่งใสสำหรับทั้งผู้ผลิตและผู้บริโภค
คิวว่างสูง
ใน RabbitMQ สามารถจำลองคิวข้ามโหนดหลายๆ โหนดในคลัสเตอร์ เพื่อให้แน่ใจว่าในกรณีที่โหนดล้มเหลวหรือหยุดทำงาน โบรกเกอร์สามารถดำเนินการรับข้อความจากผู้ผลิตและส่งไปยังผู้บริโภคที่เหมาะสมต่อไปได้
เส้นทางที่ยืดหยุ่น
ใน RabbitMQ กฎการกำหนดเส้นทางที่ยืดหยุ่นสามารถกำหนดได้ แม้จะทำตามรูปแบบที่กำหนด เพื่อกำหนดเส้นทางข้อความระหว่างการแลกเปลี่ยนและคิว ผ่านการผูก
รองรับหลายโปรโตคอล
นอกเหนือจากการรองรับโปรโตคอล AMQP แล้ว RabbitMQ ยังรองรับ STOMP, MQTT และ HTTP ผ่านปลั๊กอิน นอกจากนี้ยังรวมกลไกการพิสูจน์ตัวตนและการควบคุมการเข้าถึงสำหรับส่วนประกอบของโบรกเกอร์แต่ละราย
กรณีการใช้งานจริงของ RabbitMQ
กรณีการใช้งานที่สำคัญที่สุดของ RabbitMQ คือการรับประกันความไม่ตรงกันระหว่างแอปพลิเคชัน การลดการเชื่อมต่อระหว่างแอปพลิเคชัน การกระจายการแจ้งเตือน และการควบคุมคิวของงานในเบื้องหลัง
อย่างไรก็ตาม กรณีการใช้งานจริงของ RabbitMQ นั้นอยู่ในอีคอมเมิร์ซ ซึ่ง t ใช้เพื่อจัดการ ประมวลผล และส่งต่อใบสั่งขายของคุณไปยังระบบในส่วนอื่นๆ เช่น การจัดจำหน่ายและการออกใบแจ้งหนี้
เมื่อประมวลผลคำสั่งซื้อ คุณสามารถส่งต่อข้อความการขายของคุณไปยังศูนย์กระจายสินค้าและพื้นที่ใบแจ้งหนี้ได้ ในรูปแบบนี้ ทุกอย่างทำงานในแนวนอนตามรูปแบบอะซิงโครนัสสำหรับการส่งข้อความ แต่มักจะเป็นไปได้ที่จะส่งการดำเนินการไปยังหลายคิว
จากตัวอย่างก่อนหน้านี้ ฟังก์ชันนี้จะมีประโยชน์มากเมื่อลูกค้าทำการซื้อและผลิตภัณฑ์จำเป็นต้องเตรียมสำหรับการจัดจำหน่าย การขนส่ง และใบแจ้งหนี้
และเนื่องจากแต่ละส่วนเหล่านี้เป็นระบบที่แตกต่างกัน เป้าหมายของ RabbitMQ คือการส่งต่อข้อความทั้งหมดเหล่านี้ไปยังระบบที่เกี่ยวข้อง
ทางเลือก Rabbit MQ:
RabbitMQ นั้นง่ายกว่าที่เห็นมาก และมีตัวเลือกอื่นให้เลือกมากมาย ซึ่งรวมถึง:
#1. ไอรอนเอ็มคิว
IronMQ เป็นซอฟต์แวร์จัดคิวข้อความที่รวดเร็วเป็นพิเศษ มีความพร้อมใช้งานสูง ทนทานในการออกแบบ และโดยเฉพาะอย่างยิ่งสำหรับการจัดส่งครั้งเดียว IronMQ เป็นโซลูชันแบบเนทีฟบนคลาวด์ที่ทรงพลังที่สุดสำหรับสถาปัตยกรรมแอปพลิเคชันสมัยใหม่

รองรับพุชคิว พูลคิว และโพลล์แบบยาว ซึ่งทำให้คำขอโพลล์เปิดนานขึ้น นอกจากนี้ยังสามารถใช้ศูนย์ข้อมูลที่มีความพร้อมใช้งานสูงหลายศูนย์ ซึ่งอำนวยความสะดวกในการปรับขยาย
คุณสามารถปรับใช้ในระบบคลาวด์ บนฮาร์ดแวร์ที่ใช้ร่วมกันหรือเฉพาะ หรือภายในองค์กร นอกจากนี้ยังมีไลบรารีไคลเอนต์มากมายพร้อมเอกสารประกอบที่อ่านง่าย
#2. อาปาเช่ คาฟคา
Kafka เป็นแพลตฟอร์มที่มีความโดดเด่นในการสตรีมเหตุการณ์แบบกระจาย ที่แกนหลัก Kafka ได้รับการออกแบบให้เป็นบันทึกการกระทำที่จำลองแบบ แจกจ่าย และถาวร

ความสามารถในการใช้งานที่ยอดเยี่ยมที่สุดคือไมโครเซอร์วิสพลังงานที่ขับเคลื่อนด้วยเหตุการณ์หรือแอปพลิเคชันการประมวลผลสตรีมขนาดใหญ่ จำลองเหตุการณ์แบบอะซิงโครนัสโดยอัตโนมัติภายในคลัสเตอร์เพื่อให้มีความทนทานต่อข้อผิดพลาดและความพร้อมใช้งานสูง
#3. อาปาเช่ ActiveMQ

ActiveMQ เป็น Message Broker หลายโปรโตคอลบน Java ด้วยวิธีนี้ เราสามารถรวมแอปพลิเคชันโดยใช้โปรโตคอลการจัดคิวข้อความ AMQP ที่เลเยอร์แอปพลิเคชัน
มันใช้โปรโตคอลหลายอย่างสำหรับการรวมเข้าด้วยกัน เช่น JMS (native Java) และ Stomp (ซึ่งสามารถใช้โดยแอปพลิเคชัน PHP) และอื่น ๆ
นอกจากนี้ Amazon ยังมีเวอร์ชัน "จัดการ" ที่เรียกว่า Amazon MQ ซึ่งทำให้การใช้บริการง่ายขึ้นมาก
คำสุดท้าย
นายหน้ารับส่งข้อความเป็นส่วนสำคัญในสถาปัตยกรรมขององค์กร ถึงกระนั้น ด้วยการเพิ่มขึ้นของผู้ใช้ที่เข้าสู่ระบบของบริษัทผ่านช่องทางต่างๆ ผลิตภัณฑ์จึงมีความจำเป็นที่ช่วยให้สามารถปรับขนาดตามแนวนอนได้ด้วยต้นทุนที่ต่ำ ช่วยให้การประมวลผลข้อความจำนวนมากต่อวินาที
นี่คือที่ที่โบรกเกอร์รุ่นใหม่ เช่น RabbitMQ มีความเกี่ยวข้องมากขึ้นในแอปพลิเคชันสมัยใหม่ ซึ่งพยายามที่จะนำเสนอความพร้อมใช้งาน ความน่าเชื่อถือ การทำงานร่วมกัน และประสิทธิภาพในระดับสูงแก่ลูกค้าของเรา
คุณยังสามารถสำรวจแพลตฟอร์มโฮสติ้ง RabbitMQ ที่เชื่อถือได้สำหรับแอปพลิเคชันของคุณ