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

Живой распределенный объект (также сокращенно живой объект ) относится к работающему экземпляру распределенного многостороннего (или однорангового ) протокола , рассматриваемого с объектно-ориентированной точки зрения, поскольку объект, имеющий особую идентичность , может инкапсулировать внутреннее состояние и потоки выполнения , и это демонстрирует четко определенное внешне видимое поведение.

Ключевые концепции [ править ]

Ключевые концепции языка программирования применительно к живым распределенным объектам определяются следующим образом:

  • Личность . Идентичность живого распределенного объекта определяется теми же факторами , что различие между экземплярами одного и того же распределенного протокола. Объект состоит из группы программных компонентов, физически выполняющихся на некотором наборе физических машин и участвующих во взаимной связи, каждый из которых выполняет код распределенного протокола с одним и тем же набором основных параметров, таких как имя группы многоадресной рассылки, идентификатор тема публикации-подписки, идентификатор службы членства и т. д. Таким образом, например, каналы публикации-подписки и группы многоадресной рассылкиявляются примерами живых распределенных объектов: для каждого канала или группы существует единственный экземпляр распределенного протокола, работающий между всеми компьютерами, отправляющими, пересылающими или получающими данные, опубликованные в канале или многоадресной рассылке внутри группы. В этом случае идентичность объекта определяется идентификатором канала или группы, дополненным идентификатором распределенной системы, которая предоставляет, контролирует и управляет данным каналом или группой. В случае многоадресной рассылки идентичность системы может быть определена, например, по адресу службы членства (объект, который управляет членством в группе многоадресной рассылки).
  • Прокси ( реплики ). Прокси или копия живого объекта является один из экземпляров компонентов программного обеспечения , участвующих в выполнении распределенного протокола Прямую объекта. Таким образом, объект может быть альтернативно определен как группа посредников, участвующих в обмене данными, совместно поддерживающих некоторое распределенное состояние и координирующих свои операции. Термин « прокси» подчеркивает тот факт, что отдельный программный компонент сам по себе не является объектом; скорее, он служит шлюзом, через который приложение может получить доступ к определенным функциям или поведению, которые распространяются на набор компьютеров. В этом смысле концепция живого прокси распределенного объектаобобщает понятие клиентской прокси- заглушки удаленного взаимодействия RPC , RMI или .NET .
  • Поведение . Поведение живого распределенного объекта характеризуется множеством возможных моделей внешних взаимодействий , которые его прокси могут участвовать в их локальных средах выполнения. Эти взаимодействия моделируются как обмен явными событиями (сообщениями).
  • Состояние . Состояние живого распределенного объекта определяется как сумма всех внутренних, локальных состояний своих доверенных лиц. По определению, он распространяется и тиражируется. Различные реплики состояния объекта могут быть строго или только слабо согласованными, в зависимости от семантики протокола: у экземпляра консенсусного протокола состояние его реплик будет строго согласованным, тогда как у экземпляра протокола выбора лидера будет слабо согласованное государственный. В этом смысле термин живой распределенный объект обобщает концепцию реплицированного объекта.; последний - это особый тип динамического распределенного объекта, который использует протокол, такой как Paxos, виртуальная синхронизация или репликация конечного автомата, для достижения строгой согласованности между внутренними состояниями его реплик. Состояние живого распределенного объекта следует понимать как динамическое понятие: как точку (или согласованный разрез ) в потоке значений, а не как конкретное значение, расположенное в заданном месте в данный момент времени. Например, внешнее видимое состояние объекта выбора лидера будет определяться как личность текущего избранного лидера. Идентификационные данные не хранятся в каком-либо конкретном месте; скорее, он материализуется как поток сообщений в форме selected (x)одновременно производятся прокси-серверами, участвующими в выполнении этого протокола, и одновременно используются экземплярами приложения, использующего этот протокол, на разных машинах, распределенных по сети.
  • Интерфейсы ( конечные точки ). Интерфейс живого распределенного объекта определяется типами интерфейсов , раскрываемых его прокси; они могут включать в себя каналы событий и различные типы графических пользовательских интерфейсов. Интерфейсы, предоставляемые прокси-серверами, называются конечными точками динамического распределенного объекта . Термин « экземпляр конечной точки» относится к одному конкретному каналу событий или пользовательскому интерфейсу, предоставляемому одним конкретным прокси. Сказать, что живой объект предоставляет определенную конечную точку, означает, что каждый из его прокси-серверов предоставляет экземпляр этой конечной точки в своей локальной среде, и каждый из экземпляров конечной точки несет события тех же типов (или привязывается к тому же типу графического дисплея. ).
  • Ссылки . Ссылка на живой объект является полным набором сериализовать , портативные инструкции для построения его прокси. Для разыменования ссылочных средства для локально синтаксического анализа и следуйте инструкциям на конкретном компьютере, чтобы произвести бегущий прокси живого объекта. Определяется таким образом, ссылка живой объект играет ту же роль , как Java , ссылки , С / С ++ указатель , или веб - сервиса «s WSDL описание; он содержит полную информацию, достаточную для определения местонахожденияданный объект и взаимодействовать с ним. Поскольку живые распределенные объекты могут не находиться в каком-либо конкретном месте (а скорее охватывать динамически изменяющийся набор компьютеров), информация, содержащаяся в ссылке на динамический распределенный объект, не может быть ограничена только адресом. Если объект идентифицируется каким-то глобально уникальным идентификатором (как может иметь место для тем публикации-подписки или групп многоадресной рассылки), ссылка должна указывать, как разрешается этот идентификатор, путем рекурсивного встраивания ссылки на соответствующий объект разрешения имен. .
  • Типы . Тип живого распределенного объекта определяет закономерность внешних взаимодействий с объектом; он определяется типами конечных точек и графических пользовательских интерфейсов, предоставляемых прокси объекта, а также шаблонами событий, которые могут происходить на конечных точках. Ограничения, которые тип объекта накладывает на шаблоны событий, могут распространяться по сети. Например, тип атомарной многоадресной рассылки может указывать, что если событие в форме доставки (x) генерируется одним прокси-сервером, подобное событие должно в конечном итоге быть сгенерировано всеми исправнымипрокси (прокси, которые работают на компьютерах, которые никогда не выходят из строя, которые никогда не перестают работать или исключены из протокола; точное определение может отличаться). Как и в случае с типами в языках, подобных Java , может существовать множество очень разных реализаций одного и того же типа. Таким образом, например, поведение, характерное для атомарной многоадресной рассылки, может проявляться экземплярами распределенных протоколов, таких как виртуальная синхронизация или Paxos.

