Microsoft Orleans
Orleans:
- Sağlam, ölçeklenebilir dağıtılmış uygulamalar oluşturmaya yönelik platformlar arası bir çerçevedir. Dağıtılmış uygulamalar, genellikle donanım sınırlarının ötesine geçerek eşler arası iletişim kullanan ve birden fazla süreci kapsayan uygulamalar olarak tanımlanır.
- Tek bir şirket içi sunucudan bulutta binlerce dağıtılmış ve yüksek erişilebilirliğe sahip uygulamaya kadar ölçeklendirilebilir.
- Tanıdık kavramları ve C# deyimlerini çok sunuculu ortamlara genişletir.
- Esnek bir şekilde ölçeklendirilecek şekilde tasarlanmıştır. Bir ana bilgisayar bir kümeye katıldığında, yeni aktiviteleri kabul edebilir. Bir konak kümeden ayrıldığında, bu konak üzerindeki önceki etkinleştirmeler gerektiğinde kalan konaklarda yeniden etkinleştirilir. Ölçek küçültme veya makine arızası nedeniyle bir sunucu kümeden ayrılabilir. Bir Orleans kümesi tek bir konağa indirilebilir. Esnek ölçeklenebilirliği etkinleştiren özellikler hataya dayanıklılık sağlar. Küme, hataları otomatik olarak algılar ve kendisini hatalardan hızla toparlar.
- Ortak bir desen kümesi ve API'ler sağlayarak dağıtılmış uygulama geliştirmenin karmaşıklıklarını basitleştirir.
- Tek sunuculu uygulama geliştirme hakkında bilgi sahibi olan geliştiricilerin dayanıklı, ölçeklenebilir buluta özel hizmetler ve dağıtılmış uygulamalar oluşturmaya geçiş yapmalarını sağlar.
- Bazen "Dağıtılmış .NET" olarak adlandırılır.
- Bulutta yerel uygulamalar oluştururken tercih edilir.
- .NET'in desteklendiği her yerde çalışır. Bu, Linux, Windows ve macOS'ta barındırmayı içerir.
- Uygulamalar Azure App Service ve Azure Container Appsgibi Kubernetes, sanal makineler ve PaaS hizmetlerine dağıtılabilir.
"Aktör Modeli"
Orleans "aktör modeli" temel alır. Aktör modeli 1970'lerin başında oluşturulmuş ve artık Orleanstemel bileşenidir. Aktör modeli, her aktörün bir durum parçasını ve ilgili 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, aktörlerin kalıcı olarak var olduğu Sanal Aktör soyutlamasını icat etti.
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, Bulut çağı için yeni nesil dağıtılmış uygulamalar oluşturmaya yönelik yeni bir yaklaşımdır. Orleans programlama modeli, özellikleri kısıtlamadan veya geliştiriciye kısıtlamalar getirmeden yüksek düzeyde paralel dağıtılmış uygulamalar karmaşıklığı.
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.
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 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:
Tahıl kimlikleri, tahılları çağırmak için her zaman erişilebilir yapan 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:
-
IGrainWithGuidKey:
Guid
tuşları olan tanecikler için işaretleyici arabirimi. -
IGrainWithIntegerKey:
Int64
anahtarları olan tanecikler için işaretleyici arabirim. -
IGrainWithStringKey:
string
anahtarları 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 depolanabilen 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. Tanecik etkin olduğu sürece tanecik durumu bellekte tutulur, bu da veri depolarında daha düşük gecikme süresine ve daha az yüke neden olur.
Orleans çalışma zamanı tarafından gerektiğinde tahılların örneklenmesi 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 hangi sunucuda bir grainin örneklenmiş olduğunu belirli bir anda bilmesi gerekmediğinden, hatadan şeffaf bir şekilde kurtulma da sağlar. Tahılların yönetilen bir yaşam döngüsü vardır ve Orleans çalışma zamanı gerektiğinde tahılları etkinleştirmek/devre dışı bırakmak ve yerleştirmek/bulmakla sorumludur. Bu, geliştiricinin tüm tanecikler her zaman bellekte gibi kod yazmasına olanak tanır.
Silolar nedir?
Silo, bir Orleans temel öğesinin başka bir örneğidir. Silo bir veya daha fazla tahıl barındırabilir. Orleans çalışma zamanı, 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:
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 parça/grain bulunmaktadı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ı hizmeti sağlayarak tanelere destek olur. Daha fazla bilgi için bkz. Orleansile ne yapabilirim?.
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.
Orleansile ne yapabilirim?
Orleans, bulutta yerel uygulamalar oluşturmaya yönelik bir çerçevedir ve sonunda ölçeklendirmesi gereken .NET uygulamaları oluştururken dikkate alınmalıdır. Orleanskullanmanın 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.
Devamlı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" adında ayrı tanımlar olabilir. Bu durum herhangi bir depolama sisteminde depolanabilir.
Bir grain çalıştırılırken, okuma isteklerinin depolamaya erişmeden karşılanabilmesi için durum bellekte tutulur. Tahıl durumunu güncelleştirdiğinde, IStorage.WriteStateAsync çağrılması, yedekleme deposunun dayanıklılık ve tutarlılık açısından güncelleştirilmesini 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. 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
Orleansbir tane etkinleştirildiğinde, çalışma zamanı bu taneyi hangi sunucuda (silo) etkinleştireceğine karar verir. Buna tahıl yerleştirme denir.
Yerleştirme işlemi Orleans'da tamamen yapılandırılabilir. Geliştiriciler, rastgele, yerel öncelikli ve yük tabanlı gibi kullanıma hazır yerleştirme ilkeleri arasından seçim yapabilir veya özel mantık yapılandırabilirler. Bu, tanelerin nerede oluşturulduğuna karar verirken tam esneklik sağlar. Örneğin, tanecikler, işlem yapmaları gereken kaynaklara yakın veya iletişim kuracakları diğer taneciklere yakın bir sunucuya yerleştirilebilirler.
Daha fazla bilgi için bkz. Grain yerleştirme.
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 katmak için Orleans'daki taneli arabirimler sürüm oluşturulabilir.
Küme, hangi grain uygulamalarının kümedeki silolar üzerinde kullanılabilir olduğunu ve bu uygulamaların sürümlerini gösteren bir eşleme tutar. Bilginin bu versiyonu, taneciklere çağrıları yönlendirirken yerleştirme stratejileriyle birlikte yerleştirme kararları almak için çalışma ortamı tarafından kullanılır. Ayrıca, sürümlenmiş bir taneciği güvenli bir şekilde güncellemek için bu, farklı siloların farklı tanecik 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.
Detaylı çağrı filtreleri
tahıl çağrı filtresi birçok tahıl için ortak olan bir 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 durumuolabilir. Birden çok tahıl, ACID işlemlerine, durumlarının nerede depolandığına bakılmaksızın birlikte katılabilirler. Orleans işlemleri dağıtılmış ve merkeziyetçi olmayan bir yapıya sahiptir (merkezi işlem yöneticisi veya işlem koordinatörü yoktur) ve seri hale getirilebilenyalıtıma sahiptir.
İşlemler hakkında daha fazla bilgi için bkz. İşlemler.
Akarsu
Akışlar, geliştiricilerin bir dizi veri öğesini neredeyse gerçek zamanlı olarak işlemesine yardımcı olur. Orleans akışları yönetilen ; bir grain veya istemci, bir akışı yayımlamadan ya da 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 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ş
Orleansgiriş videosuyla ilgileniyorsanız aşağıdaki videoya göz atın:
Sonraki adımlar
Eğitim: Basit bir Orleans uygulama oluşturma