MQTT เชื่อมต่ออยู่เสมอและโหลดข้อมูล 4G


10

ฉันกำลังทำงานในโครงการ IoT ที่เกี่ยวข้องกับลูกค้า MQTT หลายพันรายที่เชื่อมต่อกับนายหน้า (mosquitto) ผ่านเราเตอร์ / โมเด็ม 4G / WiFi ลูกค้าน้อยกว่า 10 คนเชื่อมต่อกับเราเตอร์เดียวกันและเราเตอร์มาจากสถานที่ต่างกัน (เมืองต่าง ๆ )

ตอนนี้เรามีลูกค้าน้อยมากและพวกเขาเชื่อมต่อกับนายหน้าอยู่เสมอ ฉันรู้จากการสนทนานี้ว่าจะไม่มีปัญหาแม้ว่าพวกเขาจะเติบโตถึง 1,000+ หน่วย

คำถามของฉันเกี่ยวกับปริมาณการรับส่งข้อมูลในการเชื่อมต่อ 4G ผู้ใช้ปลายทางกลัวการบริโภคข้อมูลโดยที่ "ช่อง" เหล่านั้นเปิดขึ้นและไม่ได้ใช้งาน เท่าที่ฉันเข้าใจเมื่อไม่มีกิจกรรมเท่านั้นที่ส่งแพ็กเก็ตแบบ keep-aliveแต่ฉันไม่สามารถหาข้อมูลนี้ได้อย่างแน่นอนในเอกสาร MQTT

ฉันสามารถสันนิษฐานได้ว่าทราฟฟิกเมื่อไม่มีแพ็กเก็ตที่ถูกเผยแพร่มีความสำคัญน้อย?

คำตอบ:


6

MQTT ข้อมูลจำเพาะรายการรายละเอียดของPINGREQและPINGRESPแพ็คเก็ตที่ทำขึ้นการทำธุรกรรมแบบ keep-มีชีวิตอยู่

แต่ละรายการมีขนาดเพียง 2 ไบต์ดังนั้นเหตุการณ์แบบ keep-alive เต็มจะใช้ทั้งหมด 4 ไบต์ เนื่องจากคุณสามารถควบคุมความถี่ในการส่งแพ็คเก็ตแบบ keep-alive สำหรับไคลเอนต์แต่ละคนขึ้นอยู่กับความเร็วที่คุณจำเป็นต้องรู้ว่าการเชื่อมต่อได้ลดลงคุณสามารถควบคุมได้อย่างเต็มที่ว่าจะใช้ข้อมูลเท่าใดเมื่อไม่มีการเผยแพร่ข้อความ

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


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

อย่างไรก็ตามฉันรู้พฤติกรรมของ PINGREQ / RESP แต่สิ่งที่ฉันไม่พบคือพวกเขาเป็นแพ็กเก็ตเดียวที่แลกเปลี่ยนกันเมื่อไม่มีกิจกรรมจริง (เช่นเริ่มต้นโดยแอปพลิเคชันผู้ใช้) ฉันสามารถอนุมานได้จากคำตอบของคุณ แต่เอกสารดูเหมือนจะไม่ได้ระบุอย่างชัดเจน
ทำเครื่องหมาย

ตัวจับเวลาแบบ keep-alive ถูกรีเซ็ตทุกครั้งที่ได้รับแพ็คเก็ตฉันจำไม่ได้ว่าในสเป็คนี้ถูกพูดออกมาจากส่วนบนของหัวของฉัน
hardillb

2
เพียงแค่ต้องการชี้ให้เห็นว่าข้อเสนอแนะเพื่อแนะนำนายหน้าท้องถิ่นทำให้รู้สึกมากขึ้นถ้าเราไม่ได้พูดถึง 2 ไบต์ต่อข้อความ แต่เนื่องจาก TCP / IP มันเป็น 42 ไบต์ต่อข้อความดังนั้น 84 สำหรับรอบปิงหนึ่งรอบ
xwoker

1
@ Mark ความจริงที่ว่าเฉพาะปิงแพ็คเก็ตเป็นสิ่งเดียวที่ส่งหากไม่มีการส่งข้อความโดยนัยหลังจากประโยคนี้: docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/…
hardillb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.