คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
พร็อกซี API คืออินเทอร์เฟซสำหรับแอปพลิเคชันไคลเอ็นต์ที่ใช้เชื่อมต่อกับบริการแบ็กเอนด์ Apigee Edge มีหลายวิธีในการเชื่อมต่อกับบริการแบ็กเอนด์ผ่านพร็อกซี API ดังนี้
- TargetEndpoint เพื่อเชื่อมต่อกับบริการ HTTP/HTTP, NodeJS หรือบริการเป้าหมายที่โฮสต์
- นโยบาย ServiceAPI เพื่อเรียกใช้บริการภายนอกก่อนหรือหลังการเรียกใช้เซิร์ฟเวอร์เป้าหมายใน TargetEndpoint
- เพิ่มโค้ดที่กำหนดเองในนโยบาย JavaScript หรือนโยบาย Javaไม่สนับสนุนเพื่อเชื่อมต่อกับบริการแบ็กเอนด์
การเชื่อมต่อถาวร
การเชื่อมต่อถาวรของ HTTP หรือที่เรียกว่าการเชื่อมต่อ HTTP แบบ Keep-alive หรือการเชื่อมต่อ HTTP ซ้ำ เป็นแนวคิดที่อนุญาตให้การเชื่อมต่อ TCP เดียวส่งและรับคำขอ HTTP/การตอบกลับหลายรายการ แทนที่จะเปิดการเชื่อมต่อใหม่สำหรับคู่คำขอ/การตอบกลับทุกคู่
Apigee Edge ใช้การเชื่อมต่อถาวรเพื่อสื่อสารกับบริการแบ็กเอนด์ การเชื่อมต่อจะคงอยู่เป็นเวลา 60 วินาทีโดยค่าเริ่มต้น กล่าวคือ หากการเชื่อมต่อในพูลการเชื่อมต่อไม่มีความเคลื่อนไหวนานกว่า 60 วินาที การเชื่อมต่อก็จะปิดลง
ระยะหมดเวลาของ Keep Alive กำหนดค่าได้ผ่านพร็อพเพอร์ตี้ชื่อ keepalive.timeout.millis
ที่ระบุไว้ในการกำหนดค่า TargetEndpoint ของพร็อกซี API ตัวอย่างเช่น ระยะเวลาของ Keep alive สามารถกำหนดเป็น 30 วินาทีสำหรับบริการแบ็กเอนด์ที่เฉพาะเจาะจงใน TargetEndpoint ได้
ในตัวอย่างด้านล่าง keepalive.timeout.millis
ตั้งค่าไว้ที่ 30 วินาทีในการกำหนดค่า TargetEndpoint
<!-- /antipatterns/examples/disable-persistent-connections-1.xml --> <TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="keepalive.timeout.millis">30000</Property> </Properties> </HTTPTargetConnection>Disable HTTP persistent (Reusable keep-alive) connections </TargetEndpoint>
ในตัวอย่างข้างต้น keepalive.timeout.millis
จะควบคุมลักษณะการทำงานของ Keep alive สำหรับบริการแบ็กเอนด์ที่เฉพาะเจาะจงในพร็อกซี API นอกจากนี้ยังมีพร็อพเพอร์ตี้ที่ควบคุมลักษณะการทำงานที่หยุดการทำงานสำหรับบริการแบ็กเอนด์ทั้งหมดในพร็อกซีทั้งหมดด้วย HTTPTransport.keepalive.timeout.millis
สามารถกำหนดค่าได้ในคอมโพเนนต์ตัวประมวลผลข้อความ พร็อพเพอร์ตี้นี้ยังมีค่าเริ่มต้น 60 วินาทีด้วย การแก้ไขพร็อพเพอร์ตี้นี้จะส่งผลต่อลักษณะการเชื่อมต่อที่ยังคงอยู่ระหว่าง Apigee Edge กับบริการแบ็กเอนด์ทั้งหมดในพร็อกซี API ทั้งหมด
ลายป้องกัน
ไม่แนะนำให้ปิดใช้การเชื่อมต่อถาวร (คงสถานะไว้) โดยการตั้งค่าพร็อพเพอร์ตี้ keepalive.timeout.millis
เป็น 0 ในการกำหนดค่า TargetEndpoint ของพร็อกซี API ที่เจาะจง หรือตั้งค่า HTTPTransport.keepalive.timeout.millis
เป็น 0 ในโปรแกรมประมวลผลข้อความเนื่องจากจะส่งผลต่อประสิทธิภาพ
ในตัวอย่างด้านล่าง การกำหนดค่า TargetEndpoint จะปิดใช้การเชื่อมต่อถาวร (รักษาสถานะปัจจุบัน) สำหรับบริการแบ็กเอนด์ที่เจาะจงโดยการตั้งค่า keepalive.timeout.millis
เป็น 0
<!-- /antipatterns/examples/disable-persistent-connections-2.xml --> <TargetEndpoint name="default"> <HTTPTargetConnection> <URL>http://mocktarget.apigee.net</URL> <Properties> <Property name="keepalive.timeout.millis">0</Property> </Properties> </HTTPTargetConnection> </TargetEndpoint>
หากปิดใช้การเชื่อมต่อ Keep สำหรับบริการแบ็กเอนด์อย่างน้อย 1 รายการ Edge จะต้องเปิดการเชื่อมต่อใหม่สำหรับคำขอใหม่แต่ละรายการที่ส่งไปยังบริการแบ็กเอนด์เป้าหมาย หากแบ็กเอนด์เป็น HTTP แล้ว Edge จะดำเนินการแฮนด์เชค SSL สำหรับคำขอใหม่แต่ละรายการด้วย เพื่อเพิ่มลงในเวลาในการตอบสนองโดยรวมของคำขอ API
มีอิทธิพล
- เพิ่มเวลาในการตอบกลับโดยรวมของคำขอ API เนื่องจาก Apigee Edge ต้องเปิดการเชื่อมต่อใหม่และดำเนินการแฮนด์เชค SSL สำหรับคำขอใหม่ทุกรายการ
- การเชื่อมต่ออาจหมดเร็วเกินไปเนื่องจากมีการรับส่งข้อมูลจำนวนมาก เนื่องจากต้องใช้เวลาระยะหนึ่งในการปล่อยการเชื่อมต่อกลับไปยังระบบ
แนวทางปฏิบัติแนะนำ
- บริการแบ็กเอนด์ควรยอมรับและจัดการการเชื่อมต่อถาวร HTTP ตามมาตรฐาน HTTP 1.1
- บริการแบ็กเอนด์ควรตอบกลับด้วยส่วนหัว
Connection:keep-alive
หากจัดการการเชื่อมต่อถาวร (รักษาการเชื่อมต่อไว้) ได้ - บริการแบ็กเอนด์ควรตอบกลับด้วยส่วนหัว
Connection:close
หากจัดการการเชื่อมต่อถาวรไม่ได้
การใช้รูปแบบนี้จะช่วยให้ Apigee Edge สามารถจัดการการเชื่อมต่อแบบถาวรหรืออย่างต่อเนื่องกับบริการแบ็กเอนด์ได้โดยอัตโนมัติ โดยไม่ต้องเปลี่ยนแปลงพร็อกซี API