Jump to content

Кортежное пространство

(Перенаправлено с Tuplespace )

Пространство кортежей — это реализация парадигмы ассоциативной памяти для параллельных/распределенных вычислений. Он предоставляет хранилище кортежей , к которым можно обращаться одновременно. В качестве наглядного примера рассмотрим, что существует группа процессоров, которые создают фрагменты данных, и группа процессоров, которые эти данные используют. Производители публикуют свои данные в виде кортежей в пространстве, а потребители затем извлекают из пространства данные, соответствующие определенному шаблону. Это также известно как метафора доски . Пространство кортежей можно рассматривать как форму распределенной общей памяти .

Пространства кортежей были теоретической основой языка Линда , разработанного Дэвидом Гелернтером и Николасом Каррьеро в Йельском университете в 1986 году.

Реализации пространств кортежей также были разработаны для Java ( JavaSpaces ), Lisp , Lua , Prolog , Python , Ruby , Smalltalk , Tcl и .NET Framework .

Пространства объектов [ править ]

Пространства объектов — это парадигма разработки приложений распределенных вычислений . Он характеризуется существованием логических сущностей, называемых пространствами объектов . Все участники распределенного приложения совместно используют пространство объектов . Поставщик службы инкапсулирует службу как объект и помещает ее в пространство объектов . Затем клиенты службы получают доступ к пространству объектов , узнают, какой объект предоставляет необходимую услугу, и обрабатывают запрос этим объектом.

Пространства объектов как вычислительная парадигма были выдвинуты в 1980-х годах Дэвидом Гелернтером из Йельского университета . Гелернтер разработал язык под названием Linda для поддержки концепции глобальной координации объектов.

Пространство объектов можно рассматривать как виртуальный репозиторий, совместно используемый поставщиками и пользователями сетевых сервисов, которые сами по себе абстрагируются как объекты. Процессы взаимодействуют друг с другом, используя эти общие объекты, обновляя состояние объектов по мере необходимости.

Объект, помещенный в пространство, должен быть зарегистрирован в каталоге объектов в пространстве объектов . Любые процессы могут затем идентифицировать объект из Каталога объектов , используя поиск свойств, где свойством, определяющим критерии поиска объекта, является его имя или какое-либо другое свойство, которое однозначно идентифицирует его. Процесс может выбрать ожидание размещения объекта в пространстве объектов , если необходимый объект еще не присутствует.

Объекты, помещенные в пространство объектов, являются пассивными, т. е. их методы не могут быть вызваны, пока объекты находятся в пространстве объектов . Вместо этого процесс доступа должен извлечь его из пространства объектов в свою локальную память, использовать сервис, предоставляемый объектом, обновить состояние объекта и поместить его обратно в пространство объектов .

Эта парадигма по своей сути обеспечивает взаимное исключение . Поскольку после доступа к объекту его необходимо удалить из пространства объектов и поместить обратно только после его освобождения. Это означает, что ни один другой процесс не может получить доступ к объекту, пока он используется одним процессом, тем самым обеспечивая взаимное исключение.

JavaSpaces [ править ]

JavaSpaces — это спецификация службы, обеспечивающая распределенный механизм обмена и координации объектов (который может быть постоянным, а может и не быть постоянным) для Java объектов . Он используется для хранения состояния распределенной системы и реализации распределенных алгоритмов . В JavaSpace все партнеры по коммуникации (одноранговые узлы) общаются и координируют свои действия посредством совместного использования состояния.

JavaSpaces можно использовать для достижения масштабируемости посредством параллельной обработки, его также можно использовать для обеспечения надежного хранения объектов посредством распределенной репликации, хотя оно не выдержит полного сбоя питания, как диск; Многие считают его надежным, пока надежно питание. Распространение также может осуществляться в отдаленные места; однако это случается редко, поскольку JavaSpaces обычно используются для с малой задержкой высокопроизводительных приложений , а не для надежного кэширования объектов.

