Antipattern: إيقاف اتصالات HTTP الدائمة (القابلة لإعادة الاستخدام)

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

خادم وكيل واجهة برمجة التطبيقات هو واجهة لتطبيقات العميل المستخدمة للاتصال بخدمات الخلفية. توفّر Apigee Edge طرقًا متعددة للاتصال بخدمات الخلفية من خلال خادم وكيل لواجهة برمجة التطبيقات:

الروابط المستمرة

اتصال HTTP دائم، ويُسمى أيضًا "الحفاظ على الاتصال ببروتوكول HTTP" أو إعادة استخدام اتصال HTTP، وهو مفهوم يتيح اتصال TCP للإرسال تلقي طلبات HTTP/ردود متعددة، بدلاً من فتح اتصال جديد لكل زوج طلب/استجابة.

تستخدم Apigee Edge اتصالاً مستمرًا للتواصل مع خدمات الخلفية. يبقى الاتصال صالحة لمدة 60 ثانية بشكل افتراضي. أي، إذا كان الاتصال خاملاً في تجمع الاتصال أكثر من 60 ثانية، يتم إنهاء الاتصال.

يمكن ضبط فترة مهلة إبقاء الرسائل غير مباشرة من خلال سمة اسمها keepalive.timeout.millis المحددة في إعداد TargetEndpoint للخادم الوكيل لواجهة برمجة التطبيقات. على سبيل المثال، واصِل التعافي يمكن ضبط الفترة الزمنية على 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 في سلوك إبقاء النشاط ساريًا خدمة خلفية معينة في خادم وكيل لواجهة برمجة التطبيقات. هناك أيضًا خاصية تتحكّم في النشاط المستمر لجميع خدمات الخلفية في جميع الخوادم الوكيلة. HTTPTransport.keepalive.timeout.millis يمكن تكوينها في مكون معالج الرسائل. تحتوي هذه السمة أيضًا على القيمة التلقائية 60 ثوانٍ. إنّ إجراء أي تعديلات على هذه الخاصية يؤثر في سلوك الاتصال الدائم بين Apigee Edge وجميع خدمات الخلفية في جميع الخوادم الوكيلة لواجهة برمجة التطبيقات.

نقوش

إيقاف الاتصالات الدائمة من خلال ضبط الموقع keepalive.timeout.millis إلى 0 في ضبط TargetEndpoint لخادم وكيل لواجهة برمجة تطبيقات محدّد أو إعداد لا يُنصح باستخدام من 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>

في حال إيقاف الاتصالات المستمرة في خدمة خلفية واحدة أو أكثر، يجب على Edge فتح اتصال جديد لكل طلب جديد إلى خدمات الخلفية المستهدفة. إذا كانت الواجهة الخلفية هي HTTPs، ستجري Edge أيضًا تأكيد اتصال طبقة المقابس الآمنة (SSL) لكل طلب جديد، مما يضيف إلى وقت استجابة طلبات واجهة برمجة التطبيقات.

التأثير

  • زيادة إجمالي وقت الاستجابة لطلبات واجهة برمجة التطبيقات حيث يجب على Apigee Edge فتح اتصال جديد إجراء تأكيد اتصال طبقة المقابس الآمنة لكل طلب جديد.
  • قد يتم استنفاد الاتصالات في ظل أحوال حركة المرور المرتفعة، إذ يستغرق إطلاق الاتصالات بعض الوقت. إلى النظام.

أفضل الممارسات

  • يجب أن تقبل خدمات الخلفية اتصالاً مستمرًا بـ HTTP وتتعامل معه وفقًا لـ HTTP 1.1 المعايير.
  • يجب أن تستجيب خدمات الخلفية باستخدام عنوان Connection:keep-alive إذا كان ذلك ممكنًا. لمعالجة الاتصالات المستمرة.
  • يجب أن تستجيب خدمات الخلفية باستخدام عنوان Connection:close إذا لم تتمكن من تنفيذ ما يلي: التعامل مع الاتصالات المستمرة.

سيضمن تنفيذ هذا النمط أنّ Apigee Edge يمكنه معالجة العمليات المستمرة أو غير المستمرة. الاتصال بخدمات الخلفية، دون الحاجة إلى إجراء تغييرات على الخادم الوكيل لواجهة برمجة التطبيقات.

محتوى إضافي للقراءة