Azure Cloud Services uygulamasını Azure 'a geçirme Service Fabric

Örnek kod

Bu makalede bir uygulamanın Azure Cloud Services Azure Service Fabric 'a geçirilmesi açıklanmaktadır. Mimari kararlar ve önerilen yöntemlere odaklanır.

Bu proje için anketler adlı bir Cloud Services uygulamayla başlayıp Service Fabric. Amaç, uygulamayı mümkün olduğunca az değişiklikle geçirmektir. Makalenin ilerleyen kısımlarında, Service Fabric için uygulamanın nasıl iyileştirileceği gösterilmektedir.

Bu makaleyi okumadan önce Service Fabric temel bilgilerini anlamak yararlı olacaktır. Bkz. Azure Service Fabric 'ye genel bakış

Anketler uygulaması hakkında

Tailspin adlı kurgusal bir şirket, müşterilerin anketler oluşturmalarına olanak tanıyan anketler uygulaması adlı bir uygulama oluşturdu. Bir müşteri uygulamaya kaydolduktan sonra, kullanıcılar anketler oluşturup yayımlayabilir ve analizi sonuçları toplayabilirler. Uygulama, kişilerin ankete götürebileceği ortak bir Web sitesi içerir. Özgün Tailspin senaryosu hakkında daha fazla bilgi için burayatıklayın.

şimdi Tailspin, anketler uygulamasını Azure üzerinde çalışan Service Fabric kullanarak bir mikro hizmet mimarisine taşımak istiyor. Uygulama zaten Cloud Services bir uygulama olarak dağıtıldığından, Tailspin çok aşamalı bir yaklaşım benimsemektedir:

  1. bulut hizmetlerinin Service Fabric için bağlantı noktası, uygulamadaki değişiklikleri en aza indirir.
  2. mikro hizmet mimarisine geçerek Service Fabric için uygulamayı iyileştirin.

Gerçek dünyada bir projede, her iki aşamanın de örtüşmesi olasıdır. Service Fabric 'e taşıma sırasında, uygulamayı mikro hizmetlere yeniden mimarda başlatırın. Daha sonra mimariyi daha da iyileştirebilirsiniz, belki de kaba hizmetler daha küçük hizmetlere bölünür.

Uygulama kodu GitHubkullanılabilir. bu depo, hem Cloud Services uygulamasını hem de Service Fabric sürümünü içerir.

Neden Service Fabric?

Service Fabric, dağıtılmış bir sistemde gereken özelliklerin çoğu Service Fabric yerleşik olduğundan, şunlar da dahil olmak üzere, bu projeye uygun.

  • Küme yönetimi. Service Fabric düğüm yük devretmeyi, sistem durumunu izlemeyi ve diğer küme yönetim işlevlerini otomatik olarak işler.
  • Yatay ölçeklendirme. bir Service Fabric kümesine düğüm eklediğinizde, hizmetler yeni düğümlere dağıtıldığında, uygulama otomatik olarak ölçeklendirilir.
  • Hizmet bulma. Service Fabric adlandırılmış bir hizmet için uç noktayı çözümleyebilen bir bulma hizmeti sağlar.
  • Durum bilgisiz ve durum bilgisi olmayan hizmetler. Durum bilgisi olan hizmetler, bir önbelleğin veya kuyruğun yerini alıp bölümlenebilir güvenilir koleksiyonlarkullanır.
  • Uygulama yaşam döngüsü yönetimi. Hizmetler bağımsız olarak ve uygulama kesinti olmadan yükseltilebilir.
  • Bir makine kümesi üzerinde hizmet düzenleme .
  • Kaynak tüketimini iyileştirmek için daha yüksek yoğunluk . Tek bir düğüm birden çok hizmeti barındırabilirler.

Service Fabric, Azure SQL Veritabanı, Cosmos DB, Azure Event Hubs ve diğerleri gibi çeşitli Microsoft hizmetleri tarafından kullanılır ve dağıtılmış bulut uygulamaları oluşturmaya yönelik kanıtlanmış bir platform haline gelir.

Cloud Services Service Fabric karşılaştırma

aşağıdaki tabloda Cloud Services ve Service Fabric uygulamalar arasındaki bazı önemli farklılıklar özetlenmektedir. daha ayrıntılı bir tartışma için bkz. uygulamaları geçirmeden önce Cloud Services ve Service Fabric arasındaki farklar hakkında bilgi edinin.

