กลับไปหน้าบทความ

อ่าน 3 นาที

ซีโร่เอ็มคิว

ZeroMQ (สะกดว่า ØMQ , 0MQ หรือ ZMQ ก็ได้) เป็น ไลบรารี การส่งข้อความ แบบอะซิงโครนัส มุ่งเน้นการใช้งานใน แอปพลิเคชัน แบบกระจาย หรือแบบพร้อมกัน โดยมี คิวข้อความ แต่แตกต่างจาก...

ซีโร่เอ็มคิว

ซีโร่เอ็มคิว
นักพัฒนาไอแมทิกซ์
เวอร์ชันเสถียร
4.3.5 [ 1 ] / 9 ตุลาคม 2023 ( 9 ตุลาคม 2566 )
เขียนเป็นซี++
แพลตฟอร์มข้ามแพลตฟอร์ม
พิมพ์คิวข้อความ , เฟรมเวิร์กการทำงานพร้อมกัน
ใบอนุญาตMPL-2.0 [ 2 ]
เว็บไซต์zeromq .org
ที่เก็บข้อมูล
  • github.com/zeromq/libzmq

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โดยมุ่งเน้นที่การทำให้ผู้มีส่วนร่วมรายใหม่สามารถเข้าร่วมได้ง่ายขึ้น และลดการพึ่งพาผู้มีส่วนร่วมรายเก่า

ดูเพิ่มเติม

  • เว็บไซต์อย่างเป็นทางการ

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=ZeroMQ&oldid=1342964394 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ซีโร่เอ็มคิว

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 โดยมุ่งเน้นที่การทำให้ผู้มีส่วนร่วมรายใหม่สามารถเข้าร่วมได้ง่ายขึ้น...