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 veya Event Hubs, IoT Hub veya Azure API Management gibi trafik girişi için tasarlanmış başka bir hizmet olabilir.

Bu makale, Azure API Management'ı Service Fabric uygulamalarınıza ağ geçidi olarak kullanmaya giriş niteliğindedir. API Management, Service Fabric ile doğrudan tümleştirerek arka uç Service Fabric hizmetlerinizde zengin bir 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'ın 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 kendi durum bilgisi olmayan 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 aracılığıyla 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 adlandırılmış. Hizmet uç noktası çözümlemesi, belirli bir hizmet örneğinin belirli bir bölümünü tanımlamayı 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ı, bir 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 API Management işlemi, bir 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, url yolundaki bir değer gibi gelen HTTP isteğinden bazı girişler kullanılarak bir lambda yöntemiyle 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üm ve öğesine yayılan Int64.MinValue Int64.MaxValuebir anahtar aralığı ile 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 burada bölüm anahtarını hesaplamak için 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ğindeki 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 bir 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şturulan 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. Örneğin:

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

Dinamik olarak oluşturulan bir ada sahip bir uygulamanın her kullanıcısı için yeni bir durum bilgisi olmayan 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 uçtaki 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 tarafından sağlanan değerden name arka uç ilke tanımında oluşturulur. Örneğin:

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

Her hizmet örneği, iki bölümlü Int64 bölüm düzeni ve öğesine yayılan Int64.MinValue Int64.MaxValuebir anahtar aralığı 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 burada bölüm anahtarını hesaplamak için herhangi bir algoritma kullanılabilir.

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

Sonraki adımlar

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