0Pricing
AWS Solutions Architect · บทเรียน

คิว SQS Standard เทียบกับ FIFO

เปรียบเทียบคิว Standard ที่มีปริมาณงานสูงสุดกับคิว FIFO ที่ประมวลผลตามลำดับและเพียงครั้งเดียวอย่างแน่นอน พร้อมเลือกประเภทที่เหมาะสม

คิว SQS Standard เทียบกับ FIFO เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดคิวข้อความจึงสำคัญ

คิวข้อความช่วยแยกผู้ผลิตออกจากผู้บริโภค: ผู้ผลิตส่งข้อความไปยัง queue โดยไม่ต้องรอให้ผู้บริโภคประมวลผล ผู้บริโภคจะประมวลผลข้อความตามความเร็วของตนเอง รูปแบบนี้ช่วยป้องกันไม่ให้ผู้ผลิตที่ทำงานเร็วส่งงานมากเกินกว่าที่ผู้บริโภคที่ทำงานช้าจะรับไหว ช่วยให้ปรับขนาดแต่ละชั้นได้อย่างอิสระ และทำหน้าที่เป็นบัฟเฟอร์ที่คงทนเมื่อผู้บริโภคไม่พร้อมใช้งานชั่วคราว Amazon SQS เป็นบริการจัดคิวข้อความที่ AWS จัดการให้ทั้งหมดและมีความพร้อมใช้งานสูง

ลักษณะของคิว Standard ของ SQS

คิว Standard รองรับอัตราการรับส่งข้อมูลไม่จำกัด (ธุรกรรมต่อวินาทีเกือบไม่จำกัด) โดยรับประกันการส่งมอบอย่างน้อยหนึ่งครั้ง—ในบางกรณีที่เกิดขึ้นไม่บ่อย ข้อความอาจถูกส่งมอบมากกว่าหนึ่งครั้งเนื่องจากโครงสร้างพื้นฐานแบบกระจาย ลำดับของข้อความเป็นแบบพยายามรักษาให้ดีที่สุด: โดยทั่วไปข้อความจะถูกส่งตามลำดับที่ส่ง แต่ไม่รับประกัน คิว Standard เหมาะอย่างยิ่งเมื่ออัตราการรับส่งข้อมูลมีความสำคัญ และผู้บริโภคของคุณรองรับข้อความซ้ำหรือข้อความที่มาถึงไม่ตรงลำดับได้

# Create a Standard queue
aws sqs create-queue \
  --queue-name 'OrderProcessingQueue'

# Send a message
aws sqs send-message \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/OrderProcessingQueue' \
  --message-body 'OrderId-12345'

ลักษณะของคิว FIFO ของ SQS

คิว FIFO (เข้าก่อน ออกก่อน) รับประกันการประมวลผลเพียงครั้งเดียวเท่านั้นและลำดับข้อความที่เคร่งครัด ข้อความจะถูกส่งตามลำดับที่ส่งเข้ามาอย่างแน่นอน คิว FIFO รองรับธุรกรรมสูงสุด300 รายการต่อวินาที (3,000 รายการเมื่อจัดกลุ่มเป็นชุด) ชื่อคิว FIFO ต้องลงท้ายด้วย .fifo ใช้คิว FIFO เมื่อลำดับและความหมายของการประมวลผลเพียงครั้งเดียวเท่านั้นมีความสำคัญ เช่น ธุรกรรมทางการเงิน การประมวลผลคำสั่งซื้ออีคอมเมิร์ซ และการอัปเดตสินค้าคงคลัง

# Create a FIFO queue
aws sqs create-queue \
  --queue-name 'OrderProcessingQueue.fifo' \
  --attributes '{
    "FifoQueue": "true",
    "ContentBasedDeduplication": "true"
  }'

กลุ่มข้อความในคิว FIFO

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

aws sqs send-message \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/Orders.fifo' \
  --message-body 'Order details here' \
  --message-group-id 'customer-789' \
  --message-deduplication-id 'order-uuid-abc123'

การกำจัดข้อความซ้ำในคิว FIFO

คิว FIFO ป้องกันการประมวลผลข้อความซ้ำโดยใช้รหัสกำจัดข้อความซ้ำ หากส่งข้อความสองข้อความด้วยรหัสเดียวกันภายในช่วงเวลากำจัดข้อความซ้ำ 5 นาที ข้อความที่สองจะถูกละทิ้งโดยไม่มีการแจ้งเตือน คุณสามารถระบุรหัสกำจัดข้อความซ้ำเอง (MessageDeduplicationId) หรือเปิดใช้การกำจัดข้อความซ้ำตามเนื้อหา ซึ่ง SQS จะคำนวณแฮช SHA-256 ของเนื้อหาข้อความเป็นรหัสกำจัดข้อความซ้ำโดยอัตโนมัติ การกำจัดข้อความซ้ำตามเนื้อหาทำได้ง่ายกว่า แต่เนื้อหาของข้อความต้องไม่ซ้ำกัน

