Microsoft Orleans

Orleans güçlü, ölçeklenebilir dağıtılmış uygulamalar oluşturmaya yönelik platformlar arası bir çerçevedir. Dağıtılmış uygulamalar, eşler arası iletişim kullanılarak genellikle donanım sınırlarının ötesinde tek bir işleme yayılan uygulamalar olarak tanımlanır. Orleans tek bir şirket içi sunucudan bulutta yüzlerce ila binlerce dağıtılmış, yüksek oranda kullanılabilir uygulamaya ölçeklendirilir. Orleans tanıdık kavramları ve C# deyimlerini çok sunuculu ortamlara genişletir. Orleans esnek bir şekilde ölçeklendirilecek şekilde tasarlanmıştır. Konak bir kümeye katıldığında yeni etkinleştirmeleri kabul edebilir. Bir konak, ölçeğin düşürülmesi veya makine hatası nedeniyle kümeden ayrıldığında, bu konak üzerindeki önceki etkinleştirmeler gerektiğinde kalan konaklarda yeniden etkinleştirilir. Kümenin Orleans ölçeği tek bir konağa düşürülebilir. Esnek ölçeklenebilirlik sağlayan özellikler hataya dayanıklılık da sağlar. Küme, hataları otomatik olarak algılar ve hatalardan hızlı bir şekilde kurtarır.

Temel tasarım hedeflerinden Orleans biri, ortak bir desen kümesi ve API'ler sağlayarak dağıtılmış uygulama geliştirmenin karmaşıklıklarını basitleştirmektir. Tek sunuculu uygulama geliştirme hakkında bilgi sahibi olan geliştiriciler, kullanarak Orleansdayanıklı, ölçeklenebilir buluta özel hizmetler ve diğer dağıtılmış uygulamalar oluşturmaya kolayca geçiş yapabilir. Bu nedenle genellikle Orleans "Dağıtılmış .NET" olarak adlandırılır ve bulutta yerel uygulamalar oluşturulurken tercih edilen çerçevedir. Orleans .NET'in desteklendiği her yerde çalışır. Bu, Linux, Windows ve macOS'ta barındırmayı içerir. Orleansuygulamalar Kubernetes'e, sanal makinelere ve Azure Uygulaması Hizmeti ve Azure Container Apps gibi PaaS hizmetlerine dağıtılabilir.

"Aktör Modeli"

Orleans "aktör modeline" dayanır. Aktör modeli 1970'lerin başında oluşturulmuş ve artık temel bileşenidir Orleans. Aktör modeli, her aktörün bir durum parçasını ve buna karşılık gelen davranışı kapsülleyen basit, eşzamanlı, sabit bir nesne olduğu bir programlama modelidir. Aktörler zaman uyumsuz iletileri kullanarak birbirleriyle özel olarak iletişim kurar. Orleans özellikle aktörlerin kalıcı olarak var olduğu Sanal Aktör soyutlaması icat edilmiştir.

Not

Aktörler, sanal olarak her zaman var olan tamamen mantıksal varlıklardı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, Bulut çağı için yeni nesil dağıtılmış uygulamalar oluşturmaya yönelik yeni bir yaklaşımdır. Programlama modeli, Orleans özellikleri kısıtlamadan veya geliştiriciye kısıtlamalar getirmeden yüksek düzeyde paralel dağıtılmış uygulamalarla ilgili karmaşıklığı evcilleştirir.

Daha fazla bilgi için bkz Orleans. Microsoft Research aracılığıyla Sanal Aktörler . Sanal aktör bir tanecik olarak Orleans temsil edilir.

Grains nedir?

Tahıl birkaç Orleans ilkel öğeden biridir. Aktör modeli açısından tahıl, sanal bir aktördür. Herhangi bir Orleans uygulamada temel yapı taşı bir tanedir. Tanecikler, kullanıcı tanımlı kimlik, davranış ve durumu içeren varlıklardır. Bir dilimin aşağıdaki görsel gösterimini göz önünde bulundurun:

Tahıl kararlı bir kimlik, davranış ve durumdan oluşur.