Alan Cloud Services Service Fabric
Uygulama yapısı Roller Hizmetler
Yoğunluk VM başına bir rol örneği Tek bir düğümde birden çok hizmet
Minimum düğüm sayısı rol başına 2 üretim dağıtımları için küme başına 5
Durum yönetimi Durum bilgisi olmayan Durum bilgisiz veya durum bilgisi *
Barındırma Azure Bulut veya şirket içi
Web Barındırma IIS * * Kendi kendine barındırma
Dağıtım modeli Klasik dağıtım modeli Resource Manager
Paketleme Bulut hizmeti paket dosyaları (. cspkg) Uygulama ve hizmet paketleri
Uygulama güncelleştirmesi VIP takas veya çalışırken güncelleştirme Güncelleştirme
Otomatik ölçeklendirme Yerleşik hizmet Otomatik ölçeklendirme için sanal makine ölçek kümeleri
Hata Ayıklama Yerel öykünücü Yerel küme

* Durum bilgisi olan hizmetler, tüm okumaların kümedeki düğümlere yerel olması için durumu çoğaltmalar genelinde depolamak için güvenilir koleksiyonlar kullanır. Yazmaları, güvenilirlik açısından düğümler arasında çoğaltılır. Durum bilgisi olmayan hizmetler, bir veritabanı veya başka bir dış depolama alanı kullanılarak dış duruma sahip olabilir.

* * çalışan rolleri, owin kullanarak Web apı ASP.NET de kendi kendine barındırabilirsiniz.

Cloud Services anketler uygulaması

Aşağıdaki diyagramda Cloud Services üzerinde çalışan anketler uygulamasının mimarisi gösterilmektedir.

Cloud Services anketler uygulaması

Uygulama iki web rolünden ve bir çalışan rolünden oluşur.

  • Tailspin. web Web rolü, Tailspin müşterilerinin anketlerini oluşturmak ve yönetmek için kullandığı bir ASP.NET web sitesini barındırır. Müşteriler, uygulamaya kaydolmak ve aboneliklerini yönetmek için bu Web sitesini de kullanır. Son olarak, Tailspin yöneticileri bu uygulamayı kiracılar listesini görmek ve kiracı verilerini yönetmek için kullanabilir.

  • Tailspin. Web. ankete. Public Web rolü, insanların Tailspin müşterilerinin yayımladığını anketlerini götürebileceği bir ASP.NET web sitesi barındırır.

  • Tailspin. çalışanlar. anket çalışan rolü arka plan işleme yapar. Web rolleri bir kuyruğa iş öğeleri koyar ve çalışan rolü öğeleri işler. iki arka plan görevi tanımlanmıştır: anket yanıtlarını Azure SQL Veritabanı dışa aktarma ve anket yanıtlarının istatistiklerini hesaplama.

Cloud Services ek olarak, anketler uygulaması diğer Azure hizmetlerini de kullanır:

  • anketler, anketler cevapları ve kiracı bilgilerini depolamak için Azure Depolama .

  • redsıs için azure önbelleği , daha hızlı okuma erişimi için azure Depolama depolanan bazı verileri önbelleğe alır.

  • müşterilerin ve Tailspin yöneticilerinin kimliğini doğrulamak için Azure Active Directory (Azure AD).

  • analiz için anket yanıtlarını depolamak üzere Azure SQL Veritabanı .

Service Fabric taşınıyor

belirtildiği gibi, bu aşamanın hedefi gereken en düşük değişikliklerle Service Fabric. Bu uçta, özgün uygulamadaki her bir bulut hizmeti rolüne karşılık gelen durum bilgisi olmayan hizmetler oluşturduk:

Service Fabric anketler uygulaması

Özellikle, bu mimari özgün uygulamayla benzerdir. Ancak, diyagram bazı önemli farklılıkları gizler. Bu makalenin geri kalanında, bu farklılıkları keşfedeceğiz.

Bulut hizmeti rollerini hizmetlere dönüştürme

ilk geçiş için, Tailspin, Web ve çalışan rollerini Service Fabric durum bilgisi olmayan hizmetlere dönüştürmek için kılavuzdaaçıklanan adımları izler.

Web ön uç hizmetleri oluşturma

