Tuple alanı - Tuple space

Bir tuple alanı bir uygulamasıdır ilişkisel bellek paralel / dağıtılmış hesaplama için paradigma. Depo sağlar demetler eşzamanlı olarak erişilebilir. Açıklayıcı bir örnek olarak, veri parçaları üreten bir grup işlemci ve verileri kullanan bir grup işlemci olduğunu düşünün. Üreticiler verilerini boşlukta demetler halinde yayınlar ve tüketiciler daha sonra belirli bir modelle eşleşen alandan verileri alır. Bu aynı zamanda tahta metafor. Tuple uzayı bir biçim olarak düşünülebilir dağıtılmış paylaşılan hafıza.

Tuple uzayları, teorik temeli Linda tarafından geliştirilen dil David Gelernter ve Nicholas Carriero -de Yale Üniversitesi 1986'da.

Tuple alanlarının uygulamaları da geliştirilmiştir. Java (JavaSpaces ), Lisp, Lua, Prolog, Python, Yakut, Smalltalk, Tcl, ve .NET Framework.

Nesne Uzayları

Nesne Uzayları bir paradigma geliştirmek için dağıtılmış hesaplama uygulamalar. Mantıksal varlıkların varlığı ile karakterize edilir. Nesne Uzayları. Dağıtılmış uygulamanın tüm katılımcıları bir Nesne Alanı. Bir hizmet sağlayıcısı, hizmeti bir Nesne ve içine koyar Nesne Alanı. Bir hizmetin müşterileri daha sonra Nesne Alanı, hangi nesnenin gerekli hizmeti sağladığını bulun ve isteğin nesne tarafından hizmete sunulmasını sağlayın.

Nesne Uzayları, bir bilgi işlem paradigması olarak, 1980'lerde David Gelernter -de Yale Üniversitesi. Gelernter adında bir dil geliştirdi Linda küresel nesne koordinasyonu kavramını desteklemek.

Nesne Alanı Kendileri nesneler olarak soyutlanmış ağ hizmetlerinin sağlayıcıları ve erişimcileri arasında paylaşılan sanal bir depo olarak düşünülebilir. Süreçler, bu paylaşılan nesneleri kullanarak - gerektiğinde ve gerektiğinde nesnelerin durumunu güncelleyerek birbirleriyle iletişim kurarlar.

Bir nesnenin, bir alana yatırıldığında, bir Nesne Dizini içinde Nesne Alanı. Herhangi bir işlem daha sonra nesneyi Nesne Dizini, özellik aramasını kullanarak, burada nesnenin aranması için kriterleri belirleyen özellik, adı veya onu benzersiz olarak tanımlayan başka bir özelliktir. Bir süreç, bir nesnenin içine yerleştirilmesini beklemeyi seçebilir. Nesne Alanı, gerekli nesne zaten mevcut değilse.

Nesneler, bir Nesne Alanı pasiftir, yani yöntemleri nesneler içerideyken çağrılamaz. Nesne Alanı. Bunun yerine erişim süreci, almak ondan Nesne Alanı yerel belleğine yerleştirin, nesne tarafından sağlanan hizmeti kullanın, nesnenin durumunu güncelleyin ve onu tekrar Nesne Alanı.

Bu paradigma doğal olarak sağlar Karşılıklı dışlama. Çünkü bir nesneye erişildiğinde, nesnenin bilgisayardan kaldırılması gerekir. Nesne Alanıve yalnızca serbest bırakıldıktan sonra geri yerleştirilir. Bu, bir işlem tarafından kullanılırken başka hiçbir işlemin bir nesneye erişemeyeceği ve dolayısıyla karşılıklı dışlamanın sağlanması anlamına gelir.

JavaSpaces

JavaSpaces, dağıtılmış nesne değişimi ve koordinasyon mekanizması (kalıcı olabilir veya olmayabilir) sağlayan bir hizmet belirtimidir. Java nesneler. Dağıtılmış sistem durumunu depolamak ve uygulamak için kullanılır dağıtılmış algoritmalar. Bir JavaSpace'de, tüm iletişim ortakları (eşler) durumu paylaşarak iletişim kurar ve koordine eder.

JavaSpace'ler elde etmek için kullanılabilir ölçeklenebilirlik paralel işleme yoluyla, dağıtılmış çoğaltma yoluyla nesnelerin güvenilir bir şekilde depolanmasını sağlamak için de kullanılabilir, ancak bu, bir disk gibi toplam bir elektrik kesintisinden kurtulamayacaktır; güç güvenilir olduğu sürece birçok kişi tarafından güvenilir kabul edilir. Dağıtım, uzak konumlara da yapılabilir; ancak, JavaSpace'ler genellikle düşük gecikme süresi, güvenilir nesne önbelleğe alma yerine yüksek performanslı uygulamalar.