Taneli kimlikler, hub'ları çağırma için her zaman kullanılabilir hale getiren kullanıcı tanımlı anahtarlardır. Tahıllar diğer tanecikler veya herhangi bir sayıda dış istemci tarafından çağrılabilir. Her bir tanecik, aşağıdaki arabirimlerden birini veya daha fazlasını uygulayan bir sınıfın örneğidir:

Tahıllar, herhangi bir depolama sisteminde depolanabilen geçici veya kalıcı durum verilerine sahip olabilir. Bu nedenle, hub'lar uygulama durumlarını örtük olarak bölümleyerek otomatik ölçeklenebilirliği etkinleştirir ve hatalardan kurtarmayı basitleştirir. Tanecik etkinken tahıl durumu bellekte tutulur ve veri depolarında daha düşük gecikme süresine ve daha az yüke yol açar.

Bir dilimin Orleans yönetilen yaşam döngüsü.

Hub'ların örneklemesi çalışma zamanı tarafından Orleans isteğe bağlı olarak otomatik olarak gerçekleştirilir. Bir süre kullanılmayan tanecikler, kaynakları boşaltmak için bellekten otomatik olarak kaldırılır. Bu, kararlı kimlikleri nedeniyle mümkündür ve bu da zaten belleğe yüklenmiş olsun veya olmasın tanecikleri çağırmaya olanak tanır. Bu, çağıranın belirli bir noktada hangi sunucuda bir tane örneği oluşturulduğunu bilmesi gerekmediğinden hatadan saydam kurtarma da sağlar. Tahıllar yönetilen Orleans bir yaşam döngüsüne sahiptir ve çalışma zamanı gerektiğinde tahılları etkinleştirme/devre dışı bırakma ve yerleştirme/bulmadan sorumludur. Bu, geliştiricinin tüm tanecikler her zaman bellekte gibi kod yazmasına olanak tanır.

Silolar nedir?

Silo, ilkel bir Orleans örnektir. Silo bir veya daha fazla tane barındırıyor. Orleans Uygulamalar için programlama modelini uygulayan çalışma zamanıdır.

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 birbirleriyle koordine olur. Çalışma zamanı, kümede barındırılan taneciklerin tek bir işlem içinde gibi birbirleriyle iletişim kurması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:

Kümede bir veya daha fazla silo, siloda ise bir veya daha fazla tane vardır.

Yukarıdaki diyagramda kümeler, silolar ve taneler arasındaki ilişki gösterilmektedir. İstediğiniz sayıda kümeniz olabilir, her kümede bir veya daha fazla silo vardır ve her siloda bir veya daha fazla tane vardır.

Çekirdek programlama modeline ek olarak, silolar zamanlayıcılar, anımsatıcılar (kalıcı zamanlayıcılar), kalıcılık, işlemler, akışlar ve daha fazlası gibi bir dizi çalışma zamanı hizmetini içeren taneler sağlar. Daha fazla bilgi için bkz. Ne yapabilirim Orleans?

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.

Ne yapabilirim Orleans?

Orleans buluta özel uygulamalar oluşturmaya yönelik bir çerçevedir ve sonunda ölçeklendirmesi gereken .NET uygulamaları oluştururken dikkate alınmalıdır. kullanmak Orleansiçin görünen sonsuz yollar vardır, ancak aşağıdakiler en yaygın yollardan bazılarıdır; Oyun, Bankacılık, Sohbet uygulamaları, GPS izleme, Hisse senedi ticareti, Alışveriş sepetleri, Oylama uygulamaları ve daha fazlası. Orleans Microsoft tarafından Azure, Xbox, Skype, Halo, PlayFab, Gears of War ve diğer birçok iç hizmette kullanılır. Orleans çeşitli uygulamalar için kullanımı kolaylaştıran birçok özelliğe sahiptir.

Kalıcılık

Orleans bir isteği işlemeden önce durumun kullanılabilir olmasını ve tutarlılığının korunmasını 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 envanteri için "envanter" adlı bir profil olabilir. Bu durum herhangi bir depolama sisteminde depolanabilir.

