Antipattern: HTTP kalıcı (yeniden kullanılabilir keep-alive) bağlantılarını devre dışı bırakma

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

API proxy'si, arka uç hizmetlerine bağlanmak için kullanılan istemci uygulamaları için bir arayüzdür. Apigee Edge, API proxy'si aracılığıyla arka uç hizmetlerine bağlanmak için birden fazla yol sunar:

Kalıcı Bağlantılar

HTTP kalıcı bağlantısı (HTTP keep-alive veya HTTP bağlantısı yeniden kullanımı olarak da adlandırılır), her istek/yanıt çifti için yeni bağlantı açmak yerine tek bir TCP bağlantısının birden fazla HTTP isteği/yanıtı gönderip almasına olanak tanıyan bir kavramdır.

Apigee Edge, arka uç hizmetleriyle iletişim kurmak için kalıcı bağlantı kullanır. Bir bağlantı varsayılan olarak 60 saniye boyunca aktif kalır. Yani bir bağlantı, bağlantı havuzunda 60 saniyeden uzun süre boşta kalırsa bağlantı kapanır.

Keep alive zaman aşımı süresi, bir API proxy'sinin TargetEndpoint yapılandırmasında belirtilen keepalive.timeout.millis adlı bir özellik aracılığıyla yapılandırılabilir. Örneğin, keep alive süresi TargetEndpoint'te belirli bir arka uç hizmeti için 30 saniyeye ayarlanabilir.

Aşağıdaki örnekte keepalive.timeout.millis, TargetEndpoint yapılandırmasında 30 saniye olarak ayarlanmıştır:

<!-- /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>

Yukarıdaki örnekte keepalive.timeout.millis, API proxy'sindeki belirli bir arka uç hizmeti için koruma davranışını kontrol eder. Tüm proxy'lerdeki arka uç hizmetleri için davranışı sürdürmeyi kontrol eden bir özellik de vardır. HTTPTransport.keepalive.timeout.millis, Mesaj İşleyici bileşeninde yapılandırılabilir. Bu özelliğin varsayılan değeri de 60 saniyedir. Bu mülkte herhangi bir değişiklik yapmak, Apigee Edge ile tüm API proxy'lerindeki tüm arka uç hizmetleri arasındaki canlı tutma davranışını etkiler.

Antipattern

Belirli bir API Proxy'sinin TargetEndpoint yapılandırmasında keepalive.timeout.millis özelliğini 0 olarak ayarlayarak veya Mesaj İşleyicilerinde HTTPTransport.keepalive.timeout.millis özelliğini 0 olarak ayarlayarak kalıcı (yayında tut) bağlantıların devre dışı bırakılması önerilmez.

Aşağıdaki örnekte TargetEndpoint yapılandırması, keepalive.timeout.millis değerini 0 değerine ayarlayarak belirli bir arka uç hizmeti için kalıcı (yayında tut) bağlantıları devre dışı bırakır:

<!-- /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>

Bir veya daha fazla arka uç hizmeti için canlı tutma bağlantıları devre dışı bırakılırsa Edge'in hedef arka uç hizmetlerine yapılan her yeni istek için yeni bir bağlantı açması gerekir. Arka uç HTTP ise Edge her yeni istek için SSL el sıkışması da gerçekleştirir. Bu da API isteklerinin genel gecikmesini artırır.

Etki

  • Apigee Edge'in yeni bir bağlantı açması ve her yeni istek için SSL el sıkışması yapması gerektiğinden API isteklerinin genel yanıt süresini artırır.
  • Bağlantıların sisteme geri gelmesi biraz zaman aldığı için yüksek trafik koşullarında bağlantılar tükenebilir.

En İyi Uygulama

  • Arka uç hizmetleri, HTTP kalıcı bağlantısını HTTP 1.1 standartlarına uygun olarak desteklemeli ve işlemelidir.
  • Arka uç hizmetleri, kalıcı (yayında tut) bağlantıları yönetebiliyorsa bir Connection:keep-alive üst bilgisi ile yanıt vermelidir.
  • Arka uç hizmetleri, kalıcı bağlantıları işleyemezse bir Connection:close üst bilgisi ile yanıt vermelidir.

Bu kalıbın uygulanması Apigee Edge'in API proxy'sinde değişiklik gerektirmeden arka uç hizmetleriyle kalıcı veya kalıcı olmayan bağlantıları otomatik olarak işleyebilmesini sağlar.

Daha fazla bilgi