Aktör modeli ve Mikroservisler arasındaki fark nedir?


Yanıtlar:


11

Aktör modeli - eşzamanlı hesaplamalar için matematik model ve hizmet odaklı mimarinin bir uygulamasıdır. Benzerlikler oldukça rastlantısaldır.

Bazı aktör modeline dayanan mikro hizmetler oluşturmak ve aktör modeline sahip bazı mikro hizmet mimarilerini modellemek kesinlikle mümkündür, ancak bunların eşdeğer olduğu anlamına gelmez. "Mikro servis sistemi" ni "e-posta sistemi" ile değiştirin, yine de geçerli olacaktır. "Aktör modelini" "Sıralı işlemlerin iletilmesi" (CSP) ile değiştirin ve CSP ve aktör model sistemleri birbirleri tarafından modellenebileceği için "gerçek" olacaktır.

Aktör modeli göz önüne alındığında, mikro hizmetler veya SOA veya hatta e-posta kullanarak gidebilir ve uygulayabilirsiniz, ancak bu, gerçekten karşılaştırmak için aynı soyutlama düzeyinde oldukları anlamına gelmez.

Ayrıca, aktör modeli arabellekleri vurgular (mikro servisler dünyasında mesaj kuyrukları olarak düşünülebilir), bu nedenle bazı aktör / mikro servisler kendiliğinden eşzamansız iletişim hala mümkünken hazır olamaz.

Başka bir deyişle, aktör modeliyle karşılaştırmak, çok yüksek bir düşünce düzeyinde bazı yaratıcı görüşler getirebilir, fakat çoğunlukla elmalar ve portakallar.

Amaç, SOA / mikro hizmetlerin matematik modelini Aktör modeliyle karşılaştırmaksa, aynı zamanda önemsiz değildir, çünkü: 1) SOA için matematiksel model üzerinde mutabık kalınmış değildir , 2) model genellikle amacı içerir. SOA / mikro hizmet modellemesinin, aktör modelinin amacından farklı olması muhtemeldir. Burada SOA'yı modelleme girişimine bir örnek .

Elbette, bir kişi mikro hizmetlere sahip olan bir aktör model sistemi yaratabilir ve her bir hizmet için bir aktör olarak adlandırılabilir (aktör modelinin ne olduğuna dair sıkı bir tanım bakın). Ancak bu, genel anlamda ikisi arasında anlamlı bir ilişki olduğu anlamına gelmez.


Oyuncu modelinin aynı seviyedeki mikro servislerle karşılaştırılamayacağını kastediyorum. Cevabımı güncellememe izin verin
Roman Susi,

Onu demiyorum. Mikro servisler aktör modunu uygulayabildiği gibi montaj veya C programlarını da uygulayabilir. Ama ben her zaman yaptıklarını ve hatta sık sık demiyorum. Ve evet, Erlang da bir oyuncu modeli uygulamasının bir örneğidir. Argümanını anladığımdan emin değilim.
Roman Susi

Üzgünüm, ilk önce Aktörlerin matematiksel model olduğunu ve uServices uygulamasının (bu model) uygulandığını okudum. Hizmet Mimarisini uyguladıklarını fark etmedim. Öyleyse benim sorum, iki matematiksel modelin, Aktörlerin ve SOA'nın birbirleriyle nasıl karşılaştırıldığı. Servis, istekleri kabul eden ve cevap mesajları üreten bir mesaj döngüsüne sahip bir şeydir. Aktör budur / yapar. SOA'daki mikro hizmetten farkı nedir? Daha açık bir ifadeyle, dağıtılmış bir servis ağım olduğunda, bunlara mikro hizmetler veya aktörler mi demeliyim?
Küçük Alien,

Bunun bir forum veya haber kaynağı değil, bir soru-cevap sitesi olduğunu unutmayın. UPDATE ve EDIT gibi takma adlar gerekli değildir; Stack Exchange'deki her yayında zaten herkesin görüntüleyebileceği ayrıntılı bir düzenleme geçmişi vardır.
Robert Harvey

1

