Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Orleans dağıtılmış uygulamalar oluşturmayı basitleştirmek için tasarlanmış platformlar arası bir çerçevedir. Tek bir sunucudan binlerce bulut tabanlı uygulama için ölçeklendirme yapılıp yapılmadığı, Orleans dağıtılmış sistemlerin karmaşıklıklarını yönetmeye yardımcı olacak araçlar sağlar. Tanıdık C# kavramlarını çok sunuculu ortamlara genişleterek geliştiricilerin uygulamanın mantığına odaklanmasını sağlar.
İşte Orleans sundukları:
- Esnek bir şekilde ölçeklendirilecek şekilde tasarlanmıştır. Sunucu ekleyin veya kaldırın ve Orleans hataya dayanıklılık ve ölçeklenebilirliği korumak için buna göre ayarlanır.
- Yaygın bir dizi desen ve API ile dağıtılmış uygulama geliştirmeyi basitleştirerek, dağıtılmış sistemlere yeni başlayanlar için bile erişilebilir olmasını sağlar.
- Bulutta yereldir ve .NET'in desteklendiği platformlarda (Linux, Windows, macOS ve daha fazlası) çalışır.
- Kubernetes, Azure App Service ve Azure Container Apps gibi modern dağıtım seçeneklerini destekler.
Orleans genellikle dayanıklı, ölçeklenebilir buluta özel hizmetler oluşturmaya odaklanması nedeniyle "Dağıtılmış .NET" olarak adlandırılır. Şimdi aktör modelini inceleyelim.
Aktör modeli
Orleans aktör modelini temel alır. 1970'lerin başlarında ortaya çıkan aktör modeli artık Orleans'nin temel bileşenidir. Aktör modelinde her aktör , bir durum parçasını ve buna karşılık gelen davranışı kapsülleyen basit, eşzamanlı, sabit bir nesnedir. Aktörler yalnızca zaman uyumsuz iletiler kullanarak iletişim kurar. Orleans özellikle aktörlerin kalıcı olarak var olduğu Sanal Aktör soyutlaması icat edilmiştir.
Not
Aktörler, tamamen mantıksal varlıklar olarak, sanal olarak her zaman vardır. Bir aktör açıkça oluşturulamaz veya yok edilemez ve sanal varlığı, yürüten bir sunucunun başarısızlığından etkilenmez. Aktörler her zaman var olduğundan, her zaman adreslenebilirler.
Bu yeni yaklaşım, Bulut çağı için yeni nesil dağıtılmış uygulamalar oluşturmanıza yardımcı olur. Programlama modeli, Orleans özellikleri kısıtlamadan veya kısıtlamalar getirmeden yüksek oranda paralel dağıtılmış uygulamalarda bulunan karmaşıklığı denetler.
Daha fazla bilgi için bkz. Orleans: Microsoft Research aracılığıyla sanal aktörler. Sanal aktör, bir Orleans taneciği olarak temsil edilir.
Tahıl nedir?
Tahıl, birkaç Orleans ilkel öğeden biridir. Aktör modeli açısından tahıl, sanal bir aktördür. Herhangi bir Orleans uygulamasındaki temel yapı taşı, tanecik. Grain'ler, kullanıcı tanımlı kimlik, davranış ve duruma sahip varlıklardır. Bir tahılın aşağıdaki görsel gösterimini göz önünde bulundurun:
Grain kimlikleri, kullanıcı tarafından tanımlanan anahtarlardır ve taneleri her zaman çağrıya hazır tutar. Diğer tanecikler veya herhangi bir sayıda dış istemci, tanecikleri çağırabilir. Her bir tanecik, aşağıdaki arabirimlerden birini veya daha fazlasını uygulayan bir sınıfın örneğidir:
-
IGrainWithGuidKey:
Guidtuşları olan tanecikler için işaretleyici arabirimi. -
IGrainWithIntegerKey:
Int64tuşları olan tanecikler için işaretleyici arabirimi. -
IGrainWithStringKey:
stringtuşları olan tanecikler için işaretleyici arabirimi. - IGrainWithGuidCompoundKey: Bileşik anahtarlara sahip tanecikler için işaretleyici arabirimi.
- IGrainWithIntegerCompoundKey: Bileşik anahtarlara sahip tanecikler için işaretleyici arabirimi.
Tahıllar, herhangi bir depolama sisteminde depolanan geçici veya kalıcı durum verilerine sahip olabilir. Bu nedenle, taneler uygulama durumlarını örtük olarak bölümleyerek otomatik ölçeklenebilirliği etkinleştirir ve hatalardan kurtarmayı basitleştirir. Orleans, aktifken tahılın durumunu bellekte tutar ve bu da veri depolarında daha düşük gecikme ve daha az yük sağlar.
Çalışma Orleans zamanı, isteğe bağlı olarak otomatik olarak taneler oluşturur. Bir süredir kullanılmayan tanecikler, kaynakları boşaltmak için bellekten otomatik olarak kaldırılır. Bu kaldırma işlemi kararlı kimliklerinden dolayı mümkündür ve bellekte yüklü olup olmadıklarına bakılmaksızın taneciklerin çağrılmasına olanak sağlar. Bu, çağıranın herhangi bir noktada hangi sunucuda bir tane grain’in örneğinin oluşturulduğunu bilmesine gerek kalmadan, hatalardan saydam bir şekilde kurtulmayı da etkinleştirir. Tahıllar yönetilen Orleans bir yaşam döngüsüne sahiptir ve çalışma zamanı gerektiğinde taneleri etkinleştirmek/devre dışı bırakmak ve yerleştirmek/bulmakla sorumludur. Bu, her zaman tüm tanecikler bellekteymiş gibi kod yazabilmeyi sağlar.
Silolar nedir?
Silo, bir Orleans temel öğesinin başka bir örneğidir. Silo bir veya daha fazla tahıl barındırabilir. Çalışma Orleans zamanı, uygulamalar için programlama modelini uygular.
Genellikle, bir grup silo ölçeklenebilirlik ve hataya dayanıklılık için küme olarak çalışır. Küme olarak çalıştırıldığında silolar, çalışmayı dağıtmak ve hataları algılayıp kurtarmak için eşgüdümlü çalışır. Çalışma zamanı, kümede barındırılan grainlerin tek bir işlem içindeymiş gibi iletişim kurmalarını sağlar. Kümeler, silolar ve taneler arasındaki ilişkiyi görselleştirmeye yardımcı olmak için aşağıdaki diyagramı göz önünde bulundurun:
Yukarıdaki diyagramda kümeler, silolar ve taneler arasındaki ilişki gösterilmektedir. Herhangi bir sayıda küme olabilir, her kümenin bir veya daha fazla silosu vardır ve her siloda bir veya daha fazla parçacık bulunur.
Çekirdek programlama modeline ek olarak silolar zamanlayıcılar, anımsatıcılar (kalıcı süreölçerler), kalıcılık, işlemler, akışlar ve daha fazlası gibi çalışma zamanı hizmetleri sağlar. Daha fazla bilgi için bkz . Ile Orleansneler yapılabilir?.
Web uygulamaları ve diğer dış istemciler, ağ iletişimini otomatik olarak yöneten istemci kitaplığını kullanarak kümedeki tanecikleri çağırır. İstemciler, kolaylık sağlamak için silolarla aynı işlemde birlikte barındırılabilir.
Ile neler yapılabilir Orleans?
Orleans buluta özel uygulamalar oluşturmaya yönelik bir çerçevedir ve sonunda ölçeklendirmesi gerekebilecek .NET uygulamaları oluşturulurken dikkate alınmalıdır. Görünüşte sonsuz yollarla Orleans kullanılabilir, ancak bunlardan bazıları şunlardır: Oyun, Bankacılık, Sohbet uygulamaları, GPS izleme, Hisse senedi ticareti, Alışveriş sepetleri, Oylama uygulamaları ve daha fazlası. Microsoft, Azure, Xbox, Skype, Halo, PlayFab, Gears of War ve diğer birçok iç hizmette kullanır Orleans . Orleans çeşitli uygulamalar için kullanımı kolaylaştıran birçok özelliğe sahiptir.
Devamlılık
Orleans bir isteği işlemeden ve tutarlılığı korumadan önce durum kullanılabilirliğini sağlayan basit bir kalıcılık modeli sağlar. Taneciklerde birden çok adlandırılmış kalıcı veri nesnesi olabilir. Örneğin, bir kullanıcının profili için "profil" ve kullanıcının envanteri için başka bir "envanter" olarak adlandırılabilir. Bu durum herhangi bir depolama sisteminde depolanabilir.
Bir iş parçacığı çalışırken, Orleans okuma isteklerine depolamaya erişmeden hizmet verebilmek için durumu bellekte tutar. Tahıl durumunu güncellerken, IStorage.WriteStateAsync'ün çağrılması, destek deposunun dayanıklılık ve tutarlılık için güncellenmesini sağlar.
Daha fazla bilgi için bkz. Grain kalıcılığı.
Zamanlayıcılar ve anımsatıcılar
Anımsatıcılar, tahıllar için dayanıklı bir zamanlama mekanizmasıdır. Grain şu anda etkinleştirilmemiş olsa bile bir eylemin gelecekteki bir noktada tamamlandığından emin olmak için bunları kullanın. Zamanlayıcılar, anımsatıcıların dayanıklı olmayan karşılığıdır ve güvenilirlik gerektirmeyen yüksek frekanslı olaylar için kullanılabilir.
Daha fazla bilgi için bkz. Zamanlayıcılar ve anımsatıcılar.
Esnek tane yerleşimi
Orleans içinde bir tane etkinleştirildiğinde, hangi sunucuda (silo) etkinleştirileceğine çalışma zamanı karar verir. Bu işleme tahıl yerleştirme denir.
Yerleştirme işlemi Orleans'da tamamen yapılandırılabilir. Kullanıma hazır seçenekler arasında rastgele, yerel tercihli ve yük tabanlı yerleştirme ilkelerinden birini seçin veya özel mantık yapılandırın. Bu, tanelerin nerede oluşturulduğuna karar verirken tam esneklik sağlar. Örneğin, tanecikleri, çalışması için gereken kaynaklara veya iletişim kurdukları diğer taneciklere yakın bir sunucuya yerleştirin.
Daha fazla bilgi için bkz. Grain yerleştirme.
Taneli sürüm oluşturma ve heterojen kümeler
Üretim sistemlerinin güvenli bir şekilde yükseltilmesi, özellikle durum bilgisi olan sistemlerde değişikliklerin hesaplanması zor olabilir. Bunu hesaba katmak için, tahıl arayüzleri Orleans için sürümlendirilebilir.
Küme, hangi tanecik uygulamalarının hangi silolarda ve bunların sürümlerinde kullanılabilir olduğunu gösteren bir eşleme tutar. Çalışma zamanı, çağrıları grain'lere yönlendirirken yerleştirme kararları almak için bu sürüm bilgilerini yerleştirme stratejileriyle birlikte kullanır. Bu, sürümlenmiş bir dilimi güvenli bir şekilde güncelleştirmenin yanı sıra, farklı siloların farklı kullanılabilir taneli uygulama kümelerine sahip olduğu heterojen kümeleri de etkinleştirir.
Daha fazla bilgi için bkz. Grain Versioning.
Devletsiz işçiler
Durum bilgisi olmayan çalışanlar, aynı anda birden çok silo üzerinde etkinleştirilebilen, ilişkili durumu olmayan özel olarak işaretlenmiş tahıllardır. Bu, durum bilgisi olmayan işlevler için daha fazla paralellik sağlar.
Daha fazla bilgi için bkz. durum bilgisi olmayan çalışan.
Detaylı çağrı filtreleri
Tanecik çağrı filtresi, birçok tanecikte ortak olan bir mantıktır. Orleans hem gelen hem de giden aramalar için filtreleri destekler. Yaygın kullanımlar yetkilendirme, günlüğe kaydetme ve telemetri ile hata işlemedir.
İstek bağlamı
İstek bağlamını kullanarak bir dizi istekle meta verileri ve diğer bilgileri geçirin. Dağıtılmış izleme bilgilerini veya diğer tanımlı değerleri tutmak için istek bağlamını kullanın.
Dağıtılmış ACID işlemleri
Yukarıda açıklanan basit kalıcılık modelinin yanı sıra, tanecikler işlem durumuna sahip olabilir. Birden çok tanecik, durumlarının en sonunda nerede depolandığına bakılmaksızın ACID işlemlerine birlikte katılabilir. Orleans içindeki işlemler, merkezi olmayan ve dağıtılmıştır (yani merkezi bir işlem yöneticisi veya koordinatör yoktur) ve serileştirilebilir yalıtıma sahiptir.
İşlemler hakkında daha fazla bilgi için bkz. İşlemler.
Akarsu
Akışlar, bir dizi veri öğesinin neredeyse gerçek zamanlı olarak işlenmesine yardımcı olur. Orleans akışlar yönetilir; bir grain veya istemci bir akış yayımlamadan veya abone olmadan önce, akışların oluşturulmasına veya kaydedilmesine gerek yoktur. Bu, akış üreticilerinin ve tüketicilerinin birbirinden ve altyapıdan daha fazla ayrıştırılmasına olanak tanır.
Akış işleme güvenilirdir: Tahıllar denetim noktalarını (imleçler) depolayabilir ve etkinleştirme sırasında veya sonraki herhangi bir zamanda depolanan bir denetim noktasına sıfırlayabilir. Akışlar, verimliliği ve kurtarma performansını artırmak için iletilerin tüketicilere toplu teslimini destekler.
Akışlar Azure Event Hubs, Amazon Kinesis ve diğerleri gibi kuyruk hizmetleri tarafından desteklenir.
Rastgele sayıda akış daha az sayıda kuyruğa katlanabilir ve bu kuyrukları işleme sorumluluğu küme genelinde eşit olarak dengelenmiş olur.
Orleans videoya giriş
giriş videosu için Orleansaşağıdaki videoya göz atın:
Sonraki adımlar
Eğitim: Basit bir Orleans uygulama oluşturma