Aracılığıyla paylaş


Önbelleğe genel bakış

UYGULANANLAR: Tüm API Management katmanları

API isteklerini ve ilgili bilgileri depolamak ve almak için Azure API Management'ta önbelleğe almayı yapılandırın. API Management, arka uç hizmetlerinden gelen yanıtları depolayarak sonraki özdeş istekleri doğrudan önbellekten sunarak arka uç hizmetini tekrar tekrar çağırma ihtiyacını azaltır. Önbelleğe alma API performansını artırabilir, arka uç yükünü azaltabilir ve API Management aracılığıyla API'leri çağıran müşterilerin genel deneyimini iyileştirebilir.

Bu makalede API Management'taki önbelleğe alma seçenekleri açıklanır ve önemli senaryolar ile yapılandırmayla ilgili dikkat edilmesi gerekenler vurgulanır.

Önemli

Önbelleğe alma için hem önbelleğe alma hizmeti (API Management hizmetinin bir parçası olarak otomatik olarak dağıtılan bir iç önbellek ya da sizin tarafınızdan dağıtılan bir dış önbellek) ve önbelleğe alma ilkelerinin API isteklerine nasıl uygulanacağını belirtmek için yapılandırılması gerekir.

Önbelleğe alma hizmeti seçenekleri

Azure API Management, farklı performans ve mimari gereksinimleri karşılamak için aşağıdaki önbelleğe alma hizmeti seçeneklerini sağlar.

  • İç (yerleşik): İç (yerleşik) önbellek tüm API Management hizmet katmanlarında ( Tüketim katmanı hariç) otomatik olarak sağlanır. İç önbellek uygulaması klasik katmanlar (Geliştirici, Temel, Standart ve Premium) ile v2 katmanları (Temel v2, Standart v2 ve Premium v2) arasında farklılık gösterir. v2 katmanlarında yerleşik önbellek, gelişmiş güvenilirlik sağlar. Yerleşik önbellekle önbelleğe alma hakkında daha fazla bilgi edinin.

  • Dış önbellek: Gelişmiş performans ve kalıcılık için, isteğe bağlı olarak Herhangi bir API Management hizmet katmanı veya ağ geçidiyle kullanmak üzere Azure Yönetilen Redis gibi dış Redis uyumlu bir önbellek yapılandırın. Azure Managed Redis ile dış önbellek ayarlama hakkında daha fazla bilgi edinin.

Aşağıdaki tablo, iç ve dış önbelleğin özelliklerini karşılaştırır.

Kapasite Dahili External
Otomatik sağlama ve yönetim ✔️
Maliyet eklendi ✔️
Özel yapılandırma ✔️
Tüm katmanlarda ve ağ geçitlerinde kullanılabilirlik Tüketim katmanında veya şirket içinde barındırılan ağ geçidinde kullanılamaz ✔️
Bölgesel depolama Önbellek, API Management örneğiyle aynı bölgede sağlanır ve ölçek birimleri arasında paylaşılır.

Çok bölgeli bir dağıtımda her bölgenin kendi önbelleği vardır.
Müşterinin tercihlerine bağlıdır
Kalıcı depolama v2 katmanlarında kalıcı.

Klasik katmanlarda (Geliştirici, Temel, Standart ve Premium), hizmet güncelleştirmeleri gerçekleştiğinde önbellek içeriği kalıcı olmaz .
✔️
Katman başına sınırlar Önbellek boyutu hizmet katmanına göre değişir Sınırlı değil
Birden çok API Management örneğinin paylaştığı erişim ✔️
Anlamsal önbelleğe alma desteği ✔️
Verileri önceden yükleme ve temizleme desteği ✔️

Önbelleğe alma senaryoları

Aşağıdaki tabloda yer alan senaryolar gibi senaryolar için Azure API Management'ta önbelleğe alma özelliğini kullanın.

Scenario Description Önbellek türü Önbellek kullanılabilirliği veya bağlantı kaybıyla ilgili davranış
İstemci deneyimini iyileştirme İstemciler için yinelenen istek işleme sürecini hızlandırın. İçsel veya dışsal Backend, isteklere hizmet eder ve önbellek kullanılamıyorsa tam yükü işlemelidir.
Maliyetleri ve arka uç ölçeklendirmesini denetleme Arka uç tam trafik için ölçeklendirilmezse arka uç yükünü ve maliyetlerini azaltın. External Önbellek ve hizmet yapılandırmasına bağlıdır. Öneri: En yüksek güvenilirlik ve izleme performansına sahip bir önbellek hizmeti katmanı seçin.
Meta veri deposu Önbellekte rastgele verileri depolamak için cache-store-value kullanın. İçsel veya dışsal Önbellek ve hizmet yapılandırmasına bağlıdır.

Önemli noktalar:

  • Herhangi bir önbelleğe alma senaryosunda önbellek kullanılabilirliği veya bağlantı kaybı olasılığını göz önünde bulundurun. API Management, önbelleğin kullanılabilirliğini sağlamak için "olabildiğince iyi" yaklaşımını kullanır. Yapılandırılmış bir önbellek kullanılamıyorsa, önbellek eksikleri oluşur ve varsayılan olarak istekler arka uç hizmetine devam eder.

  • API Management klasik katmanlarında iç önbellek geçicidir ve hizmet güncelleştirmeleri arasında kalıcı olmaz. Bir hizmet güncelleştirmesi sırasında iç önbellek, bir kerede önbelleğin en fazla 50% içeren aşamalı bir işlemle temizlenir.

    Uyarı

    İç önbelleğin kaybı gibi olası müşteri etkilerini en aza indirmek için güncelleştirmeler için bakım penceresi de dahil olmak üzere hizmet güncelleştirme ayarlarını yapılandırabilirsiniz.

  • Bir dış önbelleği yapılandırırsanız, bu kalıcı olabilir, ancak kullanılabilirlik ve bağlantı sağlamak sizin sorumluluğundadır.

  • Arka uç hizmeti, önbellek mevcut olmadığında aşırı yüklenebilecek trafik artışlarından korumak için herhangi bir önbellek sorgulama ilkesinin sonrasında hız sınırla ilkesi (hız sınırla veya anahtara göre hız sınırla) yapılandırın.

