API Management Davpr tümleştirme ilkeleri

Bu konu, Davpr tümleştirmesi API Management ilkelerine yönelik bir başvuru sağlar. Davpr, herhangi bir dilde veya çerçevede durum bilgisiz ve durum bilgisi olmayan mikro hizmetler tabanlı uygulamalar oluşturmak için taşınabilir bir çalışma zamanı. Hizmet bulma ve çağırma gibi ortak mikro hizmet desenlerini, yerleşik yeniden deneme mantığı ile yayımlama ve yayınlama, en az bir kez teslimat semantiğinin yayımlanması, yayınlamayla abone olma ve dış hizmetler kullanılarak kolayca bileşim sağlamak için takılabilir bağlama kaynaklarıyla birlikte. DAPR.io adresine giderek, davpr ile çalışmaya başlama hakkında ayrıntılı bilgi ve yönergeler için bkz.. İlke ekleme ve yapılandırma hakkında daha fazla bilgi için bkz. API Management ilkeleri.

Önemli

Bu konuda başvurulan ilkeler yalnızca, Davpr desteği etkinken API Management ağ geçidinin şirket içinde barındırılan sürümünde çalışır.

Şirket içinde barındırılan ağ geçidinde Davpr desteğini etkinleştir

Şirket içinde barındırılan ağ geçidinde Davpr desteğini açmak için, "app-name" değerini istenen bir adla değiştirerek Kubernetes Dağıtım şablonuna aşağıda bulunan davpr ek açıklamalarını ekleyin. Bu API Management için ayarlama ve kullanma hakkında ayrıntılı izlenecek yol, burada, davpr ile kullanılabilir.

template:
    metadata:
      labels:
        app: app-name
      annotations:
        dapr.io/enabled: "true"
        dapr.io/app-id: "app-name"

Distributed Application Runtime (Dapr) tümleştirme ilkeleri

  • Bir hizmete Istek gönder: bir davpr mikro hizmetini bulmak ve güvenilir bir şekilde iletişim kurmak Için davpr çalışma zamanı 'nı kullanır. Davpr 'de hizmet çağrısı hakkında daha fazla bilgi edinmek için bu Benioku dosyasındaki açıklamaya bakın.
  • Yayın /alt konuya Ileti gönder: bir yayımla/abone ol konusuna ileti yayımlamak Için davpr çalışma zamanı kullanır. Davpr 'de yayımla/abone ol iletileri hakkında daha fazla bilgi edinmek için bu Benioku dosyasındaki açıklamaya bakın.
  • Çıkış bağlamasını Tetikle: çıkış bağlaması aracılığıyla bir dış sistem çağırmak Için davpr çalışma zamanı kullanır. Davpr 'deki bağlamalar hakkında daha fazla bilgi edinmek için bu Benioku dosyasındaki açıklamaya bakın.

İsteği bir hizmete gönder

Bu ilke, geçerli isteğin hedef URL'sini, şablon parametrelerini ilke deyiminde http://localhost:3500/v1.0/invoke/{app-id}[.{ns-name}]/method/{method-name} belirtilen değerlerle değiştirmek üzere ayarlar.

İlke, Dapr'ın ağ geçidiyle aynı pod'daki bir araba kapsayıcısı içinde çalıştırılanı varsayıyor. Dapr çalışma zamanı, isteği aldıktan sonra HTTP ile gRPC arasında olası protokol çevirisi, yeniden denemeler, dağıtılmış izleme ve hata işleme dahil olmak üzere hizmet bulma ve gerçek çağrıyı gerçekleştirir.

İlke deyimi

<set-backend-service backend-id="dapr" dapr-app-id="app-id" dapr-method="method-name" dapr-namespace="ns-name" />

Örnekler

Örnek

Aşağıdaki örnek, "echo" adlı mikro hizmette "back" adlı yöntemin çağrılarak çağrıl olduğunu gösteriyor. set-backend-serviceİlke, hedef URL'yi olarak http://localhost:3500/v1.0/invoke/echo.echo-app/method/back ayarlar. forward-requestİlke, isteği Dapr çalışma zamanına dağıtarak mikro hizmette teslim ediyor.

İlke forward-request burada netlik sağlamak için gösterilmiştir. İlke genellikle anahtar sözcüğü aracılığıyla genel kapsamdan base "devralınmış".

