Service Fabric ve Azure API Management'a genel bakış

Bulut uygulamalarının normalde kullanıcılar, cihazlar ve diğer uygulamalara tek giriş noktası sağlamak için bir ön uç ağ geçidine ihtiyacı vardır. Service Fabric'te ağ geçidi, ASP.NET Core uygulaması gibi durum bilgisi olmayan herhangi bir hizmet ya da Event Hubs, IoT Hub veya Azure API Management gibi trafik girişi için tasarlanmış başka bir hizmet olabilir.

Bu makale, Service Fabric uygulamalarınıza ağ geçidi olarak Azure API Management kullanmaya giriş niteliğindedir. API Management doğrudan Service Fabric ile tümleştirerek arka uç Service Fabric hizmetlerinizde zengin yönlendirme kuralları kümesine sahip API'ler yayımlamanıza olanak tanır.

Kullanılabilirlik

Önemli

Bu özellik, gerekli sanal ağ desteği nedeniyle API Management Premium ve Geliştirici katmanlarında kullanılabilir.

Mimari

Yaygın bir Service Fabric mimarisi, HTTP API'lerini kullanıma sunan arka uç hizmetlerine HTTP çağrıları yapan tek sayfalı bir web uygulaması kullanır. Service Fabric kullanmaya başlama örnek uygulaması bu mimarinin bir örneğini gösterir.

Bu senaryoda durum bilgisi olmayan bir web hizmeti Service Fabric uygulamasına ağ geçidi görevi görür. Bu yaklaşım, aşağıdaki diyagramda gösterildiği gibi HTTP isteklerini arka uç hizmetlerine ara sunucu olarak kullanabilen bir web hizmeti yazmanızı gerektirir:

Durum bilgisi olmayan bir web hizmetinin Service Fabric uygulamasına nasıl ağ geçidi olarak hizmet ettiğini gösteren diyagram.

Uygulamaların karmaşıklığı arttıkça, sayısız arka uç hizmetlerinin önünde bir API sunması gereken ağ geçitleri de artar. Azure API Management yönlendirme kuralları, erişim denetimi, hız sınırlama, izleme, olay günlüğü ve yanıt önbelleğe alma ile karmaşık API'leri işlemek için tasarlanmıştır. Azure API Management, istekleri doğrudan Service Fabric'teki arka uç hizmetlerine akıllı bir şekilde yönlendirmek için Service Fabric hizmet bulma, bölüm çözümleme ve çoğaltma seçimini destekler, böylece durum bilgisi olmayan kendi API ağ geçidinizi yazmanız gerekmez.

Bu senaryoda, aşağıdaki diyagramda gösterildiği gibi HTTP API çağrıları Azure API Management üzerinden yönetilir ve yönlendirilirken web kullanıcı arabirimi bir web hizmeti aracılığıyla sunulmaya devam edilir:

HTTP API çağrıları Azure API Management aracılığıyla yönetilir ve yönlendirilirken web kullanıcı arabiriminin hala bir web hizmeti aracılığıyla nasıl sunulduğunun gösterildiği diyagram.

Uygulama senaryoları

Service Fabric'teki hizmetler durum bilgisi olmayan veya durum bilgisi olan hizmetler üç şemadan biri kullanılarak bölümlenebilir: singleton, int-64 aralığı ve adı. Hizmet uç noktası çözümlemesi, belirli bir hizmet örneğinin belirli bir bölümünün tanımlanmasını gerektirir. Bir hizmetin uç noktası çözümlendiğinde, tek bir bölüm dışında hem hizmet örneği adı (örneğin, fabric:/myapp/myservice) hem de hizmetin belirli bölümü belirtilmelidir.

Azure API Management durum bilgisi olmayan hizmetlerin, durum bilgisi olan hizmetlerin ve herhangi bir bölümleme düzeninin herhangi bir bileşimiyle kullanılabilir.

Durum bilgisi olmayan bir hizmete trafik gönderme

En basit durumda trafik durum bilgisi olmayan bir hizmet örneğine iletilir. Bunu başarmak için API Management işlemi, Service Fabric arka ucundaki belirli bir durum bilgisi olmayan hizmet örneğine eşleyen bir Service Fabric arka ucuna sahip bir gelen işleme ilkesi içerir. Bu hizmete gönderilen istekler, hizmetin rastgele bir örneğine gönderilir.

Örnek

Aşağıdaki senaryoda bir Service Fabric uygulaması, iç HTTP API'sini kullanıma sunan adlı fabric:/app/fooservice durum bilgisi olmayan bir hizmet içerir. Hizmet örneği adı iyi bilinir ve doğrudan API Management gelen işleme ilkesinde sabit kodlanabilir.

Service Fabric uygulamasını gösteren diyagram, iç HTTP API'lerini kullanıma sunan durum bilgisi olmayan bir hizmet içerir.

Durum bilgisi olan bir hizmete trafik gönderme

Durum bilgisi olmayan hizmet senaryosuna benzer şekilde trafik durum bilgisi olan bir hizmet örneğine iletilebilir. Bu durumda, bir API Management işlemi, isteği belirli bir durum bilgisi olan hizmet örneğinin belirli bir bölümüne eşleyen Service Fabric arka ucuna sahip bir gelen işleme ilkesi içerir. Her isteği eşlemek için bölüm, gelen HTTP isteğinden alınan bazı girişler (URL yolundaki bir değer gibi) kullanılarak bir lambda yöntemi aracılığıyla hesaplanır. İlke, istekleri yalnızca birincil çoğaltmaya veya okuma işlemleri için rastgele bir çoğaltmaya gönderecek şekilde yapılandırılabilir.

Örnek

