Antipattern: เข้าถึงเพย์โหลดคำขอ/การตอบกลับเมื่อเปิดใช้สตรีมมิง

คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

ใน Edge ลักษณะการทำงานเริ่มต้นคือระบบจะจัดเก็บข้อมูลในคำขอและข้อมูลการตอบกลับ HTTP ในบัฟเฟอร์ในหน่วยความจำก่อนที่จะประมวลผลโดยนโยบายในพร็อกซี API

หากเปิดใช้การสตรีม ระบบจะสตรีมเพย์โหลดคำขอและการตอบกลับโดยไม่มีการแก้ไขแอปไคลเอ็นต์ (สำหรับการตอบกลับ) และปลายทางเป้าหมาย (สำหรับคำขอ) สตรีมมิงมีประโยชน์อย่างยิ่งหากแอปพลิเคชันยอมรับหรือแสดงผลเพย์โหลดขนาดใหญ่ หรือหากมีแอปพลิเคชันที่แสดงผลข้อมูลเป็นกลุ่มๆ เมื่อเวลาผ่านไป

รูปแบบที่ไม่ถูกต้อง

การเข้าถึงเพย์โหลดคำขอ/การตอบกลับที่เปิดใช้การสตรีมจะทำให้ Edge กลับไปใช้โหมดบัฟเฟอร์เริ่มต้น

รูปที่ 1: การเข้าถึงเพย์โหลดคำขอ/คำตอบที่เปิดใช้การสตรีม

ภาพด้านบนแสดงให้เห็นว่าเราพยายามดึงตัวแปรจากเพย์โหลดคำขอและแปลงเพย์โหลดการตอบกลับ JSON เป็น XML โดยใช้นโยบาย JSONToXML ซึ่งจะปิดใช้การสตรีมใน Edge

ผลกระทบ

  • ระบบจะปิดใช้การสตรีม ซึ่งอาจทําให้เกิดความล่าช้ามากขึ้นในการประมวลผลข้อมูล
  • การใช้งานหน่วยความจําฮีปที่เพิ่มขึ้นหรือข้อผิดพลาด OutOfMemory จะสังเกตได้ในโปรแกรมประมวลผลข้อความเนื่องจากการใช้บัฟเฟอร์ในหน่วยความจํา โดยเฉพาะในกรณีที่เรามีเพย์โหลดคําขอ/การตอบกลับขนาดใหญ่

แนวทางปฏิบัติแนะนำ

  • อย่าเข้าถึงเพย์โหลดคำขอ/คำตอบเมื่อเปิดใช้การสตรีม

อ่านเพิ่มเติม