อ่าน 3 นาที
ซีโร่เอ็มคิว
ZeroMQ (สะกดว่า ØMQ , 0MQ หรือ ZMQ ก็ได้) เป็น ไลบรารี การส่งข้อความ แบบอะซิงโครนัส มุ่งเน้นการใช้งานใน แอปพลิเคชัน แบบกระจาย หรือแบบพร้อมกัน โดยมี คิวข้อความ แต่แตกต่างจาก...
ซีโร่เอ็มคิว
| ซีโร่เอ็มคิว | |
|---|---|
| นักพัฒนา | ไอแมทิกซ์ |
| เวอร์ชันเสถียร | 4.3.5 [ 1 ] / 9 ตุลาคม 2023 |
| เขียนเป็น | ซี++ |
| แพลตฟอร์ม | ข้ามแพลตฟอร์ม |
| พิมพ์ | คิวข้อความ , เฟรมเวิร์กการทำงานพร้อมกัน |
| ใบอนุญาต | MPL-2.0 [ 2 ] |
| เว็บไซต์ | zeromq |
| ที่เก็บข้อมูล |
|
ZeroMQ (สะกดว่า ØMQ , 0MQหรือZMQก็ได้) เป็น ไลบรารี การส่งข้อความ แบบอะซิงโครนัส มุ่งเน้นการใช้งานใน แอปพลิเคชัน แบบกระจายหรือแบบพร้อมกัน โดยมีคิวข้อความแต่แตกต่างจากมิดเดิลแวร์ที่เน้นข้อความระบบ ZeroMQ สามารถทำงานได้โดยไม่ต้องมีโบรกเกอร์ข้อความโดยเฉพาะ คำว่า "ศูนย์" ในชื่อมาจาก "zero broker" [ 3 ] API ของไลบรารีได้รับการออกแบบให้คล้ายกับBerkeley sockets
ZeroMQ พัฒนาขึ้นโดยชุมชนผู้ร่วมพัฒนาขนาดใหญ่ ก่อตั้งโดย iMatix ซึ่งเป็นเจ้าของชื่อโดเมนและเครื่องหมายการค้า มีส่วนเชื่อมต่อจากภายนอกสำหรับภาษาโปรแกรมยอดนิยมหลายภาษา
เทคโนโลยี
ZeroMQ API ให้บริการซ็อกเก็ต (ซึ่งเป็นการขยายแนวคิดของ ซ็อกเก็ตโดเมน IPและUnix แบบดั้งเดิม ) โดยแต่ละซ็อกเก็ตสามารถแสดงถึง การเชื่อมต่อแบบ หลายต่อหลายระหว่างปลายทางได้การทำงานนั้นมีความละเอียดระดับข้อความ จึงจำเป็นต้อง ใช้ รูปแบบการส่งข้อความและได้รับการปรับให้เหมาะสมเป็นพิเศษสำหรับรูปแบบดังกล่าว
รูปแบบพื้นฐานของ ZeroMQ มีดังนี้:
- คำขอ-คำตอบ
- เชื่อมต่อกลุ่มไคลเอ็นต์เข้ากับกลุ่มบริการ นี่คือ รูปแบบ การเรียกใช้ฟังก์ชันระยะไกลและการกระจายงาน
- เผยแพร่-สมัครรับข้อมูล
- เชื่อมโยงกลุ่มผู้เผยแพร่กับกลุ่มผู้รับข้อมูล นี่คือรูปแบบการกระจายข้อมูล
- ระบบดึงและผลัก (ท่อส่ง)
- เชื่อมต่อโหนดในรูปแบบกระจายออก/กระจายเข้า ซึ่งสามารถมีหลายขั้นตอนและวงวนได้ นี่คือรูปแบบการกระจายและการรวบรวมงานแบบขนาน
- คู่สุดพิเศษ
- เชื่อมต่อซ็อกเก็ตสองตัวเข้าด้วยกันเป็นคู่เฉพาะ (นี่คือรูปแบบระดับต่ำขั้นสูงสำหรับกรณีการใช้งานเฉพาะ)
แต่ละรูปแบบจะกำหนดโครงสร้างเครือข่ายเฉพาะ รูปแบบการร้องขอ-ตอบกลับจะกำหนดสิ่งที่เรียกว่า "service bus" รูปแบบการเผยแพร่-สมัครรับข้อมูลจะกำหนด "data distribution tree" และรูปแบบพุช-พูลจะกำหนด "parallelised pipeline" รูปแบบทั้งหมดได้รับการออกแบบโดยเจตนาให้สามารถปรับขนาดได้อย่างไม่จำกัดและสามารถใช้งานได้ในระดับอินเทอร์เน็ต[ 4 ]
ข้อความใดๆ ที่ส่งผ่านซ็อกเก็ตจะถูกมองว่าเป็นข้อมูลที่ไม่สามารถอ่านได้การส่งข้อความไปยังผู้รับสามารถกรองได้โดยอัตโนมัติโดยใช้สตริงนำหน้าของข้อมูลนั้น วิธีการส่งข้อความที่มีให้เลือก ได้แก่TCP , PGM (มัลติแคสต์ที่เชื่อถือได้), การสื่อสารระหว่างกระบวนการ ( IPC ) และการสื่อสารระหว่างเธรด (ITC)
ไลบรารีหลักของ ZeroMQ ทำงานได้ดีมากเนื่องจากโมเดลการทำงานแบบมัลติเธรดภายใน และสามารถทำงานได้ดีกว่าแอปพลิเคชัน TCP ทั่วไปในแง่ของปริมาณงานโดยใช้เทคนิคการจัดกลุ่มข้อความอัตโนมัติ[ 5 ] [ 6 ]
ZeroMQ ใช้ ZMTP ซึ่งเป็นโปรโตคอลการถ่ายโอนข้อความของ ZeroMQ [ 7 ] ZMTP กำหนดกฎสำหรับการทำงานร่วมกันแบบย้อนหลัง กลไกความปลอดภัยที่ขยายได้ การจัดเฟรมคำสั่งและข้อความ เมตาเดตาการเชื่อมต่อ และฟังก์ชันระดับการขนส่งอื่นๆ โครงการจำนวนมากขึ้นเรื่อยๆ ใช้ ZMTP โดยตรงเป็นทางเลือกแทนการใช้การใช้งาน ZeroMQ แบบเต็มรูปแบบ[ 8 ]
ประวัติศาสตร์
Pieter Hintjensซีอีโอของ iMatix ได้จดทะเบียนโดเมน zeromq.org ในเดือนพฤษภาคม 2007 และเริ่มต้นโครงการ ZeroMQ ร่วมกับ Martin Sustrik ซึ่งทำหน้าที่เป็นสถาปนิกและนักพัฒนาหลักจนถึงเดือนธันวาคม 2011
เมื่อวันที่ 30 มีนาคม 2553 Hintjens ประกาศว่า iMatix (ผู้ออกแบบดั้งเดิมของAdvanced Message Queuing Protocol ) จะออกจากกลุ่มงาน AMQP และไม่มีแผนที่จะสนับสนุน AMQP/1.0 โดยหันไปใช้ ZeroMQ ที่ง่ายกว่าและเร็วกว่ามากแทน[ 9 ] [ 10 ]
ในปี 2011 CERNกำลังตรวจสอบวิธีการรวมโซลูชันมิดเดิลแวร์ที่ใช้ในการดำเนินงานเครื่องเร่งอนุภาคของ CERN การศึกษาของ CERN เปรียบเทียบการใช้งานโอเพนซอร์สสองแบบของCORBA , Ice , Thrift , ZeroMQ, YAMI4, [ 11 ] RTIและQpid (AMQP) และให้คะแนน ZeroMQ สูงที่สุด ส่วนหนึ่งเป็นเพราะความหลากหลายในการใช้งาน รวมถึงความสามารถในการปรับตัวเข้า กับLynxOSได้ง่าย[ 6 ]
ในช่วงต้นปี 2012 นักพัฒนาเดิมสองคนได้แยก ZeroMQ ออกมาเป็น Crossroads I/O [ 12 ] [ 13 ] Martin Sustrik ได้เริ่มต้น nanomsg [ 14 ]ซึ่งเป็นการเขียนใหม่ของไลบรารีหลักของ ZeroMQ [ 15 ]
ในเดือนสิงหาคม พ.ศ. 2555 Dongmin Yu ได้ประกาศการแปลง ZeroMQ เป็น Java อย่างสมบูรณ์ ซึ่งก็คือ JeroMQ [ 16 ]สิ่งนี้ได้เป็นแรงบันดาลใจให้เกิดการพอร์ต ZeroMQ เป็นภาษาเนทีฟอย่างสมบูรณ์เพิ่มเติม เช่น NetMQ สำหรับ C# [ 17 ]และ zmq.rs สำหรับ Rust [ 18 ]
ในเดือนมีนาคม พ.ศ. 2556 Pieter Hintjens ได้ประกาศร่างใหม่ของโปรโตคอลระดับสาย ZMTP ซึ่งนำกลไกความปลอดภัยที่ขยายได้มาสู่ ZeroMQ [ 19 ] Martin Hurton ได้นำกลไกการตรวจสอบสิทธิ์และการเข้ารหัส CurveZMQ [ 20 ] มาใช้ ในไลบรารีหลักในเวลาไม่นานหลังจากนั้น
ในปี 2016 Garrett D'Amore นักพัฒนา ZeroMQ ที่ทำงานมานานได้แยก Nanomsg ออกมาเพื่อสร้างโปรเจกต์ NNG (Nanomsg Next Generation) [ 21 ]
กระบวนการพัฒนา
ชุมชน ZeroMQ ส่วนใหญ่ใช้ Collective Code Construction Contract (C4) [ 22 ]เป็นสัญญาการพัฒนา C4 ได้รับแรงบันดาลใจจาก กระบวนการ ของ Wikipediaและ โมเดล fork + pull requestของGitHubโดยมุ่งเน้นที่การทำให้ผู้มีส่วนร่วมรายใหม่สามารถเข้าร่วมได้ง่ายขึ้น และลดการพึ่งพาผู้มีส่วนร่วมรายเก่า
ดูเพิ่มเติม
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ซีโร่เอ็มคิว
ZeroMQ (สะกดว่า ØMQ , 0MQ หรือ ZMQ ก็ได้) เป็น ไลบรารี การส่งข้อความ แบบอะซิงโครนัส มุ่งเน้นการใช้งานใน แอปพลิเคชัน แบบกระจาย หรือแบบพร้อมกัน โดยมี คิวข้อความ แต่แตกต่างจาก...
เทคโนโลยี
ZeroMQ API ให้บริการ ซ็อกเก็ต (ซึ่งเป็นการขยายแนวคิดของ ซ็อกเก็ตโดเมน IP และ Unix แบบดั้งเดิม ) โดยแต่ละซ็อกเก็ตสามารถแสดงถึง การเชื่อมต่อแบบ หลายต่อหลาย ระหว่าง ปลายทางได้ การทำงานนั้นมีความละเอียดระดับข้อความ จึงจำเป็นต้อง ใช้ รูปแบบการส่งข้อความ...
ประวัติศาสตร์
Pieter Hintjens ซีอีโอของ iMatix ได้จดทะเบียนโดเมน zeromq.org ในเดือนพฤษภาคม 2007 และเริ่มต้นโครงการ ZeroMQ ร่วมกับ Martin Sustrik ซึ่งทำหน้าที่เป็นสถาปนิกและนักพัฒนาหลักจนถึงเดือนธันวาคม 2011
กระบวนการพัฒนา
ชุมชน ZeroMQ ส่วนใหญ่ใช้ Collective Code Construction Contract (C4) [ 22 ] เป็นสัญญาการพัฒนา C4 ได้รับแรงบันดาลใจจาก กระบวนการ ของ Wikipedia และ โมเดล fork + pull request ของ GitHub โดยมุ่งเน้นที่การทำให้ผู้มีส่วนร่วมรายใหม่สามารถเข้าร่วมได้ง่ายขึ้น...