Proaktif - ProActive

ProActive Paralel Süit
Geliştirici(ler) ActiveEon, Inria , OW2 Konsorsiyumu
kararlı sürüm
10.0 (F-Sıfır) / 12 Temmuz 2019 ; 2 yıl önce ( 2019-07-12 )
Yazılmış Java
İşletim sistemi Çapraz platform
Tip İş Zamanlayıcı
Lisans AGPL
İnternet sitesi www .activeeon .com

ProActive Parallel Suite , OW2 topluluğunun bir parçası olan kurumsal iş yükü düzenlemesi için açık kaynaklı bir yazılımdır . Bir iş akışı modeli, herhangi bir dilde yazılmış bir dizi yürütülebilir dosya veya komut dosyasının bağımlılıklarıyla birlikte tanımlanmasına olanak tanır , böylece ProActive Parallel Suite , hesaplama kaynaklarının kullanımını optimize ederken yürütmeleri planlayabilir ve düzenleyebilir .

ProActive Parallel Suite, görev dağılımını ve hata toleransını optimize etmek için " aktif nesne " tasarım modeline (bkz. Aktif nesneler ) dayanmaktadır .

ProActive Parallel Suite temel özellikleri

  • İş akışları, görev paralelleştirmesini (Java, komut dosyaları veya yerel yürütülebilir dosyalar) kolaylaştırır ve bunları çeşitli kısıtlamalarla (GPU hızlandırma, kitaplık veya veri konumu gibi) eşleşen kaynaklar üzerinde çalıştırır.
  • İş iş akışlarını tasarlamak ve yürütmek ve bilgi işlem kaynaklarını yönetmek için web arayüzleri sağlanır. RESTful API, kurumsal uygulamalarla birlikte çalışabilirlik sağlar.
  • Hesaplamalı kaynaklar (bulut, kümeler, sanallaştırılmış altyapılar, masaüstü makineler) tek bir sanal altyapıda birleştirilebilir. Sağladığı otomatik ölçeklendirme ve kullanım kolaylığı kaynak yönetimi stratejileri.
  • Birlikte çalışabilirlik, görevlerin Windows, Mac ve Linux dahil olmak üzere çeşitli platformlarda çalışabileceği heterojen iş akışlarıyla sağlanır.

ProActive Java çerçevesi ve Programlama modeli

Model, Nice Sophia Antipolis Üniversitesi'nde profesör olan Denis Caromel tarafından oluşturuldu . Modelin çeşitli uzantıları daha sonra INRIA'daki OASIS ekibinin üyeleri tarafından yapıldı . A Theory of Distributed Objects kitabı , ProActive özelliklerini biçimlendiren ve ProActive program yürütme özellikleriyle birlikte kalkülüse biçimsel anlambilim sağlayan ASP hesabını sunar .

Aktif nesneler

Etkin nesneler, ProActive kullanarak eşzamanlı uygulamalar oluşturmak için kullanılan temel etkinlik ve dağıtım birimleridir . Aktif bir nesne kendi iş parçacığı ile çalışır . Bu iş parçacığı yalnızca diğer aktif nesneler tarafından bu aktif nesne üzerinde çağrılan yöntemleri ve bu aktif nesneye ait olan alt sistemin pasif nesnelerinin yöntemlerini yürütür. ProActive ile programcı, standart Java'dan farklı olarak Thread nesnelerini açıkça manipüle etmek zorunda değildir.

Etkin nesneler, hesaplamaya dahil olan ana bilgisayarların herhangi birinde oluşturulabilir. Aktif bir nesne oluşturulduğunda, etkinliği (kendi iş parçacığıyla çalışması gerçeği) ve konumu (yerel veya uzak) tamamen şeffaftır. Herhangi bir aktif nesne, aynı sınıfın pasif bir örneğiymiş gibi manipüle edilebilir.

Bir etkin nesne : a iki nesne oluşan vücut ve standart bir Java nesnesine. Gövde, aktif nesnenin dışından görünmez.

Gövde, aktif nesne üzerindeki çağrıları (veya istekleri ) almaktan ve bunları bekleyen çağrılar kuyruğunda saklamaktan sorumludur . Bu çağrıları bir senkronizasyon ilkesi tarafından belirtilen sırada yürütür. Bir senkronizasyon ilkesi belirtilmemişse, çağrılar " İlk giren ilk çıkar " (FIFO) tarzında yönetilir .

Aktif bir nesnenin iş parçacığı daha sonra bekleyen istekler kuyruğunda bir yöntem seçer ve onu yürütür. Etkin bir nesnenin içinde paralellik sağlanmaz; bu, ProActive'ın tasarımında önemli bir karardır ve "ön-post" koşullarının ve sınıf değişmezlerinin kullanılmasını sağlar .

Aktif bir nesneye çağrı gönderen alt sistemin tarafında, aktif nesne bir proxy ile temsil edilir . Proxy, gelecekteki değerleri temsil etmek için gelecek nesneleri oluşturur, çağrıları İstek nesnelerine dönüştürür (meta nesne açısından, bu bir şeyleştirmedir ) ve parametre olarak iletilen pasif nesnelerin derin kopyalarını gerçekleştirir .

Aktif nesne temeli

ProActive, Eiffel programlama dilinin paralel bir uzantısı olan Eiffel// tarafından tanıtılan modelde uygulamalar geliştirmek için tasarlanmış bir kitaplıktır .

