คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
พร็อกซี API คืออินเทอร์เฟซสำหรับแอปพลิเคชันไคลเอ็นต์ที่ใช้เชื่อมต่อกับบริการแบ็กเอนด์ Apigee Edge มีวิธีเชื่อมต่อกับบริการแบ็กเอนด์ผ่านพร็อกซี API หลายวิธี ดังนี้
- TargetEndpoint เพื่อเชื่อมต่อกับบริการ HTTP/HTTP, NodeJS หรือ Hosted Target ทั้งหมด
- นโยบาย Serviceข้อความไฮไลต์ เพื่อเรียกใช้บริการภายนอกก่อนหรือหลังการเรียกใช้เซิร์ฟเวอร์เป้าหมาย ใน 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 นอกจากนี้ยังมีพร็อพเพอร์ตี้ที่ควบคุมลักษณะการทำงานของ Keep
สำหรับบริการแบ็กเอนด์ทั้งหมดในพร็อกซีทั้งหมด HTTPTransport.keepalive.timeout.millis
สามารถกำหนดค่าได้ในคอมโพเนนต์ Message Processor นอกจากนี้ พร็อพเพอร์ตี้นี้ยังมีค่าเริ่มต้นอยู่ที่ 60
วินาที การแก้ไขพร็อพเพอร์ตี้นี้จะส่งผลต่อลักษณะการเชื่อมต่อแบบ "ใช้งานต่อไปได้" ระหว่าง
Apigee Edge และบริการแบ็กเอนด์ทั้งหมดในพร็อกซี API ทั้งหมด
ลาย Antipattern
ปิดใช้การเชื่อมต่อแบบถาวร (คงการทำงาน) โดยการตั้งค่าพร็อพเพอร์ตี้ 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>
หากปิดใช้การเชื่อมต่ออย่างต่อเนื่องสำหรับบริการแบ็กเอนด์อย่างน้อย 1 รายการ Edge จะต้องเปิด การเชื่อมต่อใหม่สำหรับคำขอใหม่แต่ละรายการไปยังบริการแบ็กเอนด์เป้าหมาย หากแบ็กเอนด์เป็น HTTP Edge จะทำแฮนด์เชค SSL สำหรับคำขอใหม่แต่ละรายการ เพิ่ม เวลาในการตอบสนองของคำขอ API
ผลกระทบ
- เพิ่มเวลาในการตอบกลับโดยรวมของคำขอ API เนื่องจาก Apigee Edge ต้องเปิดการเชื่อมต่อใหม่และ ดำเนินการแฮนด์เชค SSL สำหรับคำขอใหม่ทุกคำขอ
- การเชื่อมต่ออาจหมดเนื่องจากการจราจรติดขัด เนื่องจากต้องใช้เวลาสักพักกว่าจะเชื่อมต่อได้ กลับไปยังระบบ
แนวทางปฏิบัติแนะนำ
- บริการแบ็กเอนด์ควรปฏิบัติตามและจัดการการเชื่อมต่อ HTTP ถาวรตาม HTTP 1.1 มาตรฐาน
- บริการแบ็กเอนด์ควรตอบกลับด้วยส่วนหัว
Connection:keep-alive
หากทำได้ ในการจัดการการเชื่อมต่อแบบยั่งยืน (ไม่ขาดตอน) - บริการแบ็กเอนด์ควรตอบกลับด้วยส่วนหัว
Connection:close
หากไม่สามารถ จัดการกับการเชื่อมต่อแบบถาวร
การใช้รูปแบบนี้จะทำให้ Apigee Edge จัดการกับรูปแบบแบบถาวรหรือแบบถาวรได้โดยอัตโนมัติ เชื่อมต่อกับบริการแบ็กเอนด์ โดยไม่ต้องเปลี่ยนแปลงพร็อกซี API