En genel yazılım kalıbı JavaSpaces'ta kullanılan Master-Worker modelidir. Usta çalışma birimlerini "boşluğa" dağıtır ve bunlar işçiler tarafından okunur, işlenir ve alana geri yazılır. Tipik bir ortamda birkaç "alan", birkaç usta ve birçok işçi vardır; Çalışanlar genellikle jenerik olacak şekilde tasarlanırlar, yani herhangi bir iş birimini alandan alıp görevi işleyebilirler.

JavaSpaces, Java'nın bir parçasıdır Jini kendi başına ticari bir başarı olmayan teknoloji.[1] Teknoloji yıllar içinde yeni kullanıcılar buldu ve tuttu ve bazı satıcılar JavaSpace tabanlı ürünler sunuyor. JavaSpaces, sadık bir takipçi kitlesini sürdürmeye devam ettiği finansal hizmetler ve telekomünikasyon endüstrilerinde çoğunlukla kullanılan niş bir teknoloji olmaya devam ediyor. Jini / JavaSpaces'ın duyurusu, Sun'ın kurucu ortağı ve baş Jini mimarı olmasına rağmen oldukça heyecan yarattı Bill Joy bu dağıtılmış sistemler rüyasının alacağını açıkça söyleyin "düşüncede bir kuantum sıçraması".[2]

GigaSpaces In-Memory-Computing veri yapısının bir geliştiricisi olan, JavaSpace'lerini, In-Memory Data Grid'in bir parçası olarak uygular.

Örnek kullanım

Aşağıdaki örnek, JavaSpaces kullanılarak yapılmış bir uygulamayı gösterir. İlk olarak, içinde paylaşılacak bir nesne Nesne Alanı yapılmış. Böyle bir nesneye bir Giriş JavaSpace terminolojisinde. Burada Giriş döndüren bir hizmeti kapsüllemek için kullanılır Selam Dünya! string ve kaç kez kullanıldığını takip eder. Bu hizmeti sağlayan sunucu bir Nesne Alanıveya JavaSpace. Giriş o zaman yazılı içine JavaSpace. Müşteri okur girişten JavaSpace ve hizmete erişim yöntemini çağırır, bunu yaparak kullanım sayısını günceller. Güncellenmiş Giriş geri yazılır JavaSpace.

// Bir Giriş sınıfıhalka açık sınıf SpaceEntry uygular Giriş {     halka açık final Dize İleti = "Selam Dünya!";     halka açık Tamsayı Miktar = 0;      halka açık Dize hizmet() {         ++Miktar;         dönüş İleti;     }      halka açık Dize toString() {         dönüş "Miktar: " + Miktar;     }}
// Selam Dünya! sunucuhalka açık sınıf Sunucu {     halka açık statik geçersiz ana(Dize[] argümanlar) atar İstisna {         SpaceEntry giriş = yeni SpaceEntry();            // Entry nesnesini oluşturun         JavaSpace Uzay = (JavaSpace)Uzay();           // Bir Nesne Alanı Oluşturun         // Kayıt olun ve Girişi Boşluğa yazın         Uzay.yazmak(giriş, boş, Kiralama.SONSUZA DEK);                 // 10 saniye duraklayın ve ardından Giriş'i alın ve durumunu kontrol edin.         Konu.uyku(10 * 1000);         SpaceEntry e = Uzay.okumak(giriş, boş, Uzun.MAKSİMUM DEĞER);         Sistemi.dışarı.println(e);     }}
// Müşterihalka açık sınıf Müşteri {     halka açık statik geçersiz ana(Dize[] argümanlar) atar İstisna {         JavaSpace Uzay = (JavaSpace) Uzay();         SpaceEntry e = Uzay.almak(yeni SpaceEntry(), boş, Uzun.MAKSİMUM DEĞER);         Sistemi.dışarı.println(e.hizmet());         Uzay.yazmak(e, boş, Kiralama.SONSUZA DEK);     }}

Kitabın

  • Eric Freeman, Susanne Hupfer, Ken Arnold: JavaSpaces İlkeleri, Modelleri ve Uygulaması. Addison-Wesley Professional, 1. Haziran 1999, ISBN  0-201-30955-6
  • Phil Bishop, Nigel Warren: Pratikte JavaSpace'ler. Addison Wesley, 2002, ISBN  0-321-11231-8
  • Maks K. Goff: Ağa Dağıtılmış Hesaplama: Uygun Durumlar ve Yanlışlar2004 Prentice Hall, ISBN  0-13-100152-3
  • Sing Li, vd .: Profesyonel Java Sunucu Programlama, 1999, Wrox Press, ISBN  1-86100-277-7
  • Steven Halter: Örneklerle JavaSpaces Örneği, 2002, Prentice Hall PTR, ISBN  0-13-061916-7

Mülakatlar

Nesne

Ayrıca bakınız

Referanslar

Kaynaklar

Dış bağlantılar