Aşağıdaki senaryoda, bir Service Fabric uygulaması, iç HTTP API'sini kullanıma sunan adlı fabric:/app/userservice bölümlenmiş durum bilgisi olan bir hizmet içerir. Hizmet örneği adı iyi bilinir ve doğrudan API Management gelen işleme ilkesinde sabit kodlanabilir.

Hizmet, iki bölüme ve öğesine yayılan Int64.MinValueInt64.MaxValuebir anahtar aralığına sahip Int64 bölüm düzeni kullanılarak bölümlenmiştir. Arka uç ilkesi, URL istek yolunda sağlanan değeri 64 bitlik bir tamsayıya dönüştürerek id bu aralıktaki bir bölüm anahtarını hesaplar, ancak bölüm anahtarını hesaplamak için burada herhangi bir algoritma kullanılabilir.

Azure API Management topolojisi ile Service Fabric'e genel bakış

Birden çok durum bilgisi olmayan hizmete trafik gönderme

Daha gelişmiş senaryolarda, istekleri birden fazla hizmet örneğine eşleyen bir API Management işlemi tanımlayabilirsiniz. Bu durumda her işlem, gelen HTTP isteğinden gelen değerlere (URL yolu veya sorgu dizesi gibi) ve durum bilgisi olan hizmetler söz konusu olduğunda hizmet örneği içindeki bir bölüme göre istekleri belirli bir hizmet örneğine eşleyen bir ilke içerir.

Bunu başarmak için API Management işlemi, gelen HTTP isteğinden alınan değerlere göre Service Fabric arka ucundaki durum bilgisi olmayan bir hizmet örneğine eşlenen service Fabric arka ucuna sahip bir gelen işleme ilkesi içerir. Bir hizmete yönelik istekler, hizmetin rastgele bir örneğine gönderilir.

Örnek

Bu örnekte, aşağıdaki formül kullanılarak dinamik olarak oluşturulmuş bir ada sahip bir uygulamanın her kullanıcısı için yeni bir durum bilgisi olmayan hizmet örneği oluşturulur:

  • fabric:/app/users/<username>

    Her hizmetin benzersiz bir adı vardır, ancak hizmetler kullanıcı veya yönetici girişine yanıt olarak oluşturulduğundan ve bu nedenle APIM ilkelerine veya yönlendirme kurallarına sabit kodlanamayacağından adlar önceden bilinmez. Bunun yerine, istek gönderilecek hizmetin adı, URL istek yolunda sağlanan değerden name arka uç ilke tanımında oluşturulur. Örnek:

    • bir isteği /api/users/foo hizmet örneğine yönlendirildi fabric:/app/users/foo
    • bir isteği /api/users/bar hizmet örneğine yönlendirildi fabric:/app/users/bar

Dinamik olarak oluşturulan ada sahip bir uygulamanın her kullanıcısı için durum bilgisi olmayan yeni bir hizmet örneğinin oluşturulduğu örneği gösteren diyagram.

Durum bilgisi olan birden çok hizmete trafik gönderme

Durum bilgisi olmayan hizmet örneğine benzer şekilde, bir API Management işlemi istekleri birden fazla durum bilgisi olan hizmet örneğine eşleyebilir ve bu durumda durum bilgisi olan her hizmet örneği için bölüm çözümlemesi de gerçekleştirmeniz gerekebilir.

Bunu başarmak için API Management işlemi, gelen HTTP isteğinden alınan değerlere göre Service Fabric arka ucundaki durum bilgisi olan bir hizmet örneğine eşlenen service Fabric arka ucuna sahip bir gelen işleme ilkesi içerir. bir isteği belirli bir hizmet örneğine eşlemeye ek olarak, istek hizmet örneği içindeki belirli bir bölüme ve isteğe bağlı olarak birincil çoğaltmaya veya bölüm içindeki rastgele bir ikincil çoğaltmaya eşlenebilir.

Örnek

Bu örnekte, aşağıdaki formül kullanılarak dinamik olarak oluşturulan bir ada sahip uygulamanın her kullanıcısı için yeni bir durum bilgisi olan hizmet örneği oluşturulur:

  • fabric:/app/users/<username>

    Her hizmetin benzersiz bir adı vardır, ancak hizmetler kullanıcı veya yönetici girişine yanıt olarak oluşturulduğundan ve bu nedenle APIM ilkelerine veya yönlendirme kurallarına sabit kodlanamayacağından adlar önceden bilinmez. Bunun yerine, istek gönderilecek hizmetin adı, URL istek yolu sağlanan değerden name arka uç ilke tanımında oluşturulur. Örnek:

    • bir isteği /api/users/foo hizmet örneğine yönlendirildi fabric:/app/users/foo
    • bir isteği /api/users/bar hizmet örneğine yönlendirildi fabric:/app/users/bar

Her hizmet örneği, iki bölüme ve öğesine yayılan Int64.MinValueInt64.MaxValuebir anahtar aralığına sahip Int64 bölüm düzeni kullanılarak da bölümlenmiştir. Arka uç ilkesi, URL istek yolunda sağlanan değeri 64 bitlik bir tamsayıya dönüştürerek id bu aralıktaki bir bölüm anahtarını hesaplar, ancak bölüm anahtarını hesaplamak için burada herhangi bir algoritma kullanılabilir.

Her hizmet örneğinin iki bölüme sahip Int64 bölüm düzeni ve Int64.MinValue ile Int64.MaxValue arasında bir anahtar aralığı kullanılarak bölümlendiğini gösteren diyagram.

Sonraki adımlar

hizmetlerinize API Management aracılığıyla API Management ve akış istekleriyle ilk Service Fabric kümenizi ayarlamak için öğreticiyi izleyin.