Service Fabric, bir hizmet, Service Fabric çalışma zamanı tarafından oluşturulan bir işlem içinde çalışır. Web ön ucu için, hizmetin IIS içinde çalışmadığı anlamına gelir. Bunun yerine, hizmetin bir Web sunucusu barındırması gerekir. Bu yaklaşım, işlem içinde çalışan kod Web sunucusu ana bilgisayarı görevi gören için kendi kendine barındırmaolarak adlandırılır.

özgün anketler uygulaması ASP.NET MVC kullanır. ASP.NET MVC Service Fabric ' de kendiliğinden barındırılamadığından, Tailspin aşağıdaki geçiş seçeneklerini kabul ediyor:

  • ASP.NET Core web rollerinin, şirket içinde barındırılabilecek olan bağlantı noktası.
  • web sitesini, ASP.NET web apı 'si kullanılarak uygulanan bir web apı 'sini çağıran tek sayfalı uygulamaya (SPA) dönüştürün. Bu, Web ön ucunun tamamen bir şekilde yeniden tasarlanması gerekir.
  • mevcut ASP.NET MVC kodunu tutun ve ııs 'yi bir Windows sunucu kapsayıcısında Service Fabric için dağıtın. Bu yaklaşım, çok az kod değişikliği gerektirir.

ilk seçenek, ASP.NET Core taşıma, ASP.NET Core ' deki en son özelliklerden faydalanmak için izin verildi. dönüştürme işlemini yapmak için, Tailspin ASP.NET mvc 'den ASP.NET Core mvc 'ye geçişbölümünde açıklanan adımları takip eder.

Not

Kestrel ile ASP.NET Core kullanırken, güvenlik nedenleriyle Internet 'ten gelen trafiği işlemek için bir ters proxy 'yi Kestrel önüne yerleştirmeniz gerekir. Daha fazla bilgi için bkz. Kestrel Web Server Implementation For ASP.NET Core. Uygulamayı dağıtma bölümünde önerilen bir Azure dağıtımı açıklanmaktadır.

HTTP dinleyicileri

Cloud Services, bir Web veya çalışan rolü, hizmet tanımı dosyasındaBILDIREREK bir HTTP uç noktası sunar. Web rolü en az bir uç noktaya sahip olmalıdır.

<!-- Cloud service endpoint -->
<Endpoints>
    <InputEndpoint name="HttpIn" protocol="http" port="80" />
</Endpoints>

benzer şekilde, Service Fabric uç noktalar bir hizmet bildiriminde belirtilir:

<!-- Service Fabric endpoint -->
<Endpoints>
    <Endpoint Protocol="http" Name="ServiceEndpoint" Type="Input" Port="8002" />
</Endpoints>

bulut hizmeti rolünün aksine, Service Fabric hizmetleri aynı düğüm içinde eklenebilir. Bu nedenle, her hizmetin ayrı bir bağlantı noktasını dinlemesi gerekir. Bu makalenin ilerleyen kısımlarında, 80 numaralı bağlantı noktası veya bağlantı noktası 443 ' deki istemci isteklerinin hizmet için doğru bağlantı noktasına yönlendirildiğini tartışacağız.

Her uç nokta için bir hizmetin açık olarak dinleyicileri oluşturması gerekir. bunun nedeni Service Fabric iletişim yığınları hakkında belirsiz bir tür. Daha fazla bilgi için bkz. ASP.NET Core kullanarak uygulamanız için Web hizmeti ön ucu oluşturma.

Paketleme ve yapılandırma

Bulut hizmeti aşağıdaki yapılandırma ve paket dosyalarını içerir:

Dosya Description
Hizmet tanımı (. csdef) bulut hizmetini yapılandırmak için Azure tarafından kullanılan Ayarlar. Rolleri, uç noktaları, başlangıç görevlerini ve yapılandırma ayarlarının adlarını tanımlar.
Hizmet yapılandırması (. cscfg) Rol örneklerinin sayısı, uç nokta bağlantı noktası numaraları ve yapılandırma ayarlarının değerleri de dahil olmak üzere dağıtım başına ayarlar.
Hizmet paketi (. cspkg) Uygulama kodu ve yapılandırmalarının yanı sıra hizmet tanım dosyasını içerir.