Наиболее распространенным шаблоном программного обеспечения , используемым в JavaSpaces, является шаблон Master-Worker. Мастер передает единицы работы в «пространство», а рабочие считывают, обрабатывают и записывают их обратно в пространство. В типичной среде имеется несколько «пространств», несколько мастеров и множество рабочих; рабочие обычно проектируются как универсальные, т. е. они могут взять любую единицу работы из пространства и обработать задачу.

JavaSpaces является частью технологии Java Jini , которая сама по себе не имела коммерческого успеха. [1] За прошедшие годы эта технология нашла и удержала новых пользователей, и некоторые поставщики предлагают продукты на основе JavaSpaces. JavaSpaces остается нишевой технологией, которая в основном используется в сфере финансовых услуг и телекоммуникаций, где она продолжает иметь верных последователей. Объявление о Jini/JavaSpaces вызвало немало шума, хотя соучредитель Sun и главный архитектор Jini Билл Джой прямо заявил, что эта мечта о распределенных системах потребует « квантового скачка в мышлении ». [2]

Пример использования [ править ]

В следующем примере показано приложение, созданное с использованием JavaSpaces. объект, который будет использоваться в пространстве объектов Сначала создается . В терминологии JavaSpace такой объект называется записью . Здесь запись используется для инкапсуляции службы, которая возвращает сообщение Hello World! строка и отслеживает, сколько раз она использовалась. Сервер, предоставляющий эту услугу, создаст пространство объектов или JavaSpace . запись Затем записывается в JavaSpace . Клиент считывает запись из JavaSpace и вызывает свой метод для доступа к службе, обновляя при этом счетчик использования. Обновленная запись записывается обратно в JavaSpace .

// An Entry class
public class SpaceEntry implements Entry {
     public final String message = "Hello World!";
     public Integer count = 0;
 
     public String service() {
         ++count;
         return message;
     }
 
     public String toString() {
         return "Count: " + count;
     }
}
// Hello World! server
public class Server {
     public static void main(String[] args) throws Exception {
         SpaceEntry entry = new SpaceEntry();            // Create the Entry object
         JavaSpace space = (JavaSpace)space();           // Create an Object Space
         // Register and write the Entry into the Space
         space.write(entry, null, Lease.FOREVER);        
         // Pause for 10 seconds and then retrieve the Entry and check its state.
         Thread.sleep(10 * 1000);
         SpaceEntry e = space.read(entry, null, Long.MAX_VALUE);
         System.out.println(e);
     }
}
// Client
public class Client {
     public static void main(String[] args) throws Exception {
         JavaSpace space = (JavaSpace) space();
         SpaceEntry e = space.take(new SpaceEntry(), null, Long.MAX_VALUE);
         System.out.println(e.service());
         space.write(e, null, Lease.FOREVER);
     }
}

Книги [ править ]

  • Эрик Фриман , Сюзанна Хупфер , Кен Арнольд : Принципы, шаблоны и практика JavaSpaces. Аддисон-Уэсли Профессионал, 1 июня 1999 г., ISBN   0-201-30955-6
  • Фил Бишоп, Найджел Уоррен: JavaSpaces на практике. Эддисон Уэсли, 2002 г., ISBN   0-321-11231-8
  • Макс К. Гофф: Сетевые распределенные вычисления: подходы и заблуждения , 2004, Прентис Холл, ISBN   0-13-100152-3
  • Синг Ли и др.: Профессиональное программирование серверов Java , 1999, Wrox Press, ISBN   1-86100-277-7
  • Стивен Холтер: Пример JavaSpaces , 2002, PTR Prentice Hall, ISBN   0-13-061916-7

Интервью [ править ]

Статьи [ править ]

См. также [ править ]

Ссылки [ править ]

Источники [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6ce1bfb1e50a6c1d47f795a66225f646__1711949280
URL1:https://arc.ask3.ru/arc/aa/6c/46/6ce1bfb1e50a6c1d47f795a66225f646.html
Заголовок, (Title) документа по адресу, URL1:
Tuple space - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)