การรับส่งข้อความแบบ 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 »

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 ฟรีวันนี้

ขั้นตอนถัดไปบน AWS

ดูแหล่งข้อมูลเพิ่มเติมเกี่ยวกับผลิตภัณฑ์
ดูข้อเสนอฟรีสำหรับ Internet of Things (IoT) 
ลงชื่อสมัครใช้บัญชีฟรี

รับสิทธิ์การเข้าถึง AWS Free Tier ได้ทันที

ลงชื่อสมัครใช้งาน 
เริ่มต้นการสร้างในคอนโซล

เริ่มต้นสร้างในคอนโซลการจัดการของ AWS

ลงชื่อเข้าใช้