Живой распределенный объект - Live distributed object

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

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

Ключевые идеи

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

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

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

История

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

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

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

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

Смотрите также

Рекомендации

  1. ^ Островски К., Бирман К., Долев Д. и Сакода К. (2009). «Реализация надежных потоков событий в больших системах с помощью распределенных потоков данных и рекурсивного делегирования», 3-я Международная конференция ACM по распределенным системам, основанным на событиях (DEBS 2009), Нашвилл, Теннесси, США, 6–9 июля 2009 г. http://www.cs.cornell.edu/~krzys/krzys_debs2009.pdf
  2. ^ Островский К., Бирман К., Долев Д. (2009). «Программирование живых распределенных объектов с распределенными потоками данных», представленный Международная конференция по объектно-ориентированному программированию, системам, языкам и приложениям (OOPSLA 2009), http://www.cs.cornell.edu/~krzys/krzys_oopsla2009.pdf
  3. ^ а б Островский, К. (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. ^ Островский, К. (2006). Масштабируемая многоадресная передача QuickSilver. Microsoft Research, Редмонд, Вашингтон, ноябрь 2006 г. http://www.researchchannel.org/prog/displayevent.aspx?rID=7870&fID=2276.
  7. ^ Островский К., Бирман К. и Долев Д. (2007). «Живые распределенные объекты: включение Active Web», Интернет-вычисления IEEE, Ноябрь – декабрь 2007 г., 11 (6): 72-78, http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?isnumber=4376216&arnumber=4376231.
  8. ^ а б Островски К., Бирман К., Долев Д. и Анн Дж. (2008). «Программирование с живыми распределенными объектами», Материалы 22-й Европейской конференции по объектно-ориентированному программированию, Пафос, Кипр, 07–11 июля 2008 г., J. Vitek, Ed., Конспект лекций по информатике, т. 5142, Springer-Verlag, Берлин, Гейдельберг, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536.
  9. ^ http://liveobjects.cs.cornell.edu
  10. ^ Анн Дж., Бирман К., Островски К. и ван Ренесс Р. (2008). «Использование живых распределенных объектов для автоматизации делопроизводства», Материалы конференции ACM / IFIP / USENIX Middleware '08 Conference Companion, Лёвен, Бельгия, 01–05 декабря 2008 г., Компаньон '08, ACM, Нью-Йорк, NY, 30-35, http://portal.acm.org/citation.cfm?id=1462735.1462743.
  11. ^ http://liveobjects.cs.cornell.edu/community/index.html
  12. ^ Островски К., Бирман К. (2009). «Хранение и доступ к живому мэшап-контенту в облаке», 3-й международный семинар ACM SIGOPS по крупномасштабным распределенным системам и промежуточному программному обеспечению (LADIS 2009), Биг Скай, штат Монтана, США. 11 октября 2009 г., http://www.cs.cornell.edu/~krzys/krzys_ladis2009.pdf
  13. ^ Акдоган, А., Полепалли, С. (2008). "Живые карты", http://liveobjects.cs.cornell.edu/community/1/index.html
  14. ^ Кашьяп Р. и Нагараджаппа Д. (2008). "Корнелл Yahoo! Живые объекты", http://liveobjects.cs.cornell.edu/community/2/index.html
  15. ^ Донг, X., и Zhang, Z. (2008). «Интеграция живых объектов с веб-службой Flickr», http://liveobjects.cs.cornell.edu/community/3/index.html
  16. ^ Пратик, У. (2008). "Живая Земля Гула", http://liveobjects.cs.cornell.edu/community/4/index.html
  17. ^ Гупта, С., и Вора, Х. (2008). "ALGE (Живой Google Планета Земля)", http://liveobjects.cs.cornell.edu/community/5/index.html
  18. ^ Махаджан Р. и Ваканкар С. (2008). "Распределенная Google Планета Земля", http://liveobjects.cs.cornell.edu/community/6/index.html
  19. ^ Wadhwa, A., Sankar, H., and Subramaniyan, S. (2008). "Живой пользовательский интерфейс Google Планета Земля", http://liveobjects.cs.cornell.edu/community/7/index.html