Tüm uygulama için bir. csdef dosyası vardır. Yerel, test veya üretim gibi farklı ortamlarda birden çok. cscfg dosyasına sahip olabilirsiniz. Hizmet çalışırken. cscfg değil. cscfg öğesini güncelleştirebilir. Daha fazla bilgi için bkz. bulut hizmeti modeli nedir ve nasıl paketlarım?

Service Fabric, hizmet tanımı ve hizmet ayarlarıarasında benzer bir bölüme sahiptir, ancak yapı daha ayrıntılı bir şekilde yapılır. Service Fabric yapılandırma modelini anlamak için, bir Service Fabric uygulamasının nasıl paketlenmeli olduğunu anlamanıza yardımcı olur. Yapı şöyledir:

Application package
  - Service packages
    - Code package
    - Configuration package
    - Data package (optional)

Uygulama paketi, dağıttığınız şeydir. Bir veya daha fazla hizmet paketi içerir. Bir hizmet paketi kod, yapılandırma ve veri paketleri içerir. Kod paketi, hizmetlerin ikili dosyalarını içerir ve yapılandırma paketi yapılandırma ayarlarını içerir. Bu model, tüm uygulamayı yeniden dağıtmaya gerek kalmadan hizmetleri tek tek yükseltmenize olanak tanır. Ayrıca, kodu yeniden dağıtmaya veya hizmeti yeniden başlatmanıza gerek kalmadan yalnızca yapılandırma ayarlarını güncelleştirmenizi sağlar.

bir Service Fabric uygulaması aşağıdaki yapılandırma dosyalarını içerir:

Dosya Konum Description
ApplicationManifest.xml Uygulama paketi Uygulamayı oluşturan hizmetleri tanımlar.
ServiceManifest.xml Hizmet paketi Bir veya daha fazla hizmeti açıklar.
Settings.xml Yapılandırma paketi Hizmet paketinde tanımlanan hizmetler için yapılandırma ayarlarını içerir.

Daha fazla bilgi için bkz. Service Fabric uygulama modelleme.

Birden çok ortamda farklı yapılandırma ayarlarını desteklemek için, birden çok ortam için uygulama parametrelerini yönetmebölümünde açıklanan aşağıdaki yaklaşımı kullanın:

  1. Hizmetin Setting.xml dosyasında ayarı tanımlayın.
  2. Uygulama bildiriminde, ayar için bir geçersiz kılma tanımlayın.
  3. Ortama özgü ayarları uygulama parametre dosyalarına koyun.

Uygulamayı dağıtma

Azure Cloud Services, yönetilen bir hizmettir ve Service Fabric bir çalışma zamanı. Azure ve şirket içi dahil olmak üzere birçok ortamda Service Fabric kümeleri oluşturabilirsiniz. Aşağıdaki diyagramda Azure için önerilen bir dağıtım gösterilmektedir:

Service Fabric dağıtımı

Service Fabric kümesi bir sanal makine ölçek kümesinedağıtılır. Ölçek Kümeleri, özdeş VM 'lerin bir kümesini dağıtmak ve yönetmek için kullanılabilen bir Azure Işlem kaynağıdır.

Belirtildiği gibi, güvenlik nedenleriyle bir ters proxy 'nin arkasında Kestrel Web sunucusunu yerleştirmeniz önerilir. Bu diyagramda, çeşitli katman 7 yük dengeleme özellikleri sunan bir Azure hizmeti olan azure Application Gatewaygösterilmektedir. İstemci bağlantısını sonlandıran ve istekleri arka uç noktalarına ileten ters proxy hizmeti olarak çalışır. NGINX gibi farklı bir ters proxy çözümü kullanabilirsiniz.

Katman 7 yönlendirme

Özgün anketler uygulamasında, bağlantı noktası 80 ' de bir Web rolü araştırılan ve diğer web rolü, bağlantı noktası 443 ' de araştırılan.

Ortak site Anket yönetimi sitesi
http://tailspin.cloudapp.net https://tailspin.cloudapp.net

Farklı bir seçenek, katman 7 yönlendirmesi kullanmaktır. Bu yaklaşımda, farklı URL yolları arka uçtaki farklı bağlantı noktası numaralarına yönlendirilir. Örneğin, genel site ile başlayan URL yollarını kullanabilir /public/ .

Katman 7 yönlendirme seçenekleri şunlardır:

  • Application Gateway kullanın.
  • NGINX gibi bir ağ sanal gereci (NVA) kullanın.
  • Özel bir ağ geçidini durum bilgisiz hizmeti olarak yazın.