<policies>
    <inbound>
        <base />
        <set-backend-service backend-id="dapr" dapr-app-id="echo" dapr-method="back" dapr-namespace="echo-app" />
    </inbound>
    <backend>
        <forward-request />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

Öğeler

Öğe Açıklama Gerekli
set-backend-service Kök öğe Yes

Öznitelikler

Öznitelik Açıklama Gerekli Varsayılan
backend-id "dapr" olarak ayar gerekir Yes Yok
dapr-app-id Hedef mikro hizmetin adı. Dapr'da appId parametresini oluşturmak için kullanılır. Yes Yok
dapr-method Hedef mikro hizmette çağrılan yöntemin veya URL'nin adı. Dapr'daki yöntem-adı parametresiyle eşler. Yes Yok
dapr ad alanı Hedef mikro hizmetin bulunduğu ad alanının adı. Davpr içindeki AppID parametresini oluşturmak için kullanılır. No Yok

Kullanım

Bu ilke, aşağıdaki ilke bölümlerinde ve kapsamlardakullanılabilir.

  • İlke bölümleri: gelen
  • İlke kapsamları: tüm kapsamlar

Yayın/alt konuya ileti gönder

Bu ilke, API Management ağ geçidine bir Davpr yayımlama/abone olma konusuna ileti göndermesini söyler. İlke, http://localhost:3500/v1.0/publish/{{pubsub-name}}/{{topic}} şablon parametrelerini değiştirmek ve ilke bildiriminde belirtilen içerik eklemek için BIR http post isteği yaparak bunu gerçekleştirir.

İlke, davpr çalışma zamanının ağ geçidiyle aynı Pod içindeki bir sepet kapsayıcısında çalıştığını varsayar. Davpr çalışma zamanı, yayımlama/alt semantiğini uygular.

İlke ekstresi

<publish-to-dapr pubsub-name="pubsub-name" topic="topic-name" ignore-error="false|true" response-variable-name="resp-var-name" timeout="in seconds" template="Liquid" content-type="application/json">
    <!-- message content -->
</publish-to-dapr>

Örnekler

Örnek

Aşağıdaki örnekte, geçerli isteğin gövdesinin "Orders" pub/Sub bileşeninin"yeni" konusuna gönderilmesi gösterilmektedir. Davpr çalışma zamanından alınan yanıt, bağlam nesnesindeki Variables koleksiyonunun "dadpr-Response" girdisinde saklanır.

Eğer Davpr çalışma zamanı, hedef konuyu bulamıyorsa, örneğin ve bir hata ile yanıt verirse, "hata durumunda" bölümü tetiklenir. Davpr çalışma zamanından alınan yanıt, çağıran öğesine döndürülür. Aksi takdirde, varsayılan 200 OK yanıt döndürülür.

"Arka uç" bölümü boş ve istek arka uca iletilmiyor.

<policies>
     <inbound>
        <base />
        <publish-to-dapr
           pubsub-name="orders"
               topic="new"
               response-variable-name="dapr-response">
            @(context.Request.Body.As<string>())
        </publish-to-dapr>
    </inbound>
    <backend>
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
        <return-response response-variable-name="pubsub-response" />
    </on-error>
</policies>

Öğeler

Öğe Açıklama Gerekli
Yayınla Kök öğe Yes

Öznitelikler

Öznitelik Açıklama Gerekli Varsayılan
PubSub-adı Hedef PubSub bileşeninin adı. Dapr'da pubsubname parametresiyle eşler. Yoksa, konu özniteliği değeri şeklinde olması pubsub-name/topic-name gerekir. No Hiçbiri
konu başlığı Konunun adı. Dapr'daki konu parametresiyle eşler. Yes Yok
ignore-error , ilkeye Dapr çalışma zamanından hata aldıktan sonra true "on-error" bölümünü tetiklemey talimatı verirse No false
response-variable-name Dapr çalışma zamanından gelen yanıtı depolamak için kullanılan Değişkenler koleksiyonu girişinin adı No Hiçbiri
timeout Dapr çalışma zamanının yanıt verme süresi (saniye olarak). 1 ile 240 saniye arasında olabilir. No 5
şablon İleti içeriğini dönüştürmek için kullanmak üzere altyapıyı templating. "Liquid" desteklenen tek değerdir. No Hiçbiri
content-type İleti içeriğinin türü. "application/json" desteklenen tek değerdir. No Hiçbiri

