MQTT คืออะไร
MQTT เป็นโปรโตคอลการส่งข้อความที่อิงตามมาตรฐาน หรือชุดของกฎที่ใช้สำหรับการสื่อสารระหว่างเครื่องต่อเครื่อง เซ็นเซอร์อัจฉริยะ อุปกรณ์สวมใส่ และอุปกรณ์ Internet of Things (IoT) อื่นๆ มักจะต้องส่งและรับข้อมูลผ่านเครือข่ายที่มีข้อจำกัดด้านทรัพยากร ซึ่งมีแบนด์วิดท์จำกัด อุปกรณ์ IoT เหล่านี้ใช้ MQTT ในการรับส่งข้อมูล เนื่องจากมันใช้งานง่ายและสามารถสื่อสารข้อมูล IoT ได้อย่างมีประสิทธิภาพ MQTT รองรับการส่งข้อความจากอุปกรณ์ไปยังคลาวด์และจากคลาวด์ไปยังอุปกรณ์
โปรโตคอล MQTT สำคัญอย่างไร
โปรโตคอล MQTT กลายเป็นมาตรฐานสำหรับการรับส่งข้อมูล IoT เนื่องจากประโยชน์ดังต่อไปนี้:
สิ้นเปลืองทรัพยากรน้อยและประสิทธิภาพสูง
การนำ MQTT ไปใช้งานบนอุปกรณ์ IoT นั้นต้องการทรัพยากรเพียงเล็กน้อย ดังนั้นมันจึงสามารถใช้ได้กับไมโครคอนโทรลเลอร์ขนาดเล็กได้ ตัวอย่างเช่น ข้อความควบคุม MQTT ที่สั้นที่สุดสามารถมีขนาดข้อมูลเพียงสองไบต์เท่านั้น ส่วนหัวของข้อความ MQTT ก็มีขนาดเล็กเช่นกัน มันจึงให้ประสิทธิภาพแบนด์วิดท์เครือข่ายที่ดีที่สุด
ปรับขนาดได้
การนำ MQTT ไปใช้นั้นต้องการโค้ดเพียงน้อย ซึ่งจะใช้พลังงานในการทำงานเพียงเล็กน้อย โปรโตคอลนี้ยังมีคุณสมบัติในตัวเพื่อรองรับการสื่อสารกับอุปกรณ์ IoT จำนวนมาก ดังนั้นคุณจึงสามารถใช้โปรโตคอล MQTT เพื่อเชื่อมต่อกับอุปกรณ์เหล่านี้ได้นับล้านเครื่อง
น่าเชื่อถือ
อุปกรณ์ IoT จำนวนมากเชื่อมต่อผ่านเครือข่ายเซลลูลาร์ที่ไม่มีความน่าเชื่อถือ มีแบนด์วิดท์ต่ำและเวลาแฝงสูง MQTT มีคุณสมบัติในตัวที่ช่วยลดเวลาที่อุปกรณ์ IoT จะใช้ในการกลับมาเชื่อมต่อกับคลาวด์อีกครั้ง นอกจากนี้ยังกำหนดระดับคุณภาพการบริการที่แตกต่างกันสามระดับ เพื่อรับประกันความน่าเชื่อถือสำหรับกรณีการใช้งาน IoT ต่างๆ — ไม่เกินหนึ่งครั้ง (0) อย่างน้อยหนึ่งครั้ง (1) ครั้งเดียวเท่านั้น (2)
ปลอดภัย
MQTT ช่วยให้นักพัฒนาสามารถเข้ารหัสลับข้อความและรับรองความถูกต้องของอุปกรณ์และผู้ใช้ได้ง่าย โดยใช้โปรโตคอลการรับรองความถูกต้องสมัยใหม่ เช่น OAuth, TLS1.3, Customer Managed Certificates ฯลฯ
มีการสนับสนุนที่ดี
ภาษาโปรแกรมหลายภาษา เช่น Python รองรับการใช้งานโปรโตคอล MQTT อย่างกว้างขวาง ดังนั้นนักพัฒนาจึงสามารถนำไปใช้งานได้อย่างรวดเร็ว โดยมีการเขียนโค้ดน้อยที่สุดในแอปพลิเคชันประเภทใดๆ
ประวัติเบื้องหลังโปรโตคอล MQTT เป็นอย่างไร
โปรโตคอล MQTT ถูกคิดค้นขึ้นในปี 1999 เพื่อใช้ในอุตสาหกรรมน้ำมันและก๊าซ วิศวกรต้องการโปรโตคอลที่ใช้แบนด์วิธน้อยที่สุด และสิ้นเปลืองแบตเตอรี่น้อยที่สุด เพื่อการติดตามตรวจสอบท่อส่งน้ำมันผ่านดาวเทียม ในตอนเริ่มแรก โปรโตคอลนี้ถูกเรียกว่า Message Queuing Telemetry Transport เนื่องจากผลิตภัณฑ์ IBM MQ Series เป็นผู้สนับสนุนระยะเริ่มแรก ในปี 2010 IBM ได้เผยแพร่โปรโตคอล MQTT 3.1 ซึ่งเป็นโปรโตคอลแบบเปิด ที่ทุกคนสามารถนำไปใช้ได้ฟรี ซึ่งในปี 2013 ได้มีการส่งโปรโตคอลนี้ไปยังหน่วยงานดูแลข้อกำหนดเฉพาะของ Organization for the Advancement of Structured Information Standards (OASIS) เพื่อให้เป็นผู้ดูแลรักษา ในปี 2019 OASIS ได้เผยแพร่ MQTT เวอร์ชัน 5 ที่เป็นเวอร์ชันอัปเกรด ในตอนนี้ MQTT ไม่ใช่ตัวย่ออีกต่อไป แต่ถือเป็นชื่อทางการของโปรโตคอล
หลักการเบื้องหลัง MQTT คืออะไร
โปรโตคอล MQTT ทำงานบนหลักการแบบ เผยแพร่/สมัครรับ ในการสื่อสารผ่านเครือข่ายแบบดั้งเดิม ไคลเอนต์และเซิร์ฟเวอร์จะสื่อสารกันโดยตรง ไคลเอนต์จะร้องขอทรัพยากรหรือข้อมูลจากเซิร์ฟเวอร์ จากนั้นเซิร์ฟเวอร์จะประมวลผลและส่งข้อความตอบกลับมา อย่างไรก็ตาม MQTT ใช้รูปแบบ เผยแพร่/สมัครรับ เพื่อจะได้แยกผู้ส่งข้อความ (ผู้เผยแพร่) ออกจากผู้รับข้อความ (ผู้สมัครรับ) องค์ประกอบที่สามที่เรียกว่าโบรกเกอร์ข้อความจะเป็นตัวจัดการการสื่อสารระหว่างผู้เผยแพร่และผู้สมัครรับข้อมูลแทน งานของโบรกเกอร์คือการกรองข้อความขาเข้าทั้งหมดจากผู้เผยแพร่ และกระจายไปยังผู้สมัครรับข้อความอย่างถูกต้อง โบรกเกอร์จะแยกผู้เผยแพร่กับผู้สมัครรับข้อความออกจากกันดังนี้:
การแยกเชิงพื้นที่
ผู้เผยแพร่และผู้สมัครรับจะไม่ทราบตำแหน่งเครือข่ายของกันและกัน และไม่แลกเปลี่ยนข้อมูล เช่น ที่อยู่ IP หรือหมายเลขพอร์ต ซึ่งกันและกัน
การแยกเชิงเวลา
ผู้เผยแพร่และผู้สมัครรับจะไม่ต้องทำงานหรือมีการเชื่อมต่อเครือข่ายในเวลาเดียวกัน
การแยกการซิงโครไนซ์
ทั้งผู้เผยแพร่และผู้สมัครรับสามารถส่งหรือรับข้อความได้โดยไม่รบกวนการทำงานกัน เช่น ผู้สมัครรับจะไม่ต้องรอให้ผู้เผยแพร่ส่งข้อความ
ส่วนประกอบของ MQTT คืออะไรบ้าง
MQTT ใช้รูปแบบการเผยแพร่/สมัครรับข้อความ โดยกำหนดนิยามไคลเอนต์และโบรกเกอร์ดังต่อไปนี้
ไคลเอนต์ MQTT
ไคลเอ็นต์ MQTT คืออุปกรณ์ใดๆ ตั้งแต่เซิร์ฟเวอร์ไปจนถึงไมโครคอนโทรลเลอร์ที่เรียกใช้ไลบรารี MQTT หากไคลเอ็นต์ส่งข้อความ มันทำหน้าที่เป็นผู้เผยแพร่ และหากไคลเอ็นต์รับข้อความ มันทำหน้าที่เป็นผู้รับ โดยทั่วไปแล้ว อุปกรณ์ใดๆ ที่สื่อสารโดยใช้ MQTT ผ่านเครือข่าย ก็สามารถเรียกว่าเป็นอุปกรณ์ไคลเอ็นต์ MQTT
โบรกเกอร์ MQTT
โบรกเกอร์ MQTT เป็นระบบแบ็กเอนด์ที่ประสานงานการรับส่งข้อความระหว่างไคลเอนต์ต่างๆ หน้าที่ของโบรกเกอร์นั้นรวมถึงการรับและการกรองข้อความ การระบุไคลเอนต์ที่สมัครรับข้อความแต่ละข้อความ และการส่งข้อความไปให้ไคลเอนต์เหล่านั้น นอกจากนี้ยังมีหน้าที่งานอื่น ๆ ด้วย เช่น:
- การอนุญาตและการรับรองความถูกต้องให้ไคลเอ็นต์ MQTT
- การส่งต่อข้อความไปยังระบบอื่นเพื่อการวิเคราะห์เพิ่มเติม
- การจัดการข้อความที่พลาดไป และเซสชันของไคลเอ็นต์
การเชื่อมต่อ MQTT
ไคลเอนต์และโบรกเกอร์เริ่มต้นการสื่อสารโดยใช้การเชื่อมต่อ MQTT ไคลเอนต์เริ่มต้นการเชื่อมต่อโดยส่งข้อความ CONNTECT ถึงโบรกเกอร์ MQTT โบรกเกอร์ยืนยันว่าสร้างการเชื่อมต่อแล้ว โดยการตอบกลับด้วยข้อความ CONNACK ทั้งไคลเอนต์ MQTT และโบรกเกอร์จำเป็นต้องใช้สแต็ก TCP/IP ในการสื่อสาร ไคลเอนต์จะไม่เชื่อมต่อกันเอง แต่จะเชื่อมต่อเฉพาะกับโบรกเกอร์เท่านั้น
MQTT ทำงานอย่างไร
ภาพรวมวิธีการทำงานของ MQTT แสดงไว้ต่อไปนี้
- ไคลเอนต์ MQTT จะสร้างการเชื่อมต่อกับโบรกเกอร์ MQTT
- เมื่อเชื่อมต่อแล้ว ลูกค้าสามารถเผยแพร่ข้อความ สมัครรับข้อความที่เฉพาะเจาะจง หรือทำทั้งสองอย่างได้
- เมื่อโบรกเกอร์ MQTT ได้รับข้อความแล้ว ก็ส่งต่อไปยังผู้สมัครรับข้อความที่ให้ความสนใจ
มาแจกแจงรายละเอียดเพื่อให้เข้าใจได้มากขึ้น
หัวข้อ MQTT
คำว่า "หัวข้อ" หมายถึงคำหลักที่โบรกเกอร์ MQTT ใช้ในการกรองข้อความสำหรับไคลเอ็นต์ MQTT หัวข้อจะได้รับการจัดระเบียบตามลำดับชั้น ที่คล้ายกับไฟล์หรือไดเร็กทอรีหรือโฟลเดอร์ ตัวอย่างเช่น ลองพิจารณาระบบบ้านอัจฉริยะในบ้านหลายชั้นซึ่งมีอุปกรณ์อัจฉริยะต่างๆ ในแต่ละชั้น ในกรณีเช่นนั้น โบรกเกอร์ MQTT อาจจัดหัวข้อเป็น:
บ้านของเรา/ชั้นล่าง/ห้องนั่งเล่น/แสงสว่าง
บ้านของเรา/ชั้นหนึ่ง/ห้องครัว/อุณหภูมิ
MQTT เผยแพร่
ไคลเอ็นต์ MQTT เผยแพร่ข้อความที่มีหัวข้อและข้อมูลในรูปแบบไบต์ ไคลเอ็นต์จะกำหนดรูปแบบข้อมูล เช่น ข้อความ, ข้อมูลไบนารี, ไฟล์ XML, หรือ JSON ตัวอย่างเช่น หลอดไฟในระบบสมาร์ทโฮมอาจเผยแพร่ข้อความ เปิด สำหรับหัวข้อ ห้องนั่งเล่น/แสงสว่าง
MQTT สมัครรับข้อความ
ไคลเอนต์ MQTT ส่งข้อความ SUBSCRIBE ไปให้โบรกเกอร์ MQTT เพื่อจะรับข้อความในหัวข้อที่สนใจ ข้อความนี้ประกอบด้วยตัวระบุที่ไม่ซ้ำกันและรายการการสมัครรับข้อมูล ตัวอย่างเช่น แอปบ้านอัจฉริยะในโทรศัพท์ของคุณต้องการแสดงจำนวนไฟที่เปิดอยู่ในบ้านของคุณ แอปจะสมัครรับหัวข้อ แสงสว่าง และเพิ่มตัวนับสำหรับข้อความ เปิด ทุกข้อความ
MQTT over WSS คืออะไร
MQTT over WebSockets (WSS) เป็นการปรับใช้ MQTT เพื่อการรับข้อมูลไปยังเว็บเบราว์เซอร์โดยตรง โปรโตคอล MQTT จะกำหนดไคลเอนต์ JavaScript เพื่อให้การสนับสนุน WSS สำหรับเบราว์เซอร์ ในกรณีนี้ โปรโตคอลจะทำงานตามปกติ แต่จะเพิ่มส่วนหัวเพิ่มเติมไปยังข้อความ MQTT เพื่อให้สามารถรองรับโปรโตคอล WSS ได้ด้วย คุณอาจมองได้ว่าเป็นเพย์โหลดของข้อความ MQTT ที่รวมอยู่ในซองจดหมายของ WSS
MQTT ปลอดภัยหรือไม่?
การสื่อสาร MQTT ใช้โปรโตคอล SSL เพื่อคุ้มครองข้อมูลที่ละเอียดอ่อนที่ส่งโดยอุปกรณ์ IoT คุณสามารถใช้ข้อมูลประจำตัว การรับรองความถูกต้อง และการอนุญาตระหว่างไคลเอ็นต์และโบรกเกอร์ได้ โดยใช้ใบรับรอง SSL และ/หรือรหัสผ่าน โดยปกติแล้ว โบรกเกอร์ MQTT จะรับรองความถูกต้องของไคลเอ็นต์โดยใช้รหัสผ่านของตัวเอง และตัวระบุไคลเอ็นต์ที่ไม่ซ้ำกันซึ่งจัดสรรให้กับไคลเอ็นต์แต่ละรายการ ในการนำมาใช้งานส่วนใหญ่ ไคลเอ็นต์จะตรวจสอบความถูกต้องของเซิร์ฟเวอร์ด้วยใบรับรองหรือการค้นหา DNS และคุณยังสามารถใช้โปรโตคอลการเข้ารหัสลับได้ ด้วย MQTT
MQTT เป็นการดำเนินการแบบ RESTful หรือไม่
MQTT ไม่ใช่ RESTful Representational state transfer (REST) เป็นแนวทางเชิงสถาปัตยกรรมของการสื่อสารในเครือข่ายที่ใช้รูปแบบร้องขอ-ตอบกลับ ในการสื่อสารระหว่างผู้ส่งข้อความและผู้รับข้อความ เมื่อเทียบกันแล้ว MQTT ใช้รูปแบบการสื่อสารแบบเผยแพร่/สมัครรับ ในชั้นแอปพลิเคชัน และต้องการการเชื่อมต่อ TCP แบบต่อเนื่องเพื่อการส่งข้อความแบบพุช อย่างไรก็ตาม MQTT เวอร์ชัน 5 ได้เพิ่มวิธีการแบบร้องขอ/ตอบกลับ เข้ามาใหม่ เพื่อดำเนินการในลักษณะที่คล้ายกับวิธี REST ซึ่งผู้เผยแพร่ข้อมูลสามารถแนบหัวข้อการตอบกลับพิเศษซึ่งผู้รับจะประมวลผลและสร้างการตอบกลับที่เหมาะสม
AWS สนับสนุนการใช้งาน MQTT ของคุณได้อย่างไร
AWS IoT Core เป็นบริการที่มีการจัดการอย่างสมบูรณ์ที่ช่วยให้คุณเชื่อมต่ออุปกรณ์ IoT หลายพันล้านเครื่อง ทั้งยังกำหนดเส้นทางข้อความหลายล้านล้านรายการไปยังบริการของ AWS คุณสามารถ:
- เชื่อมต่อ จัดการ และปรับขนาดให้กับฟลีตอุปกรณ์ของคุณได้อย่างง่ายดายและเชื่อถือได้โดยไม่จำเป็นต้องจัดเตรียมหรือจัดการกับเซิร์ฟเวอร์
- เลือกโปรโตคอลการสื่อสารที่คุณต้องการ เช่น MQTT, HTTPS, MQTT บน WSS และ LoRaWAN
- ปกป้องการเชื่อมต่ออุปกรณ์และข้อมูลด้วยการตรวจสอบร่วมกันและการเข้ารหัสแบบครบวงจร
- กลั่นกรอง เปลี่ยนแปลง และดำเนินการตามข้อมูลของอุปกรณ์ได้ทันที โดยขึ้นอยู่กับกฎธุรกิจที่คุณกำหนด
เริ่มต้นใช้งาน MQTT บน AWS ด้วยการสร้างบัญชีฟรีวันนี้