Uygulamaları geçirmeden önce Cloud Services ile Service Fabric arasındaki farklar hakkında bilgi edinin.
Microsoft Azure Service Fabric, yüksek oranda ölçeklenebilir, son derece güvenilir dağıtılmış uygulamalar için yeni nesil bulut uygulaması platformudur. Dağıtılmış bulut uygulamalarını paketlemeye, dağıtmaya, yükseltmeye ve yönetmeye yönelik birçok yeni özellik sunar.
Bu, uygulamaları Cloud Services'ten Service Fabric'e geçirmeye yönelik giriş niteliğindeki bir kılavuzdur. Öncelikle Cloud Services ile Service Fabric arasındaki mimari ve tasarım farklılıklarına odaklanır.
Uygulamalar ve altyapı
Cloud Services ile Service Fabric arasındaki temel bir fark, VM'ler, iş yükleri ve uygulamalar arasındaki ilişkidir. Buradaki bir iş yükü, belirli bir görevi gerçekleştirmek veya hizmet sağlamak için yazdığınız kod olarak tanımlanır.
- Cloud Services, uygulamaları VM olarak dağıtmayı kapsar. Yazdığınız kod, Web veya Çalışan Rolü gibi bir VM örneğine sıkı bir şekilde bağlanır. Cloud Services'te bir iş yükü dağıtmak, iş yükünü çalıştıran bir veya daha fazla VM örneğini dağıtmaktır. Uygulamalar ve VM'ler arasında ayrım yoktur ve bu nedenle bir uygulamanın resmi tanımı yoktur. Bir uygulama, bir Cloud Services dağıtımında veya tüm Cloud Services dağıtımında bir dizi Web veya Çalışan Rolü örneği olarak düşünülebilir. Bu örnekte, bir uygulama rol örnekleri kümesi olarak gösterilir.
- Service Fabric, Windows veya Linux üzerinde Service Fabric çalıştıran mevcut VM'lere veya makinelere uygulama dağıtmayla ilgili. Yazdığınız hizmetler, Service Fabric uygulama platformu tarafından soyutlanan temel altyapıdan tamamen ayrılmıştır, böylece bir uygulama birden çok ortam için dağıtılabilir. Service Fabric'teki bir iş yükü "hizmet" olarak adlandırılır ve bir veya daha fazla hizmet Service Fabric uygulama platformunda çalışan resmi olarak tanımlanmış bir uygulamada gruplandırılır. Tek bir Service Fabric kümesine birden çok uygulama dağıtılabilir.
Service Fabric, Windows veya Linux üzerinde çalışan bir uygulama platformu katmanıdır, Cloud Services ise azure tarafından yönetilen VM'leri iş yüklerine bağlı olarak dağıtmaya yönelik bir sistemdir. Service Fabric uygulama modelinin çeşitli avantajları vardır:
- Hızlı dağıtım süreleri. VM örnekleri oluşturmak zaman alabilir. Service Fabric'te VM'ler, Service Fabric uygulama platformunu barındıran bir küme oluşturmak için yalnızca bir kez dağıtılır. Bu noktadan sonra uygulama paketleri kümeye çok hızlı bir şekilde dağıtılabilir.
- Yüksek yoğunluklu barındırma. Cloud Services'da Çalışan Rolü VM'sinde tek bir iş yükü bulunur. Service Fabric'te uygulamalar, bunları çalıştıran VM'lerden ayrıdır; başka bir deyişle az sayıda VM'ye çok sayıda uygulama dağıtabilirsiniz ve bu da daha büyük dağıtımlar için genel maliyeti düşürebilir.
- Service Fabric platformu, Ister Azure ister şirket içi olsun, Windows Server veya Linux makineleri olan her yerde çalışabilir. Platform, uygulamanızın farklı ortamlarda çalışabilmesi için temel altyapı üzerinde bir soyutlama katmanı sağlar.
- Dağıtılmış uygulama yönetimi. Service Fabric yalnızca dağıtılmış uygulamaları barındırmayan, aynı zamanda yaşam döngüsünü barındırma VM'lerinden veya makine yaşam döngüsünden bağımsız olarak yönetmeye yardımcı olan bir platformdur.
Uygulama mimarisi
Bir Cloud Services uygulamasının mimarisi genellikle Service Bus, Azure Tablo ve Blob Depolama, SQL, Redis gibi çok sayıda dış hizmet bağımlılığını ve bir uygulamanın durumunu ve verilerini yönetmek ve Bir Cloud Services dağıtımında Web ile Çalışan Rolleri arasındaki iletişimi yönetmek için diğer dış hizmet bağımlılıklarını içerir. Eksiksiz bir Cloud Services uygulaması örneği aşağıdaki gibi görünebilir:
Service Fabric uygulamaları, eksiksiz bir uygulamada aynı dış hizmetleri kullanmayı da seçebilir. Bu örnek Cloud Services mimarisini kullanarak, Cloud Services'ten Service Fabric'e en basit geçiş yolu, yalnızca Cloud Services dağıtımını bir Service Fabric uygulamasıyla değiştirmek ve genel mimariyi aynı tutmaktır. Web ve Çalışan Rolleri, en az kod değişikliğiyle durum bilgisi olmayan Service Fabric hizmetlerine taşınabilir.
Bu aşamada sistem daha önce olduğu gibi çalışmaya devam etmelidir. Service Fabric'in durum bilgisi olan özelliklerinden yararlanan dış durum depoları, uygun olduğunda durum bilgisi olan hizmetler olarak içselleştirilebilir. Bu, web ve çalışan rollerinin Service Fabric durum bilgisi olmayan hizmetlere basit bir şekilde geçirilmesinden daha önemlidir. Bu, uygulamanıza daha önce dış hizmetler gibi eşdeğer işlevler sağlayan özel hizmetler yazmayı gerektirir. Bunu yapmanın avantajları şunlardır:
- Dış bağımlılıkları kaldırma
- Dağıtım, yönetim ve yükseltme modellerini birleştirme.
Bu hizmetleri içselleştirmeye yönelik örnek bir mimari aşağıdaki gibi görünebilir:
İletişim ve iş akışı
Çoğu Bulut Hizmeti uygulaması birden fazla katmandan oluşur. Benzer şekilde, bir Service Fabric uygulaması birden fazla hizmetten (genellikle birçok hizmet) oluşur. İki yaygın iletişim modeli, doğrudan iletişim ve harici dayanıklı depolama alanı aracılığıyla ılır.
Doğrudan iletişim
Doğrudan iletişim sayesinde katmanlar, her katman tarafından kullanıma sunulan uç nokta üzerinden doğrudan iletişim kurabilir. Cloud Services gibi durum bilgisi olmayan ortamlarda bu, yükü dengelemek için rastgele veya hepsini bir kez deneme olarak vm rolünün bir örneğini seçmek ve uç noktasına doğrudan bağlanmak anlamına gelir.
Doğrudan iletişim, Service Fabric'teki yaygın bir iletişim modelidir. Service Fabric ile Cloud Services arasındaki temel fark, Cloud Services'te bir VM'ye, Service Fabric'te ise bir hizmete bağlanmanızdır. Bu, birkaç nedenden dolayı önemli bir ayrımdır:
- Service Fabric'teki hizmetler, bunları barındıran VM'lere bağlı değildir; hizmetler kümede hareket edebilir ve aslında kaynak dengeleme, yük devretme, uygulama ve altyapı yükseltmeleri ve yerleştirme veya yükleme kısıtlamaları gibi çeşitli nedenlerle hareket edilmesi beklenir. Bu, hizmet örneğinin adresinin istediğiniz zaman değişebileceği anlamına gelir.
- Service Fabric'teki bir VM, her birinin benzersiz uç noktaları olan birden çok hizmeti barındırabilir.
Service Fabric, hizmetlerin uç nokta adreslerini çözümlemek için kullanılabilen Adlandırma Hizmeti adlı bir hizmet bulma mekanizması sağlar.
Kuyruklar
Cloud Services gibi durum bilgisi olmayan ortamlardaki katmanlar arasındaki yaygın bir iletişim mekanizması, iş görevlerini bir katmandan diğerine dayanıklı bir şekilde depolamak için bir dış depolama kuyruğu kullanmaktır. Yaygın bir senaryo, işleri Çalışan Rolü örneklerinin işleri sıralayıp işleyebildiği bir Azure Kuyruğuna veya Service Bus'a gönderen bir web katmanıdır.
Service Fabric'te aynı iletişim modeli kullanılabilir. Bu, mevcut bir Cloud Services uygulamasını Service Fabric'e geçirirken yararlı olabilir.
Eşlik
Cloud Services, denetim ve kullanım kolaylığı açısından Service Fabric'e benzer, ancak artık eski bir hizmettir ve yeni geliştirme için Service Fabric önerilir; aşağıdakiler bir API karşılaştırmasıdır:
Bulut Hizmeti API'si | Service Fabric API'si | Notlar |
---|---|---|
RoleInstance.GetID | FabricRuntime.GetNodeContext.NodeId veya . NodeName | Id, NodeName'in bir özelliğidir |
RoleInstance.GetFaultDomain | FabricClient.QueryManager.GetNodeList | NodeName'de filtre uygulama ve FD Özelliğini kullanma |
RoleInstance.GetUpgradeDomain | FabricClient.QueryManager.GetNodeList | NodeName'e filtre uygulayın ve Upgrade özelliğini kullanın |
RoleInstance.GetInstanceEndpoints | FabricRuntime.GetActivationContext veya Naming (ResolveService) | CodePackageActivationContext hem FabricRuntime.GetActivationContext tarafından hem de serviceInitializationParameters.CodePackageActivationContext aracılığıyla çoğaltmalar içinde sağlanır. Başlatmak |
RoleEnvironment.GetRoles | FabricClient.QueryManager.GetNodeList | Türe göre aynı türde filtreleme yapmak istiyorsanız, Küme bildiriminden FabricClient.ClusterManager.GetClusterManifest aracılığıyla düğüm türlerinin listesini alabilir ve rol/düğüm türlerini oradan alabilirsiniz. |
RoleEnvironment.GetIsAvailable | Connect-WindowsFabricCluster veya belirli bir düğüme işaret eden bir FabricRuntime oluşturma | * |
RoleEnvironment.GetLocalResource | CodePackageActivationContext.Log/Temp/Work | * |
RoleEnvironment.GetCurrentRoleInstance | CodePackageActivationContext.Log/Temp/Work | * |
LocalResource.GetRootPath | CodePackageActivationContext.Log/Temp/Work | * |
Role.GetInstances | FabricClient.QueryManager.GetNodeList veya ResolveService | * |
RoleInstanceEndpoint.GetIPEndpoint | FabricRuntime.GetActivationContext veya Naming (ResolveService) | * |
Sonraki Adımlar
Cloud Services'ten Service Fabric'e en basit geçiş yolu, uygulamanızın genel mimarisini kabaca aynı tutarak yalnızca Cloud Services dağıtımını bir Service Fabric uygulamasıyla değiştirmektir. Aşağıdaki makalede, Web veya Çalışan Rolünü Durum Bilgisi Olmayan Service Fabric hizmetine dönüştürmeye yardımcı olacak bir kılavuz sağlanır.