Mikro hizmetler, ilgili her alanı kendi konuşlandırılabilir eserine (çalıştırılabilir, senaryo, JAR, WAR, vb.) Bölerek yazılımı organize etmenin bir yoludur. Bu, örneğin ihtiyaç duyuldukları yerde daha fazla örnek dağıtarak ölçeklendirmenize izin vererek esneklik sağlar. Kullanıcıların kataloğunuza bakmak için bir alışveriş sepetine bir şeyler eklediklerinden daha fazla zaman harcadığını söyleyin; bir konuşlandırılabilir yapı, katalog işlevlerini, diğeri ise alışveriş sepeti işlevlerini yönetir - yükü işlemek için katalog hizmetlerinin daha fazla kopyasını çalıştırabilirsiniz.

Aynı zamanda onları iç değişimlerden izole eder. Ürün verilerini depolamak için ilişkisel bir veritabanından bir doküman veritabanına geçtiğinizi söyleyin - alışveriş sepetindeki hizmetlerinizin değişmesi gerekmez.

Aktör modeli konuşlandırılabilir yapıdan daha düşük bir seviyedir, hizmeti ne tür nesnelerle uyguladığınızla ilgili daha fazla. Yukarıdaki örneğe devam edersek, sisteminizde alışveriş sepetlerini oyuncularla temsil etmiş olabilirsiniz, bu nedenle her kullanıcının arabası ayrı bir aktördür ve mesajlar öğelere öğe eklemesini, öğeleri kaldırmasını, mevcut içerikle yanıt vermesini, gönderimi eklemesini, kontrol etmesini söyler , vb. Bu durumda, hala bir mikro hizmetiniz vardır ve aktör modeliyle birlikte uygulanır.


Aynı hizmetin birden fazla örneğine sahip olabileceğinizi söylediğinizde, bunun tam tersi olduğunu düşünmeye başladım: hizmet bir tür, oyuncular ise nesnedir :)
Küçük Alien

Aktörler ayrı ayrı konuşlandırılamaz mı? Emin misiniz? dotnet.github.io/orleans/Documentation/Grain-Versioning/…
Daffy Punk

Bana göre, uygulama akıllıca, belki de iki kavram arasında meydana gelen bir yakınsama var gibi görünüyor ...
Daffy Punk

1

Bence asıl fark, ayrıntılardan biri.

Aktör modeli için nispeten ince tanelidir, çünkü bir aktör OOP'daki bir nesnenin eşdeğerini temsil etme eğilimindedir.

Mikro servisler için nispeten kaba tanelidir, çünkü tek bir mikro servis çok sayıda oyuncu veya objeden oluşabilir.

Modern web'in daha da büyük bir ayrıntı düzeyinde ("makro hizmetler") olduğunu söylemek için hayal gücünüzü gerçekten uzatma gereğine gerek olmadığını unutmayın; ve (örneğin) bir HTTP sunucusunun bir makro servis, bir veritabanı sunucusunun bir makro servis, bir web tarayıcısının bir makro servis, vs.

Her şey kabaca aynı - iletişim halinde izole edilmiş parçalar. Değişen sadece parçaların büyüklüğüdür (ve dolayısıyla parçaların sayısı).


Her java uygulaması, ne kadar büyük olursa olsun, tek bir nesnedir. Nesneler diğer nesnelerden yapılmıştır ve süresiz olarak büyüyebilir. Sanırım uServisler aynı zamanda başka nesnelerden yapılmış bir çeşit uygulama.
Küçük Alien

0

Mikro hizmetler , her biri hizmetin vatansız yapısı nedeniyle istekleri yerine getirebilen birden fazla kopya oluşturarak yatay olarak ölçeklenir . Vatansız doğaları nedeniyle başarısızlığa karşı dirençlidirler.

Aktörler daha az yük veya daha fazla kaynak içeren bölümlere taşıyarak ölçeklenirler. Onlar devletlidir . Bunlar başarısızlığa karşı dirençlidir çünkü - aktör çerçevesine bağlı olarak - başka bir aktör dinamik olarak fırlatılabilir veya aktörün etkin bir yedeği her zaman birincil aktör başarısızlığıyla başa çıkmak için korunabilir.

Yine, mikro servisler de durumsal olabilir, ancak mikro servislerin tasarım ilkelerine aykırıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.