Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

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

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

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

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

JavaSpaces [ править ]

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

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

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

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

GigaSpaces , разработчик структуры данных In-Memory-Computing, реализует JavaSpaces как часть своей In-Memory Data Grid.

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

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

// въездного класса общественного  класса  SpaceEntry  реализует  запись  {  общественного  окончательная  Строки  сообщение  =  «Hello World!» ;  public  Integer  count  =  0 ;  общедоступная  служба String  () { ++ count ; ответное сообщение ; }       общедоступная  строка  toString ()  {  возврат  "  Счетчик :" +  счетчик ;  } }
// Привет мир! Сервер общественного  класс  Сервер  {  общественные  статический  недействительный  основной ( Строка []  арг )  кидает  Exception  {  SpaceEntry  записи  =  новый  SpaceEntry ();  // Создаем объект Entry.  JavaSpace  space  =  ( JavaSpace ) space ();  // Создание пространства объектов  // Зарегистрируйте и запишите запись в пространство  пространства . напишите ( запись ,  ноль ,  аренда .НАВСЕГДА );  // Пауза на 10 секунд, а затем получение записи и проверка ее состояния.  Резьба . сон ( 10  *  1000 );  SpaceEntry  e  =  пробел . чтения ( запись ,  нуль ,  Long . MAX_VALUE );  Система . из . println ( e );  } }
// Открытый  класс  клиента Client  {  public  static  void  main ( String []  args )  выдает  исключение  {  JavaSpace  space  =  ( JavaSpace )  space ();  SpaceEntry  e  =  пробел . взять ( новый  SpaceEntry (),  null ,  Long . MAX_VALUE );  Система . из . Println ( е . обслуживание());  пространство . написать ( e ,  null ,  аренда . НАВСЕГДА );  } }

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

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

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

  • Гелернтер, Дэвид (2009). «Повелитель Облака» . Джон Брокман, редактор и издатель Рассел Вайнбергер, младший издатель, Edge Foundation, Inc.
  • Хейсс, Дженис Дж. (2003). «Компьютерные видения: разговор с Дэвидом Гелернтером» . Сеть разработчиков Sun (SDN).
  • Веннерс, Билл (2003). «Проектирование так, как будто программисты - это люди (интервью с Кеном Арнольдом)» . java.net.

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

  • Брогден, Уильям (2007). «Как веб-службы могут использовать JavaSpaces» . SearchWebServices.com . Проверено 18 апреля 2007 . CS1 maint: обескураженный параметр ( ссылка )
  • Брогден, Уильям (2007). «Грид-вычисления и веб-сервисы (Беовульф, BOINC, Javaspaces)» . SearchWebServices.com . Проверено 20 марта 2007 . CS1 maint: обескураженный параметр ( ссылка )
  • Белый, Том (2005). «Как построить вычислительную ферму» . java.net . Проверено 21 мая 2005 . CS1 maint: обескураженный параметр ( ссылка )
  • Оттингер, Джозеф (2007). «Понимание JavaSpaces» . theserverside . Проверено 31 января 2007 . CS1 maint: обескураженный параметр ( ссылка )
  • Ангерер, Бернхард; Эрлахер, Андреас (2005). «Слабосвязанная связь и координация в промежуточном программном обеспечении Java следующего поколения» . java.net . Проверено 3 июня 2006 . CS1 maint: обескураженный параметр ( ссылка )
  • Ангерер, Бернхард (2003). «Космическое программирование» . onjava.com . Проверено 19 марта 2003 . CS1 maint: обескураженный параметр ( ссылка )
  • Пой, Ли (2003). «Высокоэффективная кластеризация веб-уровня. Часть 2: Создание адаптивных, масштабируемых решений с помощью JavaSpaces» . IBM developerworks.
  • Мамуд, Кусай Х. (2005). «Начало работы с технологией JavaSpaces: за пределами традиционных парадигм распределенного программирования» . Сеть разработчиков Sun (SDN).
  • Фриман, Эрик; Хупфер, Сюзанна (20 ноября 1999 г.). «Освободите место для Javaspaces, Часть 1 (из 5)» . JavaWorld . Проверено 17 июля 2020 . CS1 maint: обескураженный параметр ( ссылка )
  • Леффлер, доктор Джеральд (2004). "JavaSpaces und ihr Platz im Enterprise Java Universum, Das Modell zum Objektaustausch: JavaSpaces vorgestellt" . Entwickler.com . Проверено 1 февраля 2004 . CS1 maint: обескураженный параметр ( ссылка )
  • Аранго, Маурисио (2009). «Координация в параллельных событийных системах» . blogs.sun.com.
  • Немлекар, Милинд (2001). «Масштабируемые распределенные пространства кортежей» . NCSU, Департамент ECE.

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

  • Космическая архитектура
  • Линда (координационный язык)
  • Кен Арнольд , ведущий инженер по JavaSpaces в Sun Microsystems
  • Ринда , аналог JavaSpaces для Ruby

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

  1. ^ Ли Гомес: « Прогнозы Sun Microsystems для звука системы Jxta знакомы ». The Wall Street Journal , 4 июня 2001 г.
  2. ^ Роб Гут: « Больше, чем просто еще одно красивое имя: Джини из Sun открывает новый мир распределенных компьютерных систем ». SunWorld , август 1998 г. [15 января 2006 г.]

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

  • Гелернтер, Дэвид . «Генеративное общение в Линде» . Транзакции ACM по языкам и системам программирования , том 7, номер 1, январь 1985 г.
  • Распределенные вычисления (первое индийское переиздание, 2004 г.), ML Liu

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

  • "TupleSpace" на c2.com
  • «Спецификация JavaSpace» на jini.org