ติดตามข้อความบนคิว AWS SQS หลายรายการ

ฉันมีฟังก์ชัน AWS Lambda ประมาณ 3 รายการในรูปแบบต่อไปนี้:

  • ฟังก์ชัน Lambda 1: อ่านจากคิว SQS และใส่ข้อความลงในคิว SQS (รูปแบบข้อความขาเข้าและขาออกจะแตกต่างกัน)
  • ฟังก์ชัน Lambda 2: อ่านข้อความจากฟังก์ชัน Lambda 1 และวางข้อความไว้ในคิว SQS (รูปแบบข้อความขาเข้าและขาออกจะแตกต่างกัน)
  • ฟังก์ชัน Lambda 3: อ่านข้อความจากฟังก์ชัน Lambda 3 และอัปเดตพื้นที่จัดเก็บข้อมูล

มี 3 คิวที่เกี่ยวข้องและรูปแบบข้อความ (โครงสร้าง) ในแต่ละคิวจะแตกต่างกัน อย่างไรก็ตาม คิวเหล่านั้นมี uniqueId หนึ่งอันที่เหมือนกันและสามารถนำมาใช้เพื่อเชื่อมโยงซึ่งกันและกันได้ คำถามมากมายคือ มีวิธีใดบ้างใน SQS หรือเครื่องมืออื่นในการติดตามข้อความ สิ่งที่ฉันกำลังมองหาโดยเฉพาะคือ:

  • เวลาที่ข้อความถูกป้อนเข้าคิว
  • เวลาที่ฟังก์ชัน Lambda ถ่ายข้อความเพื่อประมวลผล

ปัญหาของฉันคือฟังก์ชัน 3 Lambda ดำเนินการแยกกันภายในสองสามมิลลิวินาที แต่เวลาที่ใช้ในการดำเนินการตั้งแต่ต้นจนจบนั้นนานเกินไป ฉันสงสัยว่าข้อความใช้เวลานานเกินไปในการขนส่ง

ฉันเปิดรับแนวคิดอื่นๆ เกี่ยวกับการเพิ่มประสิทธิภาพ


person pandith padaya    schedule 07.03.2020    source แหล่งที่มา
comment
ฉันคิดว่า sqs และ x-ray สามารถทำได้ เป็นประโยชน์ อาจต้องเพิ่ม annotations ลงในส่วนเอ็กซเรย์ด้วย uniqueId ของคุณ เพื่อให้คุณสามารถกรองข้อความที่คุณต้องการได้ในภายหลัง   -  person Marcin    schedule 07.03.2020
comment
ขอบคุณ ฉันเห็นสิ่งนี้แล้ว แต่หมายความว่าฉันต้องเปลี่ยนโค้ดตอนนี้เพื่อรวมส่วนหัวเพิ่มเติมเหล่านี้หรือไม่   -  person pandith padaya    schedule 07.03.2020
comment
ใช่. ฉันไม่มีภาพทั้งหมดนี้อยู่ในหัว แต่นี่คือสิ่งแรกที่ฉันจะพิจารณา หรือคุณสามารถเพิ่มเวลาให้กับแต่ละข้อความในแต่ละแลมบ์ดา และตรวจสอบด้วยตนเองว่าจะใช้เวลานานแค่ไหนตั้งแต่แลมบ์ดาตัวแรกถึงสุดท้าย   -  person Marcin    schedule 07.03.2020
comment
และนานแค่ไหนก็นานเกินไป? อาจมีสาเหตุอื่นสำหรับสิ่งนี้ เช่น คุณกำลังชะลอข้อความของคุณหรือใช้คิวล่าช้า?   -  person Marcin    schedule 07.03.2020


คำตอบ (1)


AWS Step Functions ได้รับการออกแบบมาโดยเฉพาะสำหรับการส่งข้อมูลระหว่างฟังก์ชัน Lambda และการเตรียมกระบวนการทั้งหมด

อย่างไรก็ตาม คุณจะต้องเปลี่ยนวิธีเขียนฟังก์ชันของคุณ เพื่อใช้ประโยชน์จาก Step Functions

เนื่องจากความปรารถนาที่แท้จริงเพียงอย่างเดียวของคุณคือการสำรวจว่าเหตุใดจึงใช้เวลานานเกินไป AWS X-Ray จึงควรเป็นวิธีที่ดีในการรวบรวมข้อมูลนี้ สามารถติดตามธุรกรรมเดียวจากต้นทางถึงปลายทางผ่านแต่ละกระบวนการ ฉันคิดว่ามันเป็นเรื่องของการรวมห้องสมุดและการเปิดใช้งาน X-Ray

ดู: AWS Lambda และ AWS X-Ray - AWS X -เรย์

หรือเพียงแค่เริ่มต้นดำเนินการการตรวจสอบด้วยตนเองในไฟล์บันทึก บันทึกจะแสดงระยะเวลาการทำงานแต่ละฟังก์ชัน ดังนั้นคุณจึงควรระบุได้ว่าเวลาที่ใช้ ภายใน ฟังก์ชัน Lambda เฉพาะเจาะจงหรือไม่ หรือเวลาที่ใช้ ระหว่าง ฟังก์ชั่นต่างๆ รอให้พวกมันเริ่มทำงาน

person John Rotenstein    schedule 07.03.2020
comment
จริงๆ แล้วฉันกังวลมากกว่ากับการเห็นเวลาที่ข้อความต้องย้ายไปมาระหว่างคิว น่าเสียดายที่เอกสารประกอบของ AWS ดูเหมือนจะไม่ได้เป็นตัวอย่างที่ดีในเรื่องนี้ ฉันจำเป็นต้องรวม MessageAttribute เพิ่มเติมไว้ในข้อความหรือไม่ - person pandith padaya; 08.03.2020