ข้อจำกัดด้านการเก็บรักษาและขนาดข้อความ

SQS เก็บข้อความไว้ตามช่วงเวลาที่กำหนดค่าได้: ขั้นต่ำ1 นาที และสูงสุด14 วัน (ค่าเริ่มต้น 4 วัน) ข้อความที่ไม่ถูกนำไปใช้ภายในช่วงเวลาเก็บรักษาจะถูกลบโดยอัตโนมัติ ขนาดข้อความสูงสุดคือ 256 KB หากข้อมูลมีขนาดใหญ่กว่านี้ ให้ใช้ไลบรารีไคลเอ็นต์ส่วนขยายของ SQS หรือเก็บข้อมูลไว้ใน S3 แล้วส่งเฉพาะข้อมูลอ้างอิงวัตถุ S3 ในข้อความ SQS ทั้งคิว Standard และ FIFO ใช้ข้อจำกัดเหล่านี้ร่วมกัน

การรับและลบข้อความ

ผู้บริโภคเรียกดูคิวโดยใช้ receive-message หลังจากรับข้อความแล้ว ข้อความจะกลายเป็นมองไม่เห็น (ถูกซ่อนจากผู้บริโภครายอื่น) เป็นระยะเวลาหมดเวลาการมองเห็น ผู้บริโภคต้องประมวลผลข้อความแล้วลบข้อความอย่างชัดเจนโดยใช้ตัวจัดการใบรับ ก่อนที่เวลาหมดจะมาถึง หากผู้บริโภคหยุดทำงานหรือไม่ลบข้อความทันเวลา ข้อความจะปรากฏขึ้นอีกครั้ง และผู้บริโภครายอื่นจะสามารถประมวลผลได้ ซึ่งทำให้คิว Standard รองรับการส่งมอบอย่างน้อยหนึ่งครั้ง

RECEIPT=$(aws sqs receive-message \
  --queue-url 'https://...' \
  --query 'Messages[0].ReceiptHandle' --output text)

# Process message, then delete it
aws sqs delete-message \
  --queue-url 'https://...' \
  --receipt-handle "$RECEIPT"

การเปรียบเทียบอัตราการรับส่งข้อมูลในการใช้งานจริง

คิว Standard เหมาะสำหรับ: การสร้างภาพขนาดย่อ การส่งอีเมลแจ้งเตือน และการประมวลผลบันทึกการทำงาน ซึ่งเป็นงานที่จัดการข้อความซ้ำแบบไม่ก่อผลซ้ำได้ และไม่จำเป็นต้องรักษาลำดับ คิว FIFO จำเป็นสำหรับ: การประมวลผลการโอนเงินผ่านธนาคาร (หักเงินก่อนโอนเครดิต) การอัปเดตตะกร้าสินค้าอีคอมเมิร์ซ (เพิ่มสินค้าก่อนชำระเงิน) และขั้นตอนเวิร์กโฟลว์ที่ขั้นตอนที่ 2 ต้องตามหลังขั้นตอนที่ 1 สำหรับสถาปัตยกรรมส่วนใหญ่ที่ต้องการอัตราการรับส่งข้อมูลสูง คิว Standard เป็นตัวเลือกเริ่มต้น ให้เปลี่ยนเป็น FIFO เฉพาะเมื่อลำดับหรือการส่งมอบเพียงครั้งเดียวเท่านั้นเป็นข้อกำหนดที่จำเป็นอย่างเคร่งครัด

การจัดกลุ่มเพื่อเพิ่มอัตราการรับส่งข้อมูลและลดค่าใช้จ่าย

SQS คิดค่าบริการต่อคำขอ API ให้ใช้การดำเนินการแบบกลุ่มเพื่อส่ง รับ และลบข้อความได้สูงสุด10 ข้อความต่อการเรียก API หนึ่งครั้ง ซึ่งช่วยลดค่าใช้จ่ายได้สูงสุด 10 เท่า คิว FIFO รองรับโหมดอัตราการรับส่งข้อมูลสูง (เปิดใช้การจัดกลุ่ม) ซึ่งเพิ่มขีดจำกัดเป็น3,000 ข้อความต่อวินาทีเมื่อจัดกลุ่มครั้งละ 10 ข้อความ ในระบบจริงควรใช้ send-message-batch และ delete-message-batch เสมอ เพื่อลดค่าใช้จ่ายจากการเรียก API