Ortak HTTP uç noktalarına sahip iki veya daha fazla hizmet varsa, ancak tek bir etki alanı adına sahip bir site olarak görünmesini istiyorsanız bu yaklaşımı göz önünde bulundurun.

önermediğimiz bir yaklaşım, dış istemcilerin Service Fabric ters proxyaracılığıyla istek göndermesini sağlar. Bu mümkün olsa da, ters proxy, hizmetten hizmete iletişim için hazırlanmıştır. Dış istemcilere açmak, bir HTTP uç noktası olan kümede çalışan Tüm hizmetleri kullanıma sunar.

Düğüm türleri ve yerleştirme kısıtlamaları

Yukarıda gösterilen dağıtımda, tüm hizmetler tüm düğümlerde çalışır. Ancak, Hizmetleri ayrıca belirli hizmetlerin yalnızca küme içindeki belirli düğümlerde çalışması için de gruplandırabilirsiniz. Bu yaklaşımı kullanma nedenleri şunlardır:

  • Bazı hizmetleri farklı VM türlerinde çalıştırın. Örneğin, bazı hizmetler işlem açısından yoğun olabilir veya GPU 'Lar gerektirebilir. Service Fabric kümenizdeki VM türleri karışımına sahip olabilirsiniz.
  • Güvenlik nedenleriyle ön uç hizmetlerini arka uç hizmetlerinden ayırın. Tüm ön uç hizmetleri tek bir düğüm kümesi üzerinde çalışır ve arka uç hizmetleri aynı kümedeki farklı düğümlerde çalışır.
  • Farklı ölçek gereksinimleri. Bazı hizmetlerin diğer hizmetlerden daha fazla düğüm üzerinde çalışması gerekebilir. Örneğin, ön uç düğümleri ve arka uç düğümleri tanımlarsanız, her küme bağımsız olarak ölçeklendirilebilir.

Aşağıdaki diyagramda ön uç ve arka uç hizmetlerini ayıran bir küme gösterilmektedir:

Düğüm yerleşimi

Bu yaklaşımı uygulamak için:

  1. Kümeyi oluşturduğunuzda, iki veya daha fazla düğüm türü tanımlayın.
  2. Hizmeti bir düğüm türüne atamak için her hizmet için yerleştirme kısıtlamalarını kullanın.

Azure 'a dağıtırken, her düğüm türü ayrı bir sanal makine ölçek kümesine dağıtılır. Service Fabric kümesi tüm düğüm türlerini kapsar. daha fazla bilgi için Service Fabric düğüm türleri ve sanal makine ölçek kümeleri arasındaki ilişkiyebakın.

Bir kümede birden çok düğüm türü varsa, bir düğüm türü birincil düğüm türü olarak atanır. küme yönetim hizmeti gibi Service Fabric çalışma zamanı hizmetleri, birincil düğüm türünde çalışır. Bir üretim ortamındaki birincil düğüm türü için en az 5 düğüm sağlayın. Diğer düğüm türü en az 2 düğüme sahip olmalıdır.

Kümeyi yapılandırma ve yönetme

Yetkisiz kullanıcıların kümenize bağlanmasını engellemek için kümelerin güvenli hale getirilmesi gerekir. Azure AD 'nin, düğümden düğüme güvenlik için istemciler ve X. 509.440 sertifikaları kimliklerini doğrulamak üzere kullanılması önerilir. Daha fazla bilgi için bkz. Service Fabric kümesi güvenlik senaryoları.

Genel bir HTTPS uç noktası yapılandırmak için bkz. hizmet bildiriminde kaynakları belirtme.

Kümeye VM 'Ler ekleyerek uygulamayı ölçeklendirebilirsiniz. Sanal Makine Ölçek Kümeleri, performans sayaçlarına göre otomatik ölçeklendirme kurallarını kullanarak otomatik ölçeklendirmeyi destekler. daha fazla bilgi için bkz. otomatik ölçeklendirme kuralları kullanarak Service Fabric kümesini ölçekleme veya genişletme.

Küme çalışırken, merkezi konumdaki tüm düğümlerden Günlükler toplayın. Daha fazla bilgi için bkz. Azure Tanılama kullanarak günlükleri toplama.

Uygulamayı yeniden düzenleme

