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ının arayüzüdür. Apigee Edge, bir API proxy'si aracılığıyla arka uç hizmetlerine bağlanmak için çeşitli yöntemler sunar:
- TargetEndpoint, herhangi bir HTTP/HTTPs, NodeJS veya Hosted Target hizmetine bağlanmak için kullanılır.
- TargetEndpoint'te hedef sunucu çağrılmadan önce veya çağrıldıktan sonra herhangi bir harici hizmeti çağırmak için ServiceCallout politikası.
- Arka uç hizmetlerine bağlanmak için JavaScript politikasına veya JavaCallout politikasına eklenen özel kod.
Kalıcı Bağlantılar
HTTP kalıcı bağlantısı (HTTP keep-alive veya HTTP bağlantı yeniden kullanımı olarak da adlandırılır), her istek/yanıt çifti için yeni bir bağlantı açmak yerine tek bir TCP bağlantısının birden fazla HTTP isteği/yanıtı göndermesine ve 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 etkin kalır. Yani, bağlantı havuzunda 60 saniyeden uzun süre boşta kalan bağlantılar kapatılır.
Etkin tutma 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, TargetEndpoint'teki belirli bir arka uç hizmeti için etkin tutma süresi 30 saniye olarak ayarlanabilir.
Aşağıdaki örnekte, TargetEndpoint yapılandırmasında keepalive.timeout.millis 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, bir API proxy'sindeki belirli bir arka uç hizmetinin etkin tutma davranışını kontrol eder. Ayrıca, tüm proxy'lerdeki tüm arka uç hizmetleri için etkin tutma davranışını 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 60 saniyedir. Bu özellikte yapılan değişiklikler, Apigee Edge ile tüm API proxy'lerindeki tüm arka uç hizmetleri arasındaki etkin tutma bağlantısı davranışını etkiler.
Antipattern
Belirli bir API proxy'sinin TargetEndpoint yapılandırmasında keepalive.timeout.millis özelliğini 0 olarak ayarlayarak veya Mesaj İşleyiciler'de HTTPTransport.keepalive.timeout.millis özelliğini 0 olarak ayarlayarak kalıcı (keep alive) bağlantıların devre dışı bırakılması, performansı etkileyeceğinden önerilmez.
Aşağıdaki örnekte, TargetEndpoint yapılandırması keepalive.timeout.millis değerini 0 olarak ayarlayarak belirli bir arka uç hizmeti için kalıcı (keep-alive) 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 etkin tutma bağlantıları devre dışı bırakılırsa Edge, hedef arka uç hizmetlerine yönelik her yeni istek için yeni bir bağlantı açmalıdır. Arka uç HTTPs ise Edge, her yeni istek için SSL el sıkışması da gerçekleştirir ve bu da API isteklerinin genel gecikmesine katkıda bulunur.
Etki
- Apigee Edge'in her yeni istek için yeni bir bağlantı açması ve SSL el sıkışması gerçekleştirmesi gerektiğinden API isteklerinin genel yanıt süresi artar.
- Bağlantıların sisteme geri verilmesi biraz zaman aldığından, yüksek trafik koşullarında bağlantılar tükenebilir.
En İyi Uygulama
- Arka uç hizmetleri, HTTP 1.1 standartlarına uygun olarak HTTP kalıcı bağlantısını kabul etmeli ve işlemelidir.
- Arka uç hizmetleri, kalıcı (keep-alive) bağlantıları işleyebiliyorsa
Connection:keep-alivebaşlığıyla yanıt vermelidir. - Arka uç hizmetleri, kalıcı bağlantıları işleyemiyorsa
Connection:closeüstbilgisiyle yanıt vermelidir.
Bu kalıbın uygulanması, API proxy'sinde değişiklik yapılmasına gerek kalmadan Apigee Edge'in arka uç hizmetleriyle kalıcı veya kalıcı olmayan bağlantıyı otomatik olarak işleyebilmesini sağlar.