Her ikisi de, paralel MPI iletişim ağı oluşturan ağlara benziyor. Aktörleri hizmetleriyle tanırım. Aktörler daha dinamik mi (hizmet ağı daha statik olsa da onları yaratabilir ve nefes olarak öldürebilirsiniz) ya da ne?
Her ikisi de, paralel MPI iletişim ağı oluşturan ağlara benziyor. Aktörleri hizmetleriyle tanırım. Aktörler daha dinamik mi (hizmet ağı daha statik olsa da onları yaratabilir ve nefes olarak öldürebilirsiniz) ya da ne?
Yanıtlar:
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.
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.
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ı).
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.