Önbelleğe alma ilkeleri

Azure API Management'ta API yanıtlarının nasıl önbelleğe alınıp getirileceğini denetlemek için önbelleğe alma ilkelerini yapılandırın.

  • Önbelleğe alma ilkelerinde varsayılan olarak, API Management yapılandırılırsa bir dış önbellek kullanır ve aksi takdirde yerleşik önbelleğe geri döner.

  • API Management, aşağıdaki tabloda gösterildiği gibi önbelleğe alma ilkelerini çiftler halinde sağlar. İlke tanımında inbound , önbelleğe alınmış yanıtları denetlemek için bölümünde bir önbellek arama ilkesi ve başarılı yanıtları önbellekte outbound depolamak için bölümünde bir önbellek deposu ilkesi yapılandırın.

Policies Description Usage
önbellek arama / önbellek deposu - Önbellekten yanıt alma
- Önbellek isteğinde yanıt depolama
- Aynı GET istek için önbellekten eksiksiz bir API yanıtı almak için kullanın
önbellek-arama-değeri / önbellek-depolama-değeri - Önbellekten belirli bir değeri alma
- Belirli bir değeri önbellekte depolama
- Belirli önbellek anahtarlarıyla özel önbelleğe alma senaryoları için kullanın
azure-openai-semantic-cache-lookup / azure-openai-semantic-cache-store - Azure OpenAI API isteği için önbellekte benzer bir yanıt olup olmadığını denetleyin
- Azure OpenAI API isteği için yanıt depolama
- Azure OpenAI Sohbet Tamamlama API'si isteklerine benzer yanıtları almak için kullanın
llm-semantic-cache-lookup / llm-semantic-cache-store - LLM API isteği için önbellekte benzer bir yanıtın olup olmadığını denetleyin
- LLM API isteği için yanıt depolama
- LLM Sohbet Tamamlama API'si isteklerine benzer yanıtları almak için kullanın

Tavsiye

  • Girdileri önbellekte depolamaya yönelik ilkeler, önbelleğe alınmış girişin duration ne kadar süreyle kalıcı olduğunu belirten bir öznitelik içerir.
  • Önbellekten anahtarla tanımlanan belirli bir değeri kaldırmak için cache-remove-value komutunu kullanın.

Önbelleğe alma ilkesi örnekleri

Aşağıda API Management'taki önbelleğe alma ilkelerinin temel örnekleri verilmiştir. Daha fazla örnek için önbelleğe alma ilkesi başvuru makalelerine bakın.

Yanıtları Önbelleğe Alma

Arka uç çağrıları olmadan aynı istekleri sunmak için iç önbellekte tam API yanıtlarını önbelleğe alın. Bu örnekte önbellek yanıtları yedi gün boyunca depolar.

<policies>
    <inbound>
        <base />
        <cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none" must-revalidate="true" caching-type="internal" >
            <vary-by-query-parameter>version</vary-by-query-parameter>
        </cache-lookup>
    </inbound>
    <outbound>
        <cache-store duration="604800" />
        <base />
    </outbound>
</policies>

Değer önbelleğe alma

Belirli veri değerlerini birden çok istekte yeniden kullanmak üzere önbelleğe alın.

<policies>
    <inbound>
        <cache-lookup-value key="user-preferences" default-value="none" variable-name="preferences" />
        <choose>
            <when condition="@(context.Variables["preferences"].ToString() == "none")">
                <!-- Load preferences from backend -->
                <send-request mode="new" response-variable-name="prefsResponse">
                    <set-url>https://backend.api/user/preferences</set-url>
                </send-request>
                <cache-store-value key="user-preferences" value="@(((IResponse)context.Variables["prefsResponse"]).Body.As<string>())" duration="1800" />
            </when>
        </choose>
    </inbound>
</policies>

Hız sınırlama koruması

En iyi yöntem olarak, arka uç hizmetlerini korumak için önbellek aramasını hız sınırlamasıyla birleştirin.

<policies>
    <inbound>
        <cache-lookup-value key="@("data-" + context.Request.IpAddress)" variable-name="cachedData" />
        <choose>
            <when condition="@(!context.Variables.ContainsKey("cachedData"))">
                <rate-limit calls="10" renewal-period="60" />
                <!-- Proceed to backend -->
            </when>
            <otherwise>
                <!-- Return cached data without rate limiting -->
                <return-response>
                    <set-body>@((string)context.Variables["cachedData"])</set-body>
                </return-response>
            </otherwise>
        </choose>
    </inbound>
</policies>

Güvenlikle ilgili dikkat edilmesi gerekenler

  • Hassas veriler: Hassas veya kişisel bilgiler içeren yanıtları önbelleğe almaktan kaçının
  • Önbellek anahtarları: Önbellek anahtarlarının günlüklerde veya tanılamalarda hassas bilgileri göstermediğinden emin olun
  • Erişim denetimi: Dış önbellek uygun ağ güvenliği ve erişim denetimleri gerektirir
  • Şifreleme: Dış önbellek örneklerine bağlantılar için TLS/SSL kullanın