uygulama Service Fabric alındıktan sonra bir sonraki adım, daha ayrıntılı bir mimariye yeniden düzenleme yapılır. Tailspin 'in yeniden düzenleme için mosyon, anketler uygulamasını geliştirmeyi, derlemeyi ve dağıtmayı kolaylaştırır. Var olan Web ve çalışan rollerini daha ayrıntılı bir mimariye kaldırarak, Tailspin bu roller arasındaki sıkı şekilde bağlanmış iletişimi ve veri bağımlılıklarını kaldırmak istemektedir.

Tailspin, anketler uygulamasını daha ayrıntılı bir mimariye taşırken diğer avantajları görür:

  • Her hizmet, küçük bir ekip tarafından yönetilmek için yeterince küçük olan bağımsız projelere paketlenebilir.
  • Her hizmet bağımsız olarak sürümlenebilir ve dağıtılabilir.
  • Her bir hizmet, bu hizmet için en iyi teknoloji kullanılarak uygulanabilir. Örneğin, bir Service Fabric kümesi, .NET Framework, Java veya C veya C++ gibi diğer dillerin farklı sürümleri kullanılarak oluşturulan hizmetleri içerebilir.
  • Her hizmet, yükteki artış ve düşüşe yanıt vermek için bağımsız olarak ölçeklendirilebilir.

Uygulamanın yeniden düzenlenmiş sürümü için kaynak kodu GitHubkullanılabilir.

Tasarım konusunda dikkat edilmesi gerekenler

Aşağıdaki diyagramda, anketler uygulamasının yeniden düzenlenmiş daha ayrıntılı bir mimariye yönelik mimarisi gösterilmektedir:

Yeniden düzenlenmiş anketler uygulaması

Tailspin. Web , Tailspin müşterilerinin anketlerini oluşturmak ve anket sonuçlarını görüntülemek için ziyaret ettiği ASP.NET MVC uygulamasını kendi kendine barındıran, durum bilgisiz bir hizmettir. bu hizmet, kodunun çoğunu, bağlantı noktası Service Fabric uygulamasındaki Tailspin. Web hizmetiyle paylaşır. daha önce belirtildiği gibi, bu hizmet, bir weblistener 'ı uygulamak için ASP.NET çekirdeğini ve Kestrel as web ön ucu olarak kullanılan anahtarları kullanır.

Tailspin. Web. ankete. Public , ayrıca bir ASP.NET MVC sitesini kendi kendine barındıran bir durum bilgisi olmayan hizmettir. Kullanıcılar bir listeden anketler seçmek ve ardından onları dolduracak şekilde bu siteyi ziyaret edebilir. bu hizmet, kendi kodunun çoğunu, bağlantı noktası Service Fabric uygulamasındaki Tailspin. Web. ankete. Public hizmeti ile paylaşır. bu hizmet ayrıca ASP.NET Core kullanır ve ayrıca bir weblistener uygulamak için Kestrel as web ön ucu olarak anahtar kullanır.

Tailspin. gözetimi hizmeti , anket yanıtlarını Azure Blob Depolama depolayan bir durum bilgisi hizmetidir. Ayrıca, yanıtları anket Analizi verileri ile birleştirir. Anket yanıtlarını toplu olarak işlemek için bir Reliableconcurrentqueue kullandığından hizmet, durum bilgisi olan bir hizmet olarak uygulanır. bu işlevsellik, ilk olarak, Tailspin. AnswerAnalysisService hizmetinde, bağlantı noktası Service Fabric uygulamasında uygulanmıştır.

Tailspin. gözetimi hizmeti , anketler ve anket sorularını depolayan ve alan, durum bilgisi olmayan bir hizmettir. Hizmet Azure Blob depolamayı kullanır. bu işlev, ayrıca, Tailspin. web ve Tailspin. web. anket. Public services 'in veri erişimi bileşenlerinde, ayrıca, bağlantı noktası oluşturulmuş Service Fabric uygulamasında de uygulanmıştır. Bağımsız olarak ölçeklendirilmesine izin vermek için bu hizmete özgün işlevselliği Tailspin yeniden düzenlenmiş.

