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:
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:
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.
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.MaxValue
bir 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.
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önlendirildifabric:/app/users/foo
- isteği
/api/users/bar
hizmet örneğine yönlendirildifabric:/app/users/bar
- isteği
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önlendirildifabric:/app/users/foo
- isteği
/api/users/bar
hizmet örneğine yönlendirildifabric:/app/users/bar
- isteği
Her hizmet örneği, iki bölümlü Int64 bölüm düzeni ve öğesine yayılan Int64.MinValue
Int64.MaxValue
bir 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.