ฉันจะซิงโครไนซ์ข้อมูลระหว่างอุปกรณ์ได้อย่างไรหลีกเลี่ยงการสูญเสียข้อความและการทำซ้ำ


9

ฉันมีเครือข่าย IoT ของอุปกรณ์ที่ส่งข้อมูลระหว่างกันโดยมีการจัดเก็บข้อมูลในฐานข้อมูล

หากฉันมีอุปกรณ์ที่ส่งคำร้องขอ 10 แพ็กเก็ต / API ตามลำดับบางครั้งมีเพียงไม่กี่ที่มาถึงปลายทาง ตัวอย่างเช่นแพ็คเก็ต 1, 3 และ 9 อาจถึงปลายทางของพวกเขาในขณะที่แพ็กเก็ตอื่นไม่ทำ

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

คำตอบ:


6

โดยทั่วไปคุณจะต้องเลือกโปรโตคอลที่มีการรับประกันที่เข้มงวดว่าลูกค้าจะได้รับแพ็คเก็ต / ข้อความใด ๆ ตามลำดับหรือไม่และจะอนุญาตให้ทำซ้ำได้หรือไม่

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

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

โปรดทราบว่า QoS 2 รักษาลำดับข้อความและป้องกันการทำซ้ำข้อความตามที่ระบุไว้

มีค่าใช้จ่ายจำนวนมากในการใช้ MQTT QoS 2 เมื่อเทียบกับมาตรฐาน QoS 0 (ซึ่งคล้ายกับข้อความที่ไฟและลืมหากไม่ถึงนายหน้าแล้วข้อความจะไม่ได้รับอีกและมันหายไปตลอดกาล ) - QoS 2 ต้องมี 4 ข้อความ ( PUBLISHจากผู้ส่งPUBRECจากนายหน้าPUBRELจากลูกค้าPUBCOMPจากนายหน้า) ดังนั้นโดยทั่วไปจะใช้เวลาในการประมวลผลนานขึ้นใช้ทรัพยากรมากขึ้น (ดังนั้นการส่งสัญญาณวิทยุที่นานขึ้นและการใช้พลังงานมากขึ้นในจุดปลายทางที่ จำกัด )

ข้อความ MQTT QoS 2 จะถูกส่งจากผู้ส่งซ้ำ ๆ จนกว่าจะได้รับการตอบรับจากนายหน้าดังนั้นในที่สุดข้อความของคุณควรผ่านแม้ว่าการเชื่อมต่อของคุณจะไม่สมบูรณ์ก็ตาม

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


1
ขอบคุณ @ Aurora0001 สำหรับงานและตอบกลับของคุณ มีกลไกใดที่ใช้โปรโตคอล HTTP การสื่อสารข้อความ / async หรือ IP แพ็คเก็ตที่ใช้หรือสามารถพูดชนิดของไฟและลืม? สมมติว่าหนึ่งสถานการณ์ - ระบบส่งข้อความไปยังระบบ B ในระบบข้อความ 5 สร้าง / เตรียมที่จะส่งในลำดับเช่น - 1,2,3,4,5 ในระบบ B ได้รับข้อความเช่น - 1,4,5 นี่คือระบบ B พลาดบันทึก / แพ็คเก็ต / ข้อมูลสำหรับ 2 3. ดังนั้นสิ่งที่อาจจะเป็นกลไกที่จะทำให้การซิงค์ระหว่างระบบ AB ไม่มีหายไปไม่มีการทำสำเนาบันทึกการเดินทางโดยใช้ขั้นต่ำ / แบนด์วิดธ์ / เครือข่าย
user1467280-Satyajit จริง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.