Семантику и поведение живых распределенных объектов можно охарактеризовать в терминах распределенных потоков данных ; набор сообщений или событий, которые появляются в экземплярах конечной точки живого объекта, формирует распределенный поток данных [1] . [2]

История [ править ]

На ранние идеи, лежащие в основе концепции живого распределенного объекта, повлияло большое количество исследований объектно-ориентированных сред, встраиваний языков программирования и каркасов композиции протоколов, восходящих, по крайней мере, к модели акторов, разработанной в начале 1970-х годов; всестороннее обсуждение соответствующих предшествующих работ можно найти в Ph.D. Кшиштофа Островского. диссертация. [3]

Термин « живой распределенный объект» впервые был использован неофициально в серии презентаций, представленных осенью 2006 г. на конференции ICWS , [4] конференции STC , [5] и в лабораториях MSR в Редмонде, штат Вашингтон, [6], а затем официально. определено в 2007 году в статье IEEE Internet Computing. [7] Первоначально термин использовался для обозначения типов динамических, интерактивных веб - контента , который не размещенных на серверах в центрах обработки данных , а хранится на конечного пользователя «ы клиентакомпьютеры и внутреннее питание на экземплярах надежных многоадресных протоколов . Слово live выражает тот факт, что отображаемая информация является динамической, интерактивной и представляет собой текущий, свежий, живой контент, который отражает последние обновления, сделанные пользователями (в отличие от статического, доступного только для чтения и архивного контента, который был предварительно собран. ). Слово « распределенный» выражает тот факт, что информация не размещается и не хранится на сервере в центре обработки данных, а, скорее, реплицируется между компьютерами конечных пользователей и обновляется в одноранговой сети.формировать поток многоадресных сообщений, которые могут создаваться непосредственно конечными пользователями, потребляющими контент; более подробное обсуждение концепции живых объектов в контексте веб-разработки можно найти в докторской диссертации Кшиштофа Островского . диссертация. [3]

Представленное выше более общее определение было впервые предложено в 2008 г. в документе, опубликованном на конференции ECOOP . [8] Расширение термина было мотивировано необходимостью моделировать живые объекты как композиции других объектов; в этом смысле концепция была вдохновлена Smalltalk , который впервые представил единообразную перспективу, что все является объектом , и Jini , который первым предложил идею, что сервисы являются объектами.. Применительно к живым распределенным объектам перспектива диктует, что их составные части, которые включают экземпляры распределенных многосторонних протоколов, используемых внутри для репликации состояния, также должны моделироваться как живые распределенные объекты. Потребность в единообразии подразумевает, что определение живого распределенного объекта должно унифицировать такие концепции, как живой веб-контент, потоки сообщений и экземпляры распределенных многосторонних протоколов.

