การรับส่งข้อความแบบ Pub/Sub คืออะไร
การรับส่งข้อความแบบ Publish-Subscribe หรือการรับส่งข้อความแบบ Pub/Sub เป็นรูปแบบการสื่อสารแบบอะซิงโครนัสที่ทำให้นักพัฒนาสามารถสร้างแอปพลิเคชันที่มีฟังก์ชันการทำงานระดับสูงและมีสถาปัตยกรรมที่ซับซ้อนในระบบคลาวด์ได้ง่าย ในสถาปัตยกรรมระบบคลาวด์สมัยใหม่ แอปพลิเคชันจะถูกแยกออกเป็นส่วนย่อยๆ ที่อิสระจากกันที่เรียกว่าบริการ การรับส่งข้อความแบบ Pub/Sub มีการแจ้งเตือนเหตุการณ์ทันทีสำหรับระบบแบบกระจายเหล่านี้ ซึ่งรองรับการสื่อสารที่ปรับขนาดได้และเชื่อถือได้ระหว่างโมดูลซอฟต์แวร์ที่เป็นอิสระจากกัน
การส่งข้อความแบบ Pub/Sub ทำงานอย่างไร
ระบบ Publish-Subscribe (pub/sub) มีส่วนประกอบสำคัญสี่ประการ
ข้อความ
ข้อความคือข้อมูลการสื่อสารที่ถูกส่งจากผู้ส่งไปยังผู้รับ ข้อมูลในข้อความจะเป็นประเภทใดก็ได้ ตั้งแต่สตริง วัตถุที่ซับซ้อน ได้แก่ ข้อความ วิดีโอ ข้อมูลเซ็นเซอร์ เสียง หรือเนื้อหาดิจิทัลอื่นๆ
หัวข้อ
ทุกข้อความจะมีหัวข้อที่เกี่ยวข้องกับเนื้อหาในข้อความ โดยหัวข้อจะทำหน้าที่เป็นเหมือนช่องทางของตัวกลางระหว่างผู้ส่งและผู้รับ ซึ่งจะเก็บรายชื่อของผู้รับที่สนใจข้อความเกี่ยวกับหัวข้อนั้นๆ
ผู้รับข้อความ
ผู้รับข้อความ (Subscriber) คือบุคคลที่รับข้อความ ผู้รับข้อความต้องลงทะเบียน (สมัคร) ในหัวข้อที่ตนสนใจ ซึ่งสามารถทำงานต่างๆ หรือทำอย่างอื่นควบคู่ไปกับข้อความได้
ตัวส่งข้อความ
ตัวส่งข้อความ (Publisher) คือส่วนประกอบที่ส่งข้อความ ซึ่งจะสร้างข้อความเกี่ยวกับหัวข้อหนึ่ง จากนั้นจะส่งข้อความเหล่านั้นไปให้ผู้รับข้อความของหัวข้อนั้นๆ ทีเดียวทั้งหมด การโต้ตอบระหว่างตัวส่งข้อความและผู้รับข้อความเป็นความเชื่อมโยงแบบหนึ่งต่อกลุ่ม ผู้เผยแพร่ไม่จำเป็นต้องรู้ว่าใครกำลังใช้ข้อมูลที่เผยแพร่ออกไป และผู้ติดตามก็ไม่จำเป็นต้องรู้ว่าข้อความนั้นมาจากไหน
คุณสมบัติของระบบส่งข้อความแบบ Pub/Sub มีอะไรบ้าง
แอปพลิเคชันที่พัฒนาด้วยรูปแบบการเผยแพร่และสมัครสมาชิก (pub/sub) มีแอปพลิเคชันและข้อมูลบันทึกการสื่อสารที่แยกจากกัน โครงสร้างพื้นฐานการส่งข้อความจะแยกการส่งข้อความระหว่างผู้เผยแพร่และผู้ติดตาม และเผยแพร่ไปยังผู้ติดตามที่แตกต่างกันแบบอะซิงโครนัส
ระบบการสื่อสารแบบ Pub/Sub มีคุณสมบัติเด่นดังนี้
การส่งข้อความแบบพุช
การส่งข้อความ Pub/Sub จะส่งการแจ้งเตือนเหตุการณ์แบบอะซิงโครนัสทันทีเมื่อข้อความถูกเผยแพร่ไปยังหัวข้อข้อความ สมาชิกจะได้รับแจ้งเมื่อมีข้อความ
โปรโตคอลการจัดส่งหลายรายการ
หัวข้อเชื่อมต่อกับตำแหน่งข้อมูลหลายประเภท เช่น คิวข้อความ ฟังก์ชันที่ไม่ต้องใช้เซิร์ฟเวอร์ เซิร์ฟเวอร์ HTTP และที่อยู่อีเมล
อ่านเกี่ยวกับการจัดคิวข้อความด้วย AWS »
Fanout
สถานการณ์นี้เกิดขึ้นเมื่อข้อความถูกส่งไปยังหัวข้อหนึ่ง จากนั้นถูกทำซ้ำและส่งไปยังตำแหน่งข้อมูลหลายจุด Fanout ให้การแจ้งเตือนเหตุการณ์แบบอะซิงโครนัส ซึ่งจะทำให้สามารถประมวลผลแบบขนานได้
การกรอง
คุณสมบัติการกรองช่วยให้ผู้ติดตามสามารถสร้างนโยบายการกรองข้อความได้ ดังนั้นพวกเขาจะได้รับการแจ้งเตือนแค่ในเรื่องที่พวกเขาสนใจเท่านั้น แทนที่จะได้รับทุกข้อความที่มีการโพสต์ในหัวข้อนั้นๆ
การรวมส่งสัญญาณ
ในบางกรณีผู้เผยแพร่ยังสามารถเป็นผู้ติดตามได้อีกด้วย คุณสามารถสตรีมข้อความแบบรวมส่งสัญญาณและสร้างระบบที่เชื่อมโยงเข้าด้วยกันในลักษณะที่สอดคล้องกันภายใน
ข้อดีของการรับส่งข้อความแบบ Pub/Sub มีอะไรบ้าง
รูปแบบ Publish-Subscribe (Pub/Sub) ช่วยให้เกิดสถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์ ซึ่งจำเป็นต้องใช้ในแอปพลิเคชันสมัยใหม่มากมาย คุณสามารถใช้เหตุการณ์ต่างๆ กระตุ้นและสื่อสารข้อมูลระหว่างบริการต่างๆ ที่แยกกันได้ เหตุการณ์คือการเปลี่ยนแปลงสภาวะหรือการอัปเดต เช่น มีการเพิ่มสินค้าหนึ่งรายการในรถเข็น
รูปแบบการส่งข้อความแบบ Pub/Sub มอบข้อได้เปรียบที่สำคัญให้แก่นักพัฒนาที่สร้างแอปพลิเคชันซึ่งต้องพึ่งเหตุการณ์แบบเรียลไทม์ เราได้สรุปประโยชน์บางประการไว้ดังนี้
ไม่ต้องสำรวจความคิดเห็น
หัวข้อข้อความช่วยให้สามารถส่งข้อความแบบพุชได้ทันที โดยไม่จำเป็นต้องส่งข้อความถึงผู้บริโภคเพื่อตรวจสอบหรือสำรวจความคิดเห็นเกี่ยวกับการอัปเดตข้อมูลใหม่เป็นระยะ ซึ่งช่วยให้เวลาตอบสนองเร็วขึ้นและลดเวลาแฝงในการส่งข้อความที่อาจเป็นปัญหาได้ โดยเฉพาะอย่างยิ่งในระบบที่เกิดความล่าช้าไม่ได้
การกำหนดเป้าหมายแบบไดนามิก
รูปแบบ Pub/Sub ทำให้ค้นหาบริการต่างๆ ได้ง่ายขึ้น เป็นธรรมชาติมากขึ้น และเกิดข้อผิดพลาดน้อยลง แทนที่จะต้องเก็บบัญชีรายชื่อบุคคลต่างๆ ไว้เพื่อให้แอปพลิเคชันส่งข้อความไปหาได้ แต่ตัวส่งข้อความ (Publisher) จะโพสต์ข้อความในหัวข้อนั้นๆ ไว้ง่ายๆ จากนั้น บุคคลที่สนใจจะเข้าสมัครรับข้อความที่ตำแหน่งข้อมูลของหัวข้อนั้นๆ แล้วเริ่มรับข้อความเหล่านั้นได้เลย ผู้รับข้อความ (Subscriber) สามารถเปลี่ยนแปลง อัปเกรด หรือหายไปได้ โดยระบบจะปรับการทำงานแบบไดนามิก
แยกและปรับขนาดอย่างอิสระ
Pub/Sub ทำให้ซอฟต์แวร์มีความยืดหยุ่นมากขึ้น ตัวส่งข้อความและผู้รับข้อความจะแยกกันและทำงานโดยเป็นอิสระจากอีกฝ่ายหนึ่ง ทำให้คุณสามารถพัฒนาและปรับขนาดทั้งสองส่วนนี้ได้อย่างอิสระ คุณสามารถตัดสินใจเลือกจัดการคำสั่งซื้อในเดือนนี้ด้วยวิธีการหนึ่ง และเลือกใช้อีกวิธีหนึ่งในเดือนต่อไปได้ การเพิ่มหรือการเปลี่ยนแปลงฟังก์ชันจะไม่ส่งผลกระทบต่อเนื่องกับระบบ เพราะ Pub/Sub ช่วยให้คุณปรับวิธีการทำงานของสิ่งต่างๆ ร่วมกันได้
ทำให้การสื่อสารง่ายยิ่งขึ้น
โค้ดการสื่อสารและการรวบรวมเป็นหนึ่งในโค้ดที่เขียนยากที่สุด รูปแบบ Publish-Subscribe ช่วยลดความซับซ้อนโดยกำจัดการเชื่อมต่อแบบจุดต่อจุดด้วยการเชื่อมต่อเข้ากับหัวข้อข้อความครั้งเดียว หัวข้อจะจัดการกับการรับข้อความเพื่อตัดสินใจว่าควรส่งข้อความใดถึงตำแหน่งข้อมูลใด การเรียกกลับที่น้อยลงส่งผลให้เกิดการเชื่อมโยงแบบ Loose Coupling รวมถึงโค้ดที่บำรุงรักษาและเขียนเพิ่มได้ง่ายขึ้น
ความคงทน
บริการส่งข้อความแบบ Pub/Sub มักมีความทนทานสูงมาก ซึ่งรวมไปถึงการส่งข้อความแบบอย่างน้อยหนึ่งครั้ง โดยจะจัดเก็บสำเนาข้อความเดียวกันไว้หลายเซิร์ฟเวอร์
การรักษาความปลอดภัย
หัวข้อข้อความช่วยรับรองความถูกต้องของแอปพลิเคชันที่พยายามจะส่งเนื้อหา ทำให้คุณได้ใช้ตำแหน่งข้อมูลที่เข้ารหัสไว้เพื่อรักษาความปลอดภัยให้กับข้อความที่ส่งบนเครือข่าย
กรณีการใช้งานการส่งข้อความแบบ Pub/Sub คืออะไรบ้าง
เราสรุปกรณีการใช้งานยอดนิยมของระบบการส่งข้อความแบบเผยแพร่-ติดตาม (pub/sub) ด้านล่าง
ทำการประเมินข้อมูลคู่ขนานแบบอะซิงโครนัส
เหตุการณ์ที่เผยแพร่ไปยังหัวข้อข้อความสามารถกระตุ้นให้ผู้ปฏิบัติงานหลายคนให้ทำงานที่จำเป็นแต่ไม่เกี่ยวข้องไปพร้อมกันได้
ส่งการแจ้งเตือนทางระบบและแอปพลิเชัน
ส่งการอัปเดตที่สำคัญและการแจ้งเตือนเหตุการณ์แบบอะซิงโครนัสไปยังส่วนประกอบของแอปพลิเคชันที่ได้รับผลกระทบและผู้ใช้ของคุณในทันที
จัดการเวิร์กโฟลว์แบบอะซิงโครนัส
ส่งต่อเหตุการณ์ระหว่างแอปพลิเคชัน ย้ายข้อมูลระหว่างที่เก็บข้อมูล รีเฟรชแคชแบบกระจายตัว หรืออัปเดตบันทึกในระบบธุรกิจ
สร้างความสมดุลให้เวิร์กโหลด
รวมงานสำหรับการประมวลผลจำนวนมาก หรือแบ่งงานใหญ่ออกเป็นงานที่เล็กลง และใช้การจัดคิวข้อความเพื่อแบ่งงานระหว่างผู้ปฏิบัติงานหลายคน
ข้อมูลบันทึกเข้าหลายระบบ
บันทึกเหตุการณ์เพื่อวิเคราะห์ในภายหลัง จัดเก็บข้อมูลบันทึกสำหรับการดำเนินการและความปลอดภัย หรือเก็บถาวรเพื่อให้เป็นไปตามข้อกำหนดในการสำรองข้อมูลหรือการปฏิบัติตามข้อกำหนด
ใช้ Fanout สำหรับการจำลองแบบ
ทำซ้ำข้อมูลระหว่างสภาพแวดล้อมการผลิตและการพัฒนา หรือพัฒนาและทดสอบด้วยข้อมูลจริง
ประสานงานแอปพลิเคชันที่ไม่ต้องใช้เซิร์ฟเวอร์
Fanout การแจ้งเตือนเหตุการณ์แบบอะซิงโครนัสไปยังฟังก์ชันแบบกระจายและคิวข้อความเพื่อประสานส่วนประกอบของแอปพลิเคชันที่ไม่ต้องใช้เซิร์ฟเวอร์ของคุณ
สตรีมข้อมูล IoT
รูปแบบ Pub/Sub เป็นวิธีที่ประสิทธิภาพมากในการโต้ตอบของอุปกรณ์ Internet of Things (IoT) อุปกรณ์ต่างๆ สามารถสตรีมข้อมูลไปยังระบบแบ็คเอนด์หรือระหว่างกันได้อย่างง่ายดาย
อะไรคือความแตกต่างระหว่างคิวข้อความและการส่งข้อความแบบ Pub/Sub
คิวข้อความเป็นอีกรูปแบบหนึ่งของการสื่อสารแบบอะซิงโครนัสที่ใช้ในสถาปัตยกรรมไม่ต้องใช้เซิร์ฟเวอร์และไมโครเซอร์วิส ข้อความจะถูกจัดเก็บไว้ในคิวจนกว่าจะได้รับการประมวลผลและลบออก คิวข้อความกำหนดให้ผู้ส่งรู้ว่ากำลังแลกเปลี่ยนข้อความกับใคร การจัดเรียงข้อความอาจทำให้เกิดปัญหาคอขวดในระบบได้
ในทางตรงกันข้าม รูปแบบการเผยแพร่-ติดตาม (pub/sub) มีความยืดหยุ่นมากกว่า สมาชิกที่สนใจหลายรายสามารถรับข้อความได้แบบพร้อมกันและแบบอะซิงโครนัส ผู้เผยแพร่ไม่จำเป็นต้องรู้ว่าผู้ติดตามคือใคร การจัดการข้อความสามารถปรับขนาดได้และเชื่อถือได้มากขึ้น และให้ประสิทธิภาพที่ดีขึ้น
AWS สนับสนุนข้อกำหนดความต้องการการส่งข้อความ Pub/Sub ของคุณได้อย่างไร
Amazon Web Services (AWS) มีสองบริการที่คุณสามารถใช้สำหรับแอปพลิเคชันเผยแพร่-สมัครสมาชิก (pub/sub) ที่แตกต่างกัน
Pub/Sub API
AWS AppSync เป็นบริการที่มีการจัดการเต็มรูปแบบสำหรับการสร้าง GraphQL แบบไม่ต้องใช้เซิร์ฟเวอร์และ API Pub/Sub ที่ทำให้การพัฒนาแอปพลิเคชันง่ายขึ้น คุณสามารถสร้างตำแหน่งข้อมูลเดียวเพื่อสืบค้น อัปเดต หรือเผยแพร่ข้อมูลได้อย่างปลอดภัย
Pub/Sub API ที่สร้างขึ้นด้วย AWS AppSync ช่วยให้คุณสามารถเผยแพร่การอัปเดตข้อมูลแบบเรียลไทม์ไปยังไคลเอ็นต์ API ที่สมัครใช้งานผ่านการเชื่อมต่อ WebSockets แบบไม่ต้องใช้เซิร์ฟเวอร์ได้ คุณสร้างประสบการณ์แบบเรียลไทม์ที่น่าสนใจได้สำหรับกรณีการใช้งานที่หลากหลาย ตัวอย่างเช่น คุณสามารถให้คะแนนเกมล่าสุด ข้อมูลทางการเงิน การมีส่วนร่วมของผู้ชม การลงคะแนน หรือฟังก์ชันการรับรู้ตำแหน่ง เช่น แผนที่และการตลาดการแจ้งเตือนแบบพุช
ต่อไปนี้คือบางสิ่งที่คุณสามารถทำได้ด้วย AWS AppSync:
- เข้าถึงข้อมูลจากแหล่งหรือไมโครเซอร์วิสอย่างน้อยหนึ่งแหล่งด้วยคำขอเครือข่ายเพียงรายการเดียว
- โต้ตอบและอัปเดตข้อมูลแม้จะออฟไลน์อยู่ด้วยการซิงโครไนซ์ข้อมูลแบบออฟไลน์ การกำหนดเวอร์ชัน และการแก้ไขข้อขัดแย้ง
- จ่ายเฉพาะคำขอที่ส่งไปยัง API และข้อความแบบเรียลไทม์ที่ส่งไปยังไคลเอ็นต์ที่เชื่อมต่อ
การรับส่งข้อความแบบ Pub/Sub
Amazon Simple Notification Service (SNS) ช่วยให้คุณสร้างแอปพลิเคชันโดยใช้โมเดลการส่งข้อความแบบ Pub/Sub ได้อย่างง่ายดาย คุณส่งข้อความจากแอปพลิเคชันของคุณไปยังลูกค้าหรือแอปพลิเคชันอื่นในลักษณะที่ปรับขนาดได้และประหยัดค่าใช้จ่าย
Amazon SNS มีคุณสมบัติหลายอย่าง:
- การส่งข้อความกลุ่มต่อกลุ่มแบบพุชที่มีอัตราการโอนถ่ายข้อมูลสูงระหว่างระบบแบบกระจาย ไมโครเซอร์วิส และแอปพลิเคชันแบบไม่ต้องใช้เซิร์ฟเวอร์ที่ขับเคลื่อนด้วยเหตุการณ์
- การเข้ารหัสข้อความและความเป็นส่วนตัวของการรับส่งข้อมูล
- กระจายความสามารถต่างๆ ออกตามหมวด AWS เช่น การวิเคราะห์ การประมวลผล คอนเทนเนอร์ ฐานข้อมูล, Internet of Things (IoT), แมชชีนเลิร์นนิง ความปลอดภัย และที่เก็บข้อมูล
เริ่มต้นใช้งาน Pub/Sub บน AWS โดยสร้างบัญชี AWS ฟรีวันนี้