The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query และ Compute
Zenoh (ออกเสียงว่า /zeno/ ) รวมข้อมูลที่เคลื่อนไหว ข้อมูลที่อยู่นิ่ง และการคำนวณเข้าด้วยกัน โดยผสมผสาน pub/sub แบบดั้งเดิมเข้ากับพื้นที่จัดเก็บข้อมูล การสืบค้น และการคำนวณที่กระจายตามภูมิศาสตร์ ขณะเดียวกันก็รักษาระดับของเวลาและพื้นที่ได้อย่างมีประสิทธิภาพ ซึ่งเหนือกว่าสแต็กกระแสหลักใดๆ
ตรวจสอบเว็บไซต์ zenoh.io และแผนงานสำหรับข้อมูลโดยละเอียดเพิ่มเติม
Zenoh C++ API เป็นส่วนหัวเท่านั้นที่เชื่อมโยง C++ สำหรับไลบรารี zenoh-c และ zenoh-pico
การผูก C++ ยังอยู่ระหว่างการพัฒนา ดังนั้นทีมงาน Zenoh ขอขอบคุณเป็นอย่างยิ่งสำหรับความช่วยเหลือในการทดสอบบนแพลตฟอร์ม สถาปัตยกรรมระบบต่างๆ ฯลฯ และเพื่อรายงานปัญหาใดๆ ที่คุณอาจพบ สิ่งนี้จะช่วยปรับปรุงความสมบูรณ์และความแข็งแกร่งของมันอย่างมาก
ข้อกำหนดที่ยากเพียงอย่างเดียวสำหรับการสร้างไลบรารีคือคอมไพเลอร์ที่สอดคล้องกับ C ++ 17 การใช้ไลบรารีจำเป็นต้องติดตั้ง zenoh-c หรือ zenoh-pico
คำเตือน : Zenoh และระบบนิเวศอยู่ระหว่างการพัฒนาอย่างแข็งขัน เมื่อคุณสร้างจาก git ตรวจสอบให้แน่ใจว่าคุณสร้างจาก git พื้นที่เก็บข้อมูล Zenoh อื่นๆ ที่คุณวางแผนจะใช้ (เช่น การผูก ปลั๊กอิน แบ็กเอนด์ ฯลฯ) อาจเกิดขึ้นได้ว่าการเปลี่ยนแปลงบางอย่างใน git เข้ากันไม่ได้กับ Zenoh เวอร์ชันล่าสุด (เช่น deb, docker, pip) เราใช้ความพยายามเป็นพิเศษในการรักษาความเข้ากันได้ระหว่างที่เก็บ git ต่างๆ ในโปรเจ็กต์ Zenoh
ในการติดตั้ง zenoh-cpp ให้ทำตามขั้นตอนต่อไปนี้:
โคลนแหล่งที่มา
โคลนคอมไพล์ https://github.com/eclipse-zenoh/zenoh-cpp.git
สร้างและติดตั้ง
ตามค่าเริ่มต้น คาดว่าคุณได้ติดตั้ง zenoh-c แล้ว หากคุณต้องการติดตั้งสำหรับแบ็กเอนด์ zenoh-pico หรือทั้งสองอย่าง (หรือไม่ต้องการระบุแบ็กเอนด์ใดๆ) โปรดตั้งค่า ZENOHCXX_ZENOHC
หรือ ZENOHCXX_ZENOHPICO
Cmake ตัวแปรเป็น ON
หรือ OFF
ตามลำดับ โปรดสังเกตว่าจำเป็นต้องมีแบ็กเอนด์อย่างน้อยหนึ่งรายการเพื่อใช้ไลบรารีและ/หรือการทดสอบและตัวอย่างการสร้าง
ใช้ตัวเลือก CMAKE_INSTALL_PREFIX
เพื่อระบุตำแหน่งการติดตั้ง หากไม่มีพารามิเตอร์นี้ การติดตั้งจะดำเนินการไปยังตำแหน่งระบบเริ่มต้น /usr/local
ซึ่งต้องการสิทธิ์รูท
mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # เพื่อกำหนดค่าเฉพาะสำหรับแบ็กเอนด์ zenoh-ccmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # เพื่อกำหนดค่าเฉพาะสำหรับแบ็กเอนด์ zenoh-pico .. -DZENOHCXX_ZENOHC= OFF -DZENOHCXX_ZENOHPICO=OFF -DCMAKE_INSTALL_PREFIX=~/.local # เพื่อกำหนดค่าสำหรับแบ็กเอนด์ scmake ที่ไม่มี .. -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # เพื่อกำหนดค่าสำหรับทั้งแบ็กเอนด์ scmake --install
ตามค่าเริ่มต้น คาดว่าคุณได้ติดตั้ง zenoh-c แล้ว หากคุณต้องการสร้างและรันการทดสอบสำหรับแบ็กเอนด์ zenoh-pico หรือทั้งสองอย่าง โปรดตั้งค่า ZENOHCXX_ZENOHC
หรือ ZENOHCXX_ZENOHPICO
Cmake ตัวแปรเป็น ON
หรือ OFF
ตามลำดับ
หากต้องการสร้างการทดสอบให้รัน:
mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # เพื่อสร้างการทดสอบเฉพาะสำหรับ zenoh-c backendcmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # เพื่อสร้างการทดสอบเฉพาะสำหรับ zenoh-pico backendcmake .. - DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # เพื่อสร้างการทดสอบสำหรับทั้งแบ็กเอนด์ scmake --build --การทดสอบเป้าหมาย ทดสอบ
โปรดสังเกตว่าเอาต์พุตของ cmake ../zenoh-cpp
แสดงให้เห็นว่า zenoh-c และ/หรือ zenoh-pico พบการขึ้นต่อกันที่ไหน
ตัวอย่างจะแบ่งออกเป็นสองไดเรกทอรีย่อย ไดเรกทอรีย่อย universal
มีตัวอย่าง zenoh-cpp ที่สามารถสร้างได้ด้วยแบ็กเอนด์ทั้ง zenoh-c และ zenoh-pico ไดเร็กทอรีย่อย zenohc
มีตัวอย่างพร้อมฟังก์ชันการทำงานเฉพาะของ zenoh-c
ตามค่าเริ่มต้น คาดว่าคุณได้ติดตั้ง zenoh-c แล้ว หากคุณต้องการสร้างตัวอย่างสำหรับแบ็กเอนด์ zenoh-pico หรือทั้งสองอย่าง โปรดตั้งค่า ZENOHCXX_ZENOHC
หรือ ZENOHCXX_ZENOHPICO
Cmake ตัวแปรเป็น ON
หรือ OFF
ตามลำดับ
หากต้องการสร้างตัวอย่างให้รัน:
cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # เพื่อสร้างตัวอย่างเฉพาะสำหรับ zenoh-c backendcmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # เพื่อสร้างตัวอย่างเฉพาะสำหรับ zenoh-pico backendcmake .. - DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # เพื่อสร้างตัวอย่างสำหรับทั้งแบ็กเอนด์ scmake --build --ตัวอย่างเป้าหมาย
ตัวอย่างถูกวางไว้ในไดเร็กทอรี build/examples/zenohc
และ build/examples/zenohpico
เปลี่ยนไดเร็กทอรีปัจจุบันเป็นตัวแปรที่คุณต้องการ ( examples/zenohc
หรือ examples/zenohpico
ในไดเร็กทอรี build)
ดูตัวอย่างแหล่งที่มาของอาร์กิวเมนต์บรรทัดคำสั่ง (นิพจน์คีย์ ค่า ที่อยู่เราเตอร์)
ตัวอย่าง zenohc
สามารถทำงานแบบสแตนด์อโลนได้ แต่สำหรับตัวอย่าง zenohpico
จำเป็นต้องใช้เราเตอร์ zenoh ที่ใช้งานได้ ดังนั้นในการรันตัวอย่าง zenohpico
ให้ดาวน์โหลดโปรเจ็กต์ zenoh และรันเราเตอร์ (ควรติดตั้ง Rust):
โคลนคอมไพล์ https://github.com/eclipse-zenoh/zenohcd zenoh วิ่งบรรทุกสินค้า
./z_sub
./z_pub
z_pub
ควรได้รับข้อความที่ส่งโดย z_sub
./z_queryable
./z_get
z_get
ควรได้รับข้อมูลจาก z_queryable
./z_sub_thr_cpp
./z_pub_thr_cpp 1024
หลังจากหน่วงเวลา 30-40 วินาที z_sub_thr
จะเริ่มแสดงผลการวัดปริมาณงาน
ด้านล่างนี้เป็นขั้นตอนในการรวม zenoh-cpp ในโครงการ CMake โปรดดูตัวอย่าง/ไดเร็กทอรีแบบง่ายสำหรับตัวอย่างสั้นๆ ของ CMakeLists.txt
รวม zenoh-c หรือ zenoh-pico ในโครงการ CMake ของคุณ ก่อนที่ จะพึ่งพา zenoh-cpp เอง นี่เป็นสิ่งสำคัญเนื่องจากไลบรารีเป้าหมายที่คุณต้องการ ( zenohcxx::zenohpico
, zenohcxx::zenohc::lib
) จะถูกกำหนดก็ต่อเมื่อมีการกำหนดเป้าหมายไลบรารีแบ็กเอนด์ ( zenohpico::lib
และ/หรือ zenohc::lib
ถูกกำหนดไว้)
รวม zenoh-cpp โดยใช้ฟังก์ชัน find_package CMake:
find_package(zenohc) #if using zenoh-c backend find_package(zenohpico) #if using zenoh-pico backend find_package(zenohcxx)
เพิ่มการพึ่งพา zenoh-cpp ให้กับโครงการของคุณ:
target_link_libraries(yourproject PUBLIC zenohcxx::zenohc) #if using zenoh-c backend target_link_libraries(yourproject PUBLIC zenohcxx::zenohpico) #if using zenoh-pico backend
รวมส่วนหัว zenoh.hxx ฟังก์ชั่น zenoh ทั้งหมดมีอยู่ภายใต้เนมสเปซ zenoh
:
#include "zenoh.hxx" โดยใช้เนมสเปซ zenoh;
เอกสารประกอบอยู่ที่ zenoh-cpp.readthedocs.io คำแนะนำวิธีสร้างเอกสารในเครื่องอยู่ที่ docs/README.md