Первой реализацией концепции живых распределенных объектов, как определено в статье ECOOP [8], была платформа Live Distributed Objects [9], разработанная Кшиштофом Островски из Корнельского университета. Платформа предоставляла набор визуальных средств перетаскивания для создания иерархических документов, напоминающих веб-страницы и содержащих ссылки на живые объекты, сериализованные в формате XML . Визуальный контент, такой как окна чата, общие рабочие столы и различные виды гибридных приложений.может быть составлен путем перетаскивания компонентов, представляющих пользовательские интерфейсы и экземпляры протоколов, на форму дизайна и соединения их вместе. С момента его создания был разработан ряд расширений для встраивания живых распределенных объектов в документы Microsoft Office [10] и для поддержки различных типов размещенного контента, например Google Maps. [11] По состоянию на март 2009 года платформа активно разрабатывается ее создателями. [12] [13] [14] [15] [16] [17] [18] [19]

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

  • Активный объект

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

  1. Перейти ↑ Ostrowski, K., Birman, K., Dolev, D., and Sakoda, C. (2009). «Реализация надежных потоков событий в больших системах с помощью распределенных потоков данных и рекурсивного делегирования», 3-я Международная конференция ACM по распределенным системам на основе событий (DEBS 2009) , Нэшвилл, Теннесси, США, 6–9 июля 2009 г., http: // www. .cs.cornell.edu / ~ krzys / krzys_debs2009.pdf
  2. Перейти ↑ Ostrowski, K., Birman, K., Dolev, D. (2009). «Программирование живых распределенных объектов с распределенными потоками данных», представленный на Международной конференции по объектно-ориентированному программированию, системам, языкам и приложениям (OOPSLA 2009) , http://www.cs.cornell.edu/~krzys/krzys_oopsla2009.pdf
  3. ^ a b Островски, К. (2008). «Живые распределенные объекты», канд. Диссертация, Корнельский университет, http://hdl.handle.net/1813/10881 .
  4. Островски, К., Бирман, К., «Расширяемая архитектура веб-сервисов для уведомлений в крупномасштабных системах», Международная конференция IEEE по веб-сервисам (ICWS 2006), Чикаго, Иллинойс, сентябрь 2006 г., http: // ieeexplore. ieee.org/xpls/abs_all.jsp?arnumber=4032049 .
  5. ^ Островски, К., и Бирман, К., «Масштабируемая групповая коммуникационная система для масштабируемого доверия», Первый семинар ACM по масштабируемым надежным вычислениям (ACM STC 2006), Фэрфакс, Вирджиния, ноябрь 2006 г., http: //portal.acm. org / citation.cfm? id = 1179477 .
  6. Перейти ↑ Ostrowski, K., (2006). Масштабируемая многоадресная передача QuickSilver . Microsoft Research, Редмонд, Вашингтон, ноябрь 2006 г. http://www.researchchannel.org/prog/displayevent.aspx?rID=7870&fID=2276 .
  7. Перейти ↑ Ostrowski, K., Birman, K., Dolev, D. (2007). «Живые распределенные объекты: включение активной сети», IEEE Internet Computing , ноябрь – декабрь 2007 г., 11 (6): 72-78, http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?isnumber=4376216&arnumber=4376231 .
  8. ^ a b Островски, К., Бирман, К., Долев, Д., и Анн, Дж. (2008). «Программирование с использованием динамических распределенных объектов», Труды 22-й Европейской конференции по объектно-ориентированному программированию , Пафос, Кипр, 7–11 июля 2008 г., под ред. Дж. Витека, Lecture Notes in Computer Science , vol. 5142, Springer-Verlag, Berlin, Heidelberg, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536 .
  9. ^ http://liveobjects.cs.cornell.edu
  10. ^ Ahnn J., Бирман, К., Островский, К., и ван Ренесса, Р. (2008). «Использование живых распределенных объектов для автоматизации офиса», Материалы конференции ACM / IFIP / USENIX Middleware '08 Conference Companion , Лёвен, Бельгия, 01–05 декабря 2008 г., Companion '08 , ACM, Нью-Йорк, Нью-Йорк, 30-35, http://portal.acm.org/citation.cfm?id=1462735.1462743 .
  11. ^ http://liveobjects.cs.cornell.edu/community/index.html
  12. Перейти ↑ Ostrowski, K., and Birman, K. (2009). «Хранение и доступ к живому Mashup-контенту в облаке», 3-й международный семинар ACM SIGOPS по крупномасштабным распределенным системам и промежуточному программному обеспечению (LADIS 2009) , Big Sky, MT, США. 11 октября 2009 г., http://www.cs.cornell.edu/~krzys/krzys_ladis2009.pdf
  13. ^ Akdogan А., Polepalli, S. (2008). «Живые карты», http://liveobjects.cs.cornell.edu/community/1/index.html
  14. ^ Kashyap, Р. и Nagarajappa, D. (2008). «Корнелл Yahoo! Живые объекты», http://liveobjects.cs.cornell.edu/community/2/index.html
  15. Перейти ↑ Dong, X., and Zhang, Z. (2008). «Интеграция живых объектов с веб-службой Flickr», http://liveobjects.cs.cornell.edu/community/3/index.html
  16. ^ Prateek, У. (2008). «Живой объект Goole Earth», http://liveobjects.cs.cornell.edu/community/4/index.html
  17. Перейти ↑ Gupta, S., and Vora, H. (2008). "ALGE (Google Планета Земля в реальном времени)", http://liveobjects.cs.cornell.edu/community/5/index.html
  18. ^ Mahajan, Р. и Wakankar, S. (2008). "Распределенная Google Планета Земля", http://liveobjects.cs.cornell.edu/community/6/index.html.
  19. ^ Wadhwa А., Sankar, H., и Subramaniyan, S. (2008). "Live Google Earth UI", http://liveobjects.cs.cornell.edu/community/7/index.html.