Живой распределенный объект
Живой распределенный объект (также сокращенно « живой объект ») относится к работающему экземпляру распределенного многостороннего (или однорангового ) протокола , рассматриваемого с объектно-ориентированной точки зрения, как объект, который имеет отдельную идентичность и может инкапсулировать внутреннее состояние и потоки выполнения , и это демонстрирует четко определенное внешне видимое поведение.
Ключевые понятия
[ редактировать ]Ключевые концепции языка программирования применительно к живым распределенным объектам определяются следующим образом:
- Личность . Идентичность . действующего распределенного объекта определяется теми же факторами, которые различают экземпляры одного и того же распределенного протокола Объект состоит из группы программных компонентов, физически выполняющихся на некотором наборе физических машин и участвующих во взаимной связи, каждый из которых выполняет код распределенного протокола с одинаковым набором существенных параметров, таких как имя группы многоадресной рассылки, идентификатор тема публикации-подписки, идентификатор службы членства и т. д. Таким образом, например, каналы публикации-подписки и группы многоадресной рассылки являются примерами живых распределенных объектов: для каждого канала или группы существует единственный экземпляр распределенного протокола, работающего между все компьютеры отправляют, пересылают или получают данные, опубликованные в канале или многоадресной рассылке внутри группы. В этом случае идентичность объекта определяется идентификатором канала или группы, дополненным идентификатором распределенной системы, которая обеспечивает, контролирует и управляет данным каналом или группой. В случае многоадресной рассылки идентичность системы может определяться, например, по адресу служба членства (объект, который управляет членством в группе многоадресной рассылки).
- Прокси ( реплики ). Прокси живого объекта — это один из или реплика экземпляров программного компонента, участвующий в выполнении распределенного протокола живого объекта. Таким образом, объект можно альтернативно определить как группу прокси, участвующих в обмене данными, совместно поддерживающих некоторое распределенное состояние и координирующих свои операции. Термин «прокси» подчеркивает тот факт, что отдельный программный компонент сам по себе не является объектом; скорее, он служит шлюзом , через который приложение может получить доступ к определенной функциональности или поведению, охватывающему набор компьютеров. В этом смысле концепция прокси-сервера действующего распределенного объекта обобщает понятие RPC , RMI или .NET прокси-сервера на стороне клиента удаленной заглушки .
- Поведение . Поведение . живого распределенного объекта характеризуется набором возможных шаблонов внешних взаимодействий, которые его прокси-серверы могут осуществлять с локальными средами выполнения Эти взаимодействия моделируются как обмен явными событиями (сообщениями).
- Состояние . Состояние . живого распределенного объекта определяется как сумма всех внутренних, локальных состояний его прокси По определению, он распространяется и реплицируется. Различные реплики состояния объекта могут быть сильно или слабо согласованными, в зависимости от семантики протокола: экземпляр протокола консенсуса будет иметь состояние своих реплик строго согласованным, тогда как экземпляр протокола выборов лидера будет иметь слабо согласованное состояние. состояние. В этом смысле термин « живой распределенный объект» обобщает концепцию реплицируемого объекта ; последний представляет собой особый тип живого распределенного объекта, который использует такой протокол, как Paxos, виртуальную синхронизацию или репликацию конечного автомата, для достижения строгой согласованности между внутренними состояниями его реплик. Состояние живого распределенного объекта следует понимать как динамическое понятие: как точку (или последовательный разрез ) в потоке значений, а не как конкретное значение, расположенное в данном месте в данный момент времени. Например, внешне видимое состояние объекта выборов лидера будет определяться как личность избранного в данный момент лидера. Личность не хранится в каком-то конкретном месте; скорее, оно материализуется как поток сообщений в форме selected(x) одновременно создается прокси-серверами, участвующими в выполнении этого протокола, и одновременно потребляется экземплярами приложения, использующими этот протокол, на разных машинах, распределенных по сети.
- Интерфейсы ( конечные точки ). Интерфейс ; живого распределенного объекта определяется типами интерфейсов, предоставляемых его прокси они могут включать каналы событий и различные типы графических пользовательских интерфейсов. Интерфейсы, предоставляемые прокси, называются конечными точками действующего распределенного объекта . Термин «экземпляр конечной точки» относится к одному конкретному каналу событий или пользовательскому интерфейсу, предоставляемому одним конкретным прокси. Сказать, что живой объект предоставляет определенную конечную точку, означает, что каждый из его прокси предоставляет экземпляр этой конечной точки своей локальной среде, и каждый из экземпляров конечной точки несет события одних и тех же типов (или привязывается к одному и тому же типу графического отображения). ).
- Ссылки . Ссылка на живой объект представляет собой полный набор сериализованных переносимых инструкций для создания его прокси. Разыменование ссылки означает локальный анализ и выполнение этих инструкций на конкретном компьютере для создания работающего прокси живого объекта. Определенная таким образом ссылка на живой объект играет ту же роль, что и ссылка C/C++ Java, указатель или веб-службы ; WSDL- описание он содержит полную информацию, достаточную для обнаружения данного объекта и взаимодействия с ним. Поскольку живые распределенные объекты не могут находиться в каком-либо конкретном месте (а скорее охватывать динамически изменяющийся набор компьютеров), информация, содержащаяся в ссылке на живой распределенный объект, не может быть ограничена только адресом. Если объект идентифицируется каким-то глобальным уникальным идентификатором (как это может быть в случае тем публикации-подписки или групп многоадресной рассылки), ссылка должна указывать, как этот идентификатор разрешается, путем рекурсивного внедрения ссылки в соответствующий объект разрешения имени .
- Типы . Тип ; живого распределенного объекта определяет закономерности внешнего взаимодействия с объектом оно определяется типами конечных точек и графических пользовательских интерфейсов, предоставляемых прокси-серверами объекта, а также шаблонами событий, которые могут произойти в конечных точках. Ограничения, которые тип объекта накладывает на шаблоны событий, могут распространяться на всю сеть. Например, тип атомарной многоадресной рассылки может указывать, что если событие формы доставить(х) генерируется одним прокси-сервером, аналогичное событие должно в конечном итоге генерироваться всеми исправными прокси-серверами (прокси-серверами, которые работают на компьютерах, которые никогда не выходят из строя и которые никогда не перестают выполняться и не исключаются из протокола; точное определение может отличаться). Как и в случае с типами в Java -подобных языках, может существовать множество совершенно разных реализаций одного и того же типа. Так, например, поведение, характерное для атомарной многоадресной рассылки, может проявляться экземплярами распределенных протоколов, таких как виртуальная синхронизация или Paxos.
Семантику и поведение живых распределенных объектов можно охарактеризовать с точки зрения распределенных потоков данных ; набор сообщений или событий, которые появляются в экземплярах конечной точки живого объекта, образует распределенный поток данных. [1] . [2]
История
[ редактировать ]Ранние идеи, лежащие в основе концепции живого распределенного объекта, возникли под влиянием обширного объема исследований объектно-ориентированных сред, вложений языков программирования и структур композиции протоколов, восходящих, по крайней мере, к модели актеров, разработанной в начале 1970-х годов; всестороннее обсуждение соответствующих предшествующих работ можно найти в докторской диссертации Кшиштофа Островского. диссертация. [3]
Термин « живой распределенный объект» впервые неофициально использовался в серии презентаций, сделанных осенью 2006 года на конференции ICWS . [4] НТЦ , конференция [5] и в лабораториях MSR в Редмонде, штат Вашингтон. , [6] а затем официально определен в 2007 году в статье IEEE Internet Computing. [7] Первоначально этот термин использовался для обозначения типов динамического интерактивного веб- контента , который не размещается на серверах в центрах обработки данных , а скорее хранится на компьютерах конечных пользователей и клиентских внутренне поддерживается экземплярами надежных многоадресной рассылки протоколов . Слово «живой» отражает тот факт, что отображаемая информация является динамической, интерактивной и представляет собой текущий, свежий, живой контент, отражающий недавние обновления, сделанные пользователями (в отличие от статического, доступного только для чтения и архивного контента, который был предварительно собран). ). Слово «распределенный» отражает тот факт, что информация не размещается, а хранится на сервере в центре обработки данных, а, скорее, реплицируется между компьютерами конечных пользователей и обновляется в одноранговой форме через поток многоадресной рассылки. сообщения, которые могут быть созданы непосредственно конечными пользователями, потребляющими контент; Более подробное обсуждение концепции живых объектов в контексте веб-разработки можно найти в Кшиштофа Островского. докторской диссертации диссертация. [3]
Представленное выше более общее определение было впервые предложено в 2008 году в документе, опубликованном на конференции ECOOP . [8] Расширение этого термина было мотивировано необходимостью моделировать живые объекты как композиции других объектов; в этом смысле концепция была вдохновлена Smalltalk , который впервые выдвинул единую точку зрения, согласно которой все является объектом , и Jini , который первым выдвинул идею о том, что сервисы являются объектами . Применительно к живым распределенным объектам эта перспектива требует, чтобы их составные части, в том числе экземпляры распределенных многосторонних протоколов, используемых внутри для репликации состояния, также должны моделироваться как живые распределенные объекты. Потребность в единообразии подразумевает, что определение живого распределенного объекта должно унифицировать такие понятия, как живой веб-контент, потоки сообщений и экземпляры распределенных многосторонних протоколов.
Первая реализация концепции живых распределенных объектов, как это определено в документе ECOOP, [8] были живые распределенные объекты [9] платформа, разработанная Кшиштофом Островским из Корнельского университета. Платформа предоставила набор визуальных инструментов перетаскивания для составления иерархических документов, напоминающих веб-страницы и содержащих XML -сериализованные ссылки на живые объекты. Визуальный контент, такой как окна чата, общие рабочие столы и различные виды коллажей, можно создавать путем перетаскивания компонентов, представляющих пользовательские интерфейсы и экземпляры протоколов, в форму проекта и соединения их вместе. С момента его создания был разработан ряд расширений для встраивания живых распределенных объектов в Microsoft Office . документы [10] и для поддержки различных типов размещенного контента, такого как Карты Google. [11] По состоянию на март 2009 года платформа активно развивается ее создателями. [12] [13] [14] [15] [16] [17] [18] [19]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Островски К., Бирман К., Долев Д. и Сакода К. (2009). «Реализация надежных потоков событий в больших системах с помощью распределенных потоков данных и рекурсивного делегирования», 3-я Международная конференция ACM по распределенным системам, основанным на событиях (DEBS 2009) , Нэшвилл, Теннесси, США, 6–9 июля 2009 г., http://www .cs.cornell.edu/~krzys/krzys_debs2009.pdf
- ^ Островский К., Бирман К., Долев Д. (2009). «Программирование живых распределенных объектов с распределенными потоками данных», представлено на Международной конференции по объектно-ориентированному программированию, системам, языкам и приложениям (OOPSLA 2009) , http://www.cs.cornell.edu/~krzys/krzys_oopsla2009.pdf.
- ^ Jump up to: а б Островский, К. (2008). «Живые распределенные объекты», к.т.н. Диссертация, Корнельский университет, http://hdl.handle.net/1813/10881 .
- ^ Островски К. и Бирман К., «Расширяемая архитектура веб-сервисов для уведомлений в крупномасштабных системах», Международная конференция IEEE по веб-сервисам (ICWS 2006), Чикаго, Иллинойс, сентябрь 2006 г., https://ieeexplore. ieee.org/xpls/abs_all.jsp?arnumber=4032049 .
- ^ Островски К. и Бирман К., «Масштабируемая система групповой коммуникации для масштабируемого доверия», Первый семинар ACM по масштабируемым доверенным вычислениям (ACM STC 2006), Фэрфакс, Вирджиния, ноябрь 2006 г., http://portal.acm.org/citation.cfm?id=1179477 .
- ^ Островский, К. (2006). Масштабируемая многоадресная рассылка QuickSilver . Microsoft Research, Редмонд, Вашингтон, ноябрь 2006 г. http://www.researchchannel.org/prog/displayevent.aspx?rID=7870&fID=2276 .
- ^ Островский К., Бирман К. и Долев Д. (2007). «Живые распределенные объекты: поддержка активной сети», IEEE Internet Computing , ноябрь – декабрь 2007 г., 11(6):72-78, https://ieeexplore.ieee.org/document/4376231/;jsessionid=EF449367E7DB4958663B9131214CEAAD?isnumber= 4376216&arnumber=4376231 .
- ^ Jump up to: а б Островски К., Бирман К., Долев Д. и Анн Дж. (2008). «Программирование с использованием живых распределенных объектов», Труды 22-й Европейской конференции по объектно-ориентированному программированию , Пафос, Кипр, 7–11 июля 2008 г., Дж. Витек, редактор, Конспекты лекций по информатике , том. 5142, Springer-Verlag, Берлин, Гейдельберг, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536 .
- ^ "Дом" . liveobjects.cs.cornell.edu .
- ^ Анн Дж., Бирман К., Островски К. и ван Ренесс Р. (2008). «Использование живых распределенных объектов для автоматизации офиса», Материалы конференции ACM/IFIP/USENIX Middleware '08 Conference Companion , Левен, Бельгия, 1–05 декабря 2008 г., Companion '08 , ACM, Нью-Йорк, Нью-Йорк, 30–35, http://portal.acm.org/citation.cfm?id=1462735.1462743 .
- ^ http://liveobjects.cs.cornell.edu/community/index.html [ мертвая ссылка ]
- ^ Островский К. и Бирман К. (2009). «Хранение и доступ к живому гибридному контенту в облаке», 3-й международный семинар ACM SIGOPS по крупномасштабным распределенным системам и промежуточному программному обеспечению (LADIS 2009) , Биг Скай, Монтана, США. 11 октября 2009 г., http://www.cs.cornell.edu/~krzys/krzys_ladis2009.pdf
- ^ Акдоган А. и Полепалли С. (2008). «Живые карты», http://liveobjects.cs.cornell.edu/community/1/index.html.
- ^ Кашьяп Р. и Нагараджаппа Д. (2008). «Живые объекты Cornell Yahoo!», http://liveobjects.cs.cornell.edu/community/2/index.html
- ^ Донг, X. и Чжан, Z. (2008). «Интеграция живых объектов с веб-службой Flickr», http://liveobjects.cs.cornell.edu/community/3/index.html.
- ^ Пратик, У. (2008). «Живой объект Goole Earth», http://liveobjects.cs.cornell.edu/community/4/index.html
- ^ Гупта С. и Вора Х. (2008). «ALGE (Живая Google Планета Земля)», http://liveobjects.cs.cornell.edu/community/5/index.html
- ^ Махаджан Р. и Ваканкар С. (2008). «Распределенная Google Планета Земля», http://liveobjects.cs.cornell.edu/community/6/index.html.
- ^ Вадхва А., Санкар Х. и Субраманьян С. (2008). «Интерактивный интерфейс Google Earth», http://liveobjects.cs.cornell.edu/community/7/index.html.