Bir dilim çalışırken, okuma isteklerinin depolamaya erişmeden servis edilebilmesi için durum bellekte tutulur. Tahıl durumunu güncelleştirdiğinde çağrı IStorage.WriteStateAsync , yedekleme deposunun dayanıklılık ve tutarlılık açısından güncelleştirilmesini sağlar.

Daha fazla bilgi için bkz . Tahıl 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. Bu veriler, tahıl şu anda etkinleştirilmemiş olsa bile gelecekteki bir noktada bazı eylemlerin tamamlanmasını sağlamak için kullanılabilir. 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

içinde Orleansbir tane etkinleştirildiğinde, çalışma zamanı bu dilimin hangi sunucuda (silo) etkinleştirildiğine karar verir. Buna tahıl yerleştirme denir.

içindeki Orleans yerleştirme işlemi tamamen yapılandırılabilir. Geliştiriciler rastgele, tercih edilen yerel ve yük tabanlı gibi kullanıma hazır yerleştirme ilkeleri arasından seçim yapabilir veya özel mantık yapılandırılabilir. Bu, tanelerin nerede oluşturulduğuna karar verirken tam esneklik sağlar. Örneğin, tahıllar, üzerinde çalışması gereken kaynaklara yakın bir sunucuya veya iletişim kuracakları diğer taneciklere yerleştirilebilir.

Daha fazla bilgi için bkz . Grain yerleşimi.

Taneli sürüm oluşturma ve heterojen kümeler

Üretim sistemlerini, özellikle durum bilgisi olan sistemlerde, değişiklikleri güvenli bir şekilde hesaplayan bir şekilde yükseltmek zor olabilir. Bunu hesaba eklemek için içindeki Orleans taneli arabirimler sürümü oluşturulabilir.

Küme, kümedeki silolar ve bu uygulamaların sürümleri üzerinde hangi tanecik uygulamalarının kullanılabilir olduğunu gösteren bir eşleme tutar. Bilgilerin bu sürümü, hub'lara çağrıları yönlendirirken yerleştirme kararları almak için yerleştirme stratejileriyle birlikte çalışma zamanı tarafından kullanılır. Ayrıca, sürümlenmiş bir dilimi güvenli bir şekilde güncelleştirmek için bu, farklı siloların farklı 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, özel olarak işaretlenmiş ve ilişkili bir duruma sahip olmayan ve aynı anda birden çok silo üzerinde etkinleştirilebilen 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 taneleri.

Taneli çağrı filtreleri

Taneli çağrı filtresi, birçok tanecik için ortak olan mantıktır. Orleans hem gelen hem de giden aramalar için filtreleri destekler. Yetkilendirme, günlüğe kaydetme ve telemetri ile hata işleme filtrelerinin tümü yaygın olarak kabul edilir.

İstek bağlamı

Meta veriler ve diğer bilgiler, istek bağlamı kullanılarak bir dizi istekle geçirilebilir. İstek bağlamı, dağıtılmış izleme bilgilerini veya kullanıcı tanımlı diğer değerleri tutmak için kullanılabilir.

Dağıtılmış ACID işlemleri

Yukarıda açıklanan basit kalıcılık modeline ek olarak, taneciklerin işlem durumu olabilir. Birden çok tanecik, durumlarının en sonunda nerede depolandığına bakılmaksızın ACID işlemlerine birlikte katılabilir. içindeki Orleans işlemler dağıtılmış ve merkezi olmayan (merkezi işlem yöneticisi veya işlem koordinatörü yoktur) ve serileştirilebilir yalıtıma sahiptir.

İşlemler hakkında daha fazla bilgi için bkz . İşlemler.

Akışlar

Akışlar geliştiricilerin bir dizi veri öğesini neredeyse gerçek zamanlı olarak işlemesine yardımcı olur. Orleansakışlar yönetilir; bir dilim veya istemci yayımlamadan veya bir akışa abone olmadan önce akışların oluşturulması veya kaydedilmesi gerekmez. Bu, akış üreticilerinin ve tüketicilerinin birbirinden ve altyapıdan daha fazla ayrıştırılmasını sağlar.

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 hizmetleri kuyruğa alarak 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 hizmetine giriş videosu

giriş videosuyla Orleansilgileniyorsanız aşağıdaki videoya göz atın:

Sonraki adımlar