Kullanım

Bu ilke, aşağıdaki ilke bölümlerinde ve kapsamlarında kullanılabilir.

  • İlke bölümleri: gelen, giden, hata
  • İlke kapsamları: tüm kapsamlar

Tetikleyici çıkış bağlaması

Bu ilke API Management ağ geçidine giden bir Davpr bağlamasınıtetiklemesine bildirir. İlke, http://localhost:3500/v1.0/bindings/{{bind-name}} şablon parametresini değiştirmek ve ilke bildiriminde belirtilen içeriği eklemek için BIR http post isteği yaparak bunu gerçekleştirir.

İlke, davpr çalışma zamanının ağ geçidiyle aynı Pod içindeki bir sepet kapsayıcısında çalıştığını varsayar. Davpr çalışma zamanı, bağlama tarafından temsil edilen dış kaynağı çağırmaktan sorumludur.

İlke ekstresi

<invoke-dapr-binding name="bind-name" operation="op-name" ignore-error="false|true" response-variable-name="resp-var-name" timeout="in seconds" template="Liquid" content-type="application/json">
    <metadata>
        <item key="item-name"><!-- item-value --></item>
    </metadata>
    <data>
        <!-- message content -->
    </data>
</invoke-dapr-binding>

Örnekler

Örnek

Aşağıdaki örnek, "Create" işlem adına sahip "dış sistemler" adlı giden bağlamanın tetiklenmesi, "kaynak" ve "istemci-IP" adlı iki anahtar/değer öğeden oluşan meta veriler ve özgün istekten gelen gövdeyi gösterir. Davpr çalışma zamanından alınan yanıt, bağlam nesnesindeki değişkenler koleksiyonunun "bind-Response" girdisinde yakalanır.

Eğer bir nedenden dolayı Davpr çalışma zamanı başarısız olursa ve hata vererek yanıt verirse, "hata durumunda" bölümü tetiklenir ve Davpr çalışma zamanından alınan yanıt, çağıran çağırana döndürülür. Aksi takdirde, varsayılan 200 OK yanıt döndürülür.

"Arka uç" bölümü boş ve istek arka uca iletilmiyor.

<policies>
     <inbound>
        <base />
        <invoke-dapr-binding
                      name="external-system"
                      operation="create"
                      response-variable-name="bind-response">
            <metadata>
                <item key="source">api-management</item>
                <item key="client-ip">@( context.Request.IpAddress )</item>
            </metadata>
            <data>
                @( context.Request.Body.As<string>() )
            </data>
        </invoke-dapr-binding>
    </inbound>
    <backend>
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
        <return-response response-variable-name="bind-response" />
    </on-error>
</policies>

Öğeler

Öğe Açıklama Gerekli
Invoke-dadpr-bağlama Kök öğe Yes
meta veriler Belirli meta verileri anahtar/değer çiftleri biçiminde bağlama. Davpr içindeki metadata özelliği ile eşlenir. No
veriler İletinin içeriği. Davpr içindeki Data özelliği ile eşlenir. No

Öznitelikler

Öznitelik Açıklama Gerekli Varsayılan
name Hedef bağlama adı. , Davpr içinde tanımlanan bağlamaların adıyla eşleşmelidir. Yes Yok
operation Hedef işlem adı (bağlamaya özgü). Davpr içindeki Operation özelliği ile eşlenir. No Hiçbiri
ignore-error , ilkeye Dapr çalışma zamanından hata aldıktan sonra true "on-error" bölümünü tetiklemey talimatı verirse No false
response-variable-name Dapr çalışma zamanından gelen yanıtı depolamak için kullanılan Değişkenler koleksiyonu girişinin adı No Hiçbiri
timeout Dapr çalışma zamanının yanıt verme süresi (saniye olarak). 1 ile 240 saniye arasında olabilir. No 5
şablon İleti içeriğini dönüştürmek için kullanmak üzere altyapıyı templating. "Liquid" desteklenen tek değerdir. No Hiçbiri
content-type İleti içeriğinin türü. "application/json" desteklenen tek değerdir. No Hiçbiri

Kullanım

Bu ilke, aşağıdaki ilke bölümlerinde ve kapsamlarında kullanılabilir.

  • İlke bölümleri: gelen, giden, hata
  • İlke kapsamları: tüm kapsamlar