RabbitMQ อธิบายใน 5 นาทีหรือน้อยกว่า

วันนี้เราจะมาดูวิธีเพิ่มความเร็วในการโหลดหน้าเว็บของคุณด้วยการดำเนินการประมวลผลที่หนักที่สุดแบบอะซิงโครนัส จัดการทั้งหมดได้ง่ายมาก ขอบคุณ RabbitMQ

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

RabbitMQ คืออะไร

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

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

RabbitHQ ทำงานอย่างไร

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

เช่นเดียวกับการสื่อสารทั้งหมด เราต้องการผู้ผลิต ข้อความ และผู้รับ ตรงกลางของเค้กคือ RabbitMQ ซึ่งจะเป็นที่ที่ข้อความกำลังรอผู้รับ

มาทำความเข้าใจวิธีการทำงานกันดีกว่าโดยรู้จักประเภทของการแลกเปลี่ยนที่แสดงถึงการแลกเปลี่ยนข้อความ

ประเภทการแลกเปลี่ยน

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

เครดิตรูปภาพ: CloudAQMP

ประเภทของการแลกเปลี่ยนคือ Direct, Fanout, Topic และ Readers

การแลกเปลี่ยนโดยตรง

สมมติว่าผู้ผลิตต้องการส่งข้อความยืนยันการซื้อไปยังผู้บริโภคสามราย นั่นคือระบบจำเป็นต้องสื่อสารกับระบบที่แตกต่างกันสามระบบเพื่อทำการซื้อ

เนื่องจาก RabbitMQ ส่งข้อความแยกกันไปยังแต่ละคิว จึงมีโมเมนตัมที่จะทำให้ระบบอื่นๆ เหล่านี้ได้รับข้อความโดยตรง

โดยปกติการแลกเปลี่ยนจะส่งต่อข้อความไปยังคิว แต่เรามักไม่ต้องการให้ข้อความของเราถูกส่งไปยังคิวทั้งหมด ดังนั้นจึงมีเงื่อนไขหลายประการที่เราสามารถนำไปใช้ในการแลกเปลี่ยนได้

คุณจึงสามารถส่งข้อความของคุณไปยังผู้บริโภคเพียงรายเดียว แทนที่จะส่งไปให้ทุกคน

Binding Key: ในการเชื่อมต่อคิวกับการแลกเปลี่ยน คุณต้องสร้างการเชื่อมโยง ซึ่งเป็นความสัมพันธ์ระหว่างคิวและการแลกเปลี่ยน เช่น ตัวเชื่อมต่อ

Routing Key: ในการเชื่อมโยงนี้ เรายังสามารถสร้างองค์ประกอบที่เรียกว่า routing key ซึ่งกล่าวอีกนัยหนึ่งคือกุญแจสำคัญในการส่งต่อข้อความของเราไปยังคิวเฉพาะ

  9 ซอฟต์แวร์ Timesheet ที่ดีที่สุดสำหรับการติดตามเวลาของพนักงานด้วย GPS

หากคุณมีคีย์การกำหนดเส้นทาง X, คีย์การกำหนดเส้นทาง Y และคีย์การกำหนดเส้นทาง Z ตัวอย่างเช่น ข้อความที่มีคีย์การกำหนดเส้นทาง Y จะผ่านคิว Y และส่งตรงไปยังผู้บริโภคที่คุณกำหนดให้รับข้อความ

ด้วยวิธีนี้ เราสามารถมีคิวหลายรายการที่เชื่อมต่อกับการแลกเปลี่ยน แต่ในขณะเดียวกัน พวกมันยังสามารถมีความสัมพันธ์ที่แตกต่างกันกับการแลกเปลี่ยนโดยใช้คีย์การกำหนดเส้นทาง

Fanout แลกเปลี่ยน

เมื่อข้อความถูกส่งไปยังการแลกเปลี่ยน ข้อความนั้นจะถูกส่งไปยังคิวทั้งหมดที่เชื่อมต่ออยู่ ดังนั้นหากคุณมี 10 คิวที่เชื่อมต่อกับ fanout exchange คิวทั้งหมดจะได้รับข้อความที่ส่งไป

การแลกเปลี่ยนหัวข้อ

เป็นหนึ่งในการแลกเปลี่ยนที่ยืดหยุ่นที่สุด ทำให้เราสามารถส่งข้อความตามหัวเรื่องได้ และขึ้นอยู่กับวิธีที่คุณตั้งชื่อคีย์การกำหนดเส้นทาง คุณสามารถสร้างรูปแบบของกฎและความสัมพันธ์ระหว่างระบบได้

ตัวอย่างเช่น: คีย์การกำหนดเส้นทาง (x.*); รหัสเส้นทาง (*.z); คีย์การกำหนดเส้นทาง (*.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 อนุญาตให้ใช้อินสแตนซ์ที่แตกต่างกันของผู้บริโภคหรือประมวลผลอีกครั้งโดยผู้บริโภครายเดิมที่ล้มเหลวในตอนแรกเมื่อกู้คืน

  คนดังตามความต้องการ: Cameo คืออะไร?

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 ที่เลเยอร์แอปพลิเคชัน

  วิธีจำลอง Do-While Loops ใน Python

มันใช้โปรโตคอลหลายอย่างสำหรับการรวมเข้าด้วยกัน เช่น JMS (native Java) และ Stomp (ซึ่งสามารถใช้โดยแอปพลิเคชัน PHP) และอื่น ๆ

นอกจากนี้ Amazon ยังมีเวอร์ชัน “จัดการ” ที่เรียกว่า Amazon MQ ซึ่งทำให้การใช้บริการง่ายขึ้นมาก

คำสุดท้าย

นายหน้ารับส่งข้อความเป็นส่วนสำคัญในสถาปัตยกรรมขององค์กร ถึงกระนั้น ด้วยการเพิ่มขึ้นของผู้ใช้ที่เข้าสู่ระบบของบริษัทผ่านช่องทางต่างๆ ผลิตภัณฑ์จึงมีความจำเป็นที่ช่วยให้สามารถปรับขนาดตามแนวนอนได้ด้วยต้นทุนที่ต่ำ ช่วยให้การประมวลผลข้อความจำนวนมากต่อวินาที

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

คุณยังสามารถสำรวจแพลตฟอร์มโฮสติ้ง RabbitMQ ที่เชื่อถือได้สำหรับแอปพลิเคชันของคุณ

เรื่องล่าสุด

x