Tailspin. gözetimi Yanswerservice , anket yanıtlarını ve anket analizini alan, durum bilgisi olmayan bir hizmettir. Hizmet ayrıca Azure Blob depolamayı kullanır. bu işlev, ayrıca, Tailspin. Web hizmetinin veri erişimi bileşenlerinde, ayrıca, bu işlevin de bir listesini oluşturan Service Fabric uygulamasında uygulanmıştır. Daha az yük beklediği ve kaynakları korumak için daha az örnek kullanmak istediği için özgün işlevselliği bu hizmete Tailspin yeniden düzenlenmiş.

Tailspin. SurveyAnalysisService , bir redsıs önbelleğinde hızlı bir şekilde alınması için ankete yanıt özet verileri sürekli olarak devam eden bir durum bilgisi hizmetidir. Bu hizmet, bir anket yanıtlanışında ve yeni anket yanıt verileri Özet verilerde birleştirildiğinde, Tailspin. gözetimi-responseservice tarafından çağrılır. bu hizmet, Tailspin. AnswerAnalysisService hizmetinde başlangıçta uygulanan işlevselliği, bağlantı noktası Service Fabric uygulamasından içerir.

Durum bilgisi olmayan hizmetler

Azure Service Fabric aşağıdaki programlama modellerini destekler:

  • konuk yürütülebilir modeli, çalıştırılabilir dosyanın bir hizmet olarak paketlenmesi ve bir Service Fabric kümesine dağıtılmasını sağlar. Service Fabric, konuk yürütülebilir dosyasının yürütülmesini düzenler ve yönetir.
  • Kapsayıcı modeli kapsayıcı görüntülerinde hizmetlerin dağıtımına izin verir. Service Fabric, Linux çekirdek kapsayıcılarının yanı sıra Windows sunucu kapsayıcıları üzerinde kapsayıcıların oluşturulmasını ve yönetimini destekler.
  • güvenilir hizmetler programlama modeli, tüm Service Fabric platform özellikleriyle tümleştirilen durum bilgisiz ve durum bilgisi olan hizmetlerin oluşturulmasına olanak sağlar. durum bilgisi olan hizmetler, çoğaltılan durumun Service Fabric kümesinde depolanmasını sağlar. Durum bilgisi olmayan hizmetler.
  • Güvenilir aktörler programlama modeli, sanal aktör modelini uygulayan hizmetlerin oluşturulmasına izin verir.

Anketler uygulamasındaki tüm hizmetler, Tailspin. Araştıryıresponseservice hizmeti dışında durum bilgisiz güvenilir hizmetlerdir. Bu hizmet, alındığı zaman anket yanıtlarını işlemek için bir Reliableconcurrentqueue uygular. reliableconcurrentqueue içindeki yanıtlar Azure Blob Depolama kaydedilir ve analiz için Tailspin. SurveyAnalysisService 'e geçirilir. Tailspin, yanıtları Azure Service Bus gibi bir sıra tarafından sunulan katı ilk çıkar (FıFO) sıralaması gerektirmediğinden bir ReliableConcurrentQueue seçer. Bir ReliableConcurrentQueue, sıra ve sıradan çıkarma işlemleri için yüksek aktarım hızı ve düşük gecikme süresi sunacak şekilde tasarlanmıştır.

Bir ReliableConcurrentQueue öğesinden sıraya alınmış öğeleri kalıcı hale getirme işlemleri ideal olmalıdır ıdempotent. Kuyruktan bir öğenin işlenmesi sırasında bir özel durum oluşturulursa, aynı öğe birden çok kez işlenebilir. Anketler uygulamasında, anket yanıtlarını Tailspin. SurveyAnalysisService ile birleştirme işlemi ıdempotent değildir çünkü Tailspin, anket Analizi verilerinin yalnızca çözümleme verilerinin geçerli bir anlık görüntüsü olduğuna ve tutarlı olması gerektiğine karar vermiştir. Azure Blob Depolama kaydedilen anket yanıtları sonunda tutarlıdır, bu nedenle anket son analizi bu verilerden her zaman doğru şekilde yeniden hesaplanabilir.

İletişim çerçevesi

Anketler uygulamasındaki her bir hizmet, bir Restsize Web API 'SI kullanarak iletişim kurar. Yeniden elde eden API 'Ler aşağıdaki avantajları sunar:

  • kullanım kolaylığı: her hizmet, Web apı 'lerinin oluşturulmasını yerel olarak destekleyen ASP.NET Core MVC kullanılarak oluşturulur.
  • Güvenlik: her bir hizmet SSL gerektirirken, her bir hizmetin bunu yapması için Tailspin gerekir.
  • Sürüm oluşturma: istemciler, bir Web API 'sinin belirli bir sürümüne göre yazılabilir ve test edilebilir.