aws sqs send-message-batch \
  --queue-url 'https://...' \
  --entries '[
    {"Id": "msg1", "MessageBody": "Order-001"},
    {"Id": "msg2", "MessageBody": "Order-002"},
    {"Id": "msg3", "MessageBody": "Order-003"}
  ]'

นโยบายการเข้าถึงคิว

คิว SQS ได้รับการรักษาความปลอดภัยด้วยนโยบายที่อิงตามทรัพยากร (นโยบายคิว) ซึ่งควบคุมว่าใครสามารถส่งหรือรับข้อความจากคิวได้ นโยบายนี้มีความสำคัญเมื่ออนุญาตให้เข้าถึงข้ามบัญชี หรือเมื่อ SNS เผยแพร่ข้อความไปยังคิว SQS การเข้าถึง SQS ของ Lambda ถูกควบคุมโดยนโยบาย IAM ของบทบาทการทำงานของ Lambda (sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes) ควรใช้สิทธิ์เท่าที่จำเป็นที่สุดเสมอ โดยอย่ามอบสิทธิ์ให้ผู้บริโภคมากกว่าการรับและลบข้อความ

การเลือก Standard หรือ FIFO: แนวทางตัดสินใจ

ให้ถามคำถามต่อไปนี้เพื่อเลือก: (1) จำเป็นต้องรักษาลำดับหรือไม่? หากใช่ → FIFO (2) จำเป็นต้องประมวลผลเพียงครั้งเดียวเท่านั้นหรือไม่? หากใช่ → FIFO (3) จำเป็นต้องมีอัตราการรับส่งข้อมูลสูงกว่า 3,000 TPS หรือไม่? หากใช่ → Standard (FIFO จำกัดที่ 3,000 TPS เมื่อจัดกลุ่มเป็นชุด) (4) ผู้บริโภครองรับข้อความซ้ำได้หรือไม่? หากใช่ → Standard เรียบง่ายและประหยัดกว่า สำหรับการสอบ SAA-C03 คำสำคัญของ FIFO ได้แก่: 'การเรียงลำดับ', 'เพียงครั้งเดียวเท่านั้น', 'ตามลำดับ', 'การกำจัดข้อความซ้ำ' ส่วนคำสำคัญของ Standard ได้แก่: 'อัตราการรับส่งข้อมูลสูง', 'พยายามรักษาให้ดีที่สุด', 'อย่างน้อยหนึ่งครั้ง'

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิดของ AWS Solutions Architect (SAA-C03) จากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า: คิว Standard รองรับอัตราการรับส่งข้อมูลไม่จำกัด พร้อมการส่งมอบอย่างน้อยหนึ่งครั้งและการจัดลำดับแบบพยายามรักษาให้ดีที่สุด จึงเหมาะกับงานปริมาณมากที่ยอมรับข้อความซ้ำได้ ส่วนคิว FIFO รับประกันการประมวลผลเพียงครั้งเดียวเท่านั้นและการจัดลำดับข้อความอย่างเคร่งครัดโดยใช้รหัสกลุ่มข้อความและรหัสกำจัดข้อความซ้ำ แต่จำกัดที่ 3,000 TPS เมื่อจัดกลุ่มเป็นชุด การเลือกใช้คิวใดจึงขึ้นอยู่กับว่าการจัดลำดับและการกำจัดข้อความซ้ำเป็นข้อกำหนดที่จำเป็นอย่างเคร่งครัดหรือไม่ บทถัดไปเราจะศึกษาเรื่องหมดเวลาการมองเห็น คิวข้อความที่ส่งไม่สำเร็จ และการเรียกดูแบบรอนาน

คำถามที่พบบ่อย

บทเรียน “คิว SQS Standard เทียบกับ FIFO” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “คิว SQS Standard เทียบกับ FIFO” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “คิว SQS Standard เทียบกับ FIFO”

เปรียบเทียบคิว Standard ที่มีปริมาณงานสูงสุดกับคิว FIFO ที่ประมวลผลตามลำดับและเพียงครั้งเดียวอย่างแน่นอน พร้อมเลือกประเภทที่เหมาะสม คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “คิว SQS Standard เทียบกับ FIFO” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม

ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. คิว SQS Standard เทียบกับ FIFO
  2. ระยะเวลาร_visibility, DLQ และการสำรวจแบบนาน
  3. หัวข้อ SNS และสถาปัตยกรรมแบบกระจายต่อ
  4. การกรองข้อความ SQS และการผสานรวม SNS + SQS
← กลับไปที่ AWS Solutions Architect