Bu modelde uygulama alt sistemlerde yapılandırılmıştır . Her alt sistem için bir aktif nesne (ve dolayısıyla bir iş parçacığı) ve her etkin nesne (veya iş parçacığı) için bir alt sistem vardır. Böylece her alt sistem, bir aktif nesneden ve herhangi bir sayıda pasif nesneden oluşur - muhtemelen hiçbir pasif nesne yoktur. Bir alt sistemin iş parçacığı, yalnızca bu alt sistemin nesnelerindeki yöntemleri yürütür. Alt sistemler arasında "paylaşılan pasif nesneler" yoktur.

Pasif olana yapılan bir çağrının aksine aktif bir nesneye yapılan çağrı

Bu özellikler uygulamanın topolojisini etkiler. Bir alt sistemi oluşturan tüm nesnelerden - aktif nesne ve pasif nesneler - alt sistem dışındaki nesneler tarafından yalnızca aktif nesne bilinir. Hem aktif hem de pasif tüm nesnelerin aktif nesnelere referansları olabilir. Bir o1 nesnesinin o2 pasif nesnesine referansı varsa , o1 ve o2 aynı alt sistemin parçasıdır.

Model: Sıralı, çok iş parçacıklı, dağıtılmış

Bunun, alt sistemler arasında mesaj geçişinin anlambilimi üzerinde de sonuçları vardır. Bir alt sistemdeki bir nesne, aktif bir nesne üzerindeki bir yöntemi çağırdığında, çağrının parametreleri, alt sistemin pasif nesnelerine ilişkin referanslar olabilir ve bu, paylaşılan pasif nesnelere yol açar. Bu nedenle, aktif nesneler üzerindeki çağrıların parametreleri olarak iletilen pasif nesneler her zaman derin kopya tarafından geçirilir . Aktif nesneler ise her zaman referans yoluyla iletilir . Simetrik olarak bu, aktif nesnelerde çağrılan yöntemlerden döndürülen nesneler için de geçerlidir.

Asenkron çağrılar , vadeli işlemler ve veri paylaşımının olmaması kavramları sayesinde , ProActive ile yazılmış bir uygulama, sıralı, çok iş parçacıklı veya dağıtılmış bir ortamda çalışsa da herhangi bir yapısal değişikliğe ihtiyaç duymaz - aslında neredeyse hiç değişiklik olmaz - .

Asenkron çağrılar ve vadeli işlemler

Mümkün olduğunda, aktif bir nesne üzerinde bir yöntem çağrısı olduğu somutlaştırılmış bir asenkron isteği gibi. Mümkün değilse, çağrı eşzamanlıdır ve yanıt alınana kadar bloke edilir. İstek eşzamansızsa, hemen gelecekteki bir nesneyi döndürür .

Gelecekteki bir nesne

Gelecekteki nesne, henüz gerçekleştirilmemiş yöntem çağrısının sonucu için bir yer tutucu görevi görür. Sonuç olarak, çağıran iş parçacığı, döndürülen nesne üzerinde yöntemleri çağırması gerekmediği sürece kodunu yürütmeye devam edebilir. İhtiyaç duyulursa, yöntem çağırma sonucu henüz mevcut değilse, çağıran iş parçacığı otomatik olarak engellenir. Gelecekteki bir nesne, aktif bir nesneninkine benzer bir yapıya sahip olsa da, gelecekteki bir nesne aktif değildir. Sadece bir Stub ve bir Proxy'si var.

Kod örneği

Aşağıdaki kod alıntısı, gelecekteki nesneler kavramını vurgulamaktadır. Bir kullanıcının etkin bir nesneden bir yöntem foove bir yöntem çağırdığını varsayalım ; yöntem void döner ve yöntem sınıfının bir nesne döndürür : barafoobarV

// a one way typed asynchronous communication towards the (remote) AO a
// a request is sent to a
a.foo (param);

// a typed asynchronous communication with result.
// v is first an awaited Future, to be transparently filled up after
// service of the request, and reply
V v = a.bar (param);
...
// use of the result of an asynchronous call.
// if v is still an awaited future, it triggers an automatic
// wait: Wait-by-necessity
v.gee (param);

Bir fooaktif nesne üzerinde çağrıldığında, ahemen döner (geçerli iş parçacığı diğer alt sistemdeki yöntemleri çalıştıramadığından). Benzer şekilde, barçağrıldığında ahemen döner, ancak sonuç vhenüz hesaplanamaz. Yöntem çağırmanın sonucu için yer tutucu olan gelecekteki bir nesne döndürülür. Çağıran alt sistemi açısından, gelecekteki nesne ile aynı çağrı pasif bir nesneye verilmiş olsaydı döndürülecek olan nesne arasında hiçbir fark yoktur.

Her iki yöntem de geri döndükten sonra, çağıran iş parçacığı, çağrı etkin bir şekilde gerçekleştirilmiş gibi kodunu yürütmeye devam eder. Gelecekteki mekanizmanın rolü, geeyöntem çağrıldığında vve sonuç henüz ayarlanmadığında arayan iş parçacığını engellemektir : bu nesneler arası eşitleme ilkesi, gereğine göre bekleme olarak bilinir .

Ayrıca bakınız

Referanslar

daha fazla okuma

Dış bağlantılar