Anket uygulamasındaki hizmetler Service Fabric tarafından uygulanan ters proxy 'yi kullanır. ters proxy, Service Fabric kümesindeki her düğüm üzerinde çalışan ve uç nokta çözümlemesi, otomatik yeniden deneme ve diğer bağlantı hatalarının türlerini işleyen bir hizmettir. Ters proxy 'yi kullanmak için, belirli bir hizmete yapılan her bir başarılı API çağrısı, önceden tanımlanmış bir ters proxy bağlantı noktası kullanılarak yapılır. Örneğin, ters proxy bağlantı noktası 19081olarak ayarlandıysa, Tailspin. gözetimi Yanswerservice çağrısı aşağıdaki şekilde yapılabilir:

static SurveyAnswerService()
{
    httpClient = new HttpClient
    {
        BaseAddress = new Uri("http://localhost:19081/Tailspin/SurveyAnswerService/")
    };
}

ters proxy 'yi etkinleştirmek için Service Fabric kümesini oluştururken bir ters proxy bağlantı noktası belirtin. Daha fazla bilgi için bkz. Azure Service Fabric 'de ters proxy .

Performansla ilgili önemli noktalar

Tailspin, Visual Studio şablonları kullanarak Tailspin. web ve Tailspin. web. anketler. Public için ASP.NET Core hizmetleri oluşturdu. Varsayılan olarak, bu şablonlar konsola yönelik günlüğe kaydetme içerir. Konsolda günlüğe kaydetme işlemi geliştirme ve hata ayıklama sırasında yapılabilir, ancak uygulama üretime dağıtıldığında konsola yapılan tüm günlüğün kaldırılması gerekir.

Not

üretimde çalışan Service Fabric uygulamalar için izleme ve tanılamayı ayarlama hakkında daha fazla bilgi için bkz. Azure Service Fabric için izleme ve tanılama .

Örneğin, Web ön uç hizmetlerinin her biri için Başlangıç. cs dosyasında aşağıdaki satırlar açıklama oluşturulmalıdır:

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    //loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    //loggerFactory.AddDebug();

    app.UseMvc();
}

Not

bu satırlar, yayımlarken Visual Studio serbest bırakıldığında koşullu olarak dışlanamaz.

son olarak, Tailspin Tailspin uygulamasını üretime dağıttığında, Visual Studio serbest bırakma moduna geçer.

Dağıtma konuları

Yeniden düzenlenmiş anketler uygulaması beş durum bilgisi olmayan hizmetten oluşur ve durum bilgisi olan hizmetlerden oluşur; bu nedenle küme planlaması doğru VM boyutunu ve düğüm sayısını belirlemekten sınırlandırılmıştır. Kümeyi tanımlayan applicationmanifest.xml dosyasında, Tailspin statelessservice etiketinin InstanceCount özniteliğini her bir hizmet için-1 olarak ayarlar. -1 değeri, kümedeki her bir düğümde hizmetin bir örneğini oluşturmak için Service Fabric yönlendirir.

Not

Durum bilgisi olan hizmetler, verileri için doğru sayıda bölüm ve çoğaltma planlamaya ek bir adım gerektirir.

Tailspin Azure portal kullanarak kümeyi dağıtır. Service Fabric kümesi kaynak türü, sanal makine ölçek kümeleri ve yük dengeleyici dahil olmak üzere tüm gerekli altyapıyı dağıtır. önerilen VM boyutları, Service Fabric kümesinin sağlama işlemi sırasında Azure portal görüntülenir. VM 'Ler bir sanal makine ölçek kümesinde dağıtıldığından, kullanıcı yükü arttıkça bunların her ikisi de ölçeklendirilebilir ve dışarı olabilir.

Sonraki adımlar

Anketler uygulama kodu GitHubkullanılabilir.

azure Service Fabrickullanmaya başladıysanız, önce geliştirme ortamınızı ayarlayın, ardından en son azure sdk 'sını ve azure Service Fabric SDK 'sınıindirin. Bu SDK, tam F5 hata ayıklaması ile anketler uygulamasını yerel olarak dağıtabilmeniz ve test edebilmeniz için OneBox kümesi Yöneticisi 'ni içerir.