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

Распределенный поток данных (также сокращенно распределенный поток ) относится к набору событий в распределенном приложении или протоколе .

Распределенные потоки данных служат цели, аналогичной переменным или параметрам методов в языках программирования, таких как Java., в том смысле, что они могут представлять состояние, которое хранится или передается на уровне программного обеспечения. В отличие от переменных или параметров, которые представляют собой единицу состояния, находящуюся в одном месте, распределенные потоки являются динамическими и распределенными: они одновременно появляются в нескольких местах в сети в одно и то же время. Таким образом, распределенные потоки - более естественный способ моделирования семантики и внутренней работы определенных классов распределенных систем. В частности, абстракция распределенного потока данных использовалась как удобный способ выражения логических отношений высокого уровня между частями распределенных протоколов. [1] [2] [3]

Неформальные свойства [ править ]

Распределенный поток данных удовлетворяет следующим неформальным свойствам.

  • Асинхронный , неблокирующий и односторонний . Каждое событие представляет собой единственный экземпляр неблокирующего , одностороннего, асинхронного вызова метода или другой формы явной или неявной передачи сообщений между двумя уровнями или программными компонентами. Например, каждое событие может представлять собой одиночный запрос на групповую передачу в пакет , выданном уровнем приложений к основному многоадресному протоколу. Требование, чтобы события были односторонними и асинхронными, важно. Вызов методов, которые могут возвращать результаты, обычно представляются двумя отдельными потоками: один поток представляет запросы, а другой поток представляет ответы.
  • Однородный , однонаправленный и однородный . Все события в распределенном потоке служат одной и той же функциональной и логической цели и связаны друг с другом; как правило, мы требуем, чтобы они представляли вызовы методов или обмен сообщениями между экземплярами одних и тех же функциональных уровней или экземплярами одних и тех же компонентов , но, возможно, на разных узлах в компьютерной сети . Кроме того, все события должны течь в одном направлении (т. Е. Один тип слоя или компонента всегда производит, а другой всегда потребляет события) и нести один и тот же тип полезной нагрузки.. Например, набор событий, который включает все запросы многоадресной рассылки, отправленные одним и тем же прикладным уровнем одному и тому же протоколу многоадресной рассылки, является распределенным потоком. С другой стороны, набор событий, который включает в себя многоадресные запросы, сделанные разными приложениями к разным протоколам многоадресной рассылки, не будет считаться распределенным потоком, как и набор событий, представляющих многоадресные запросы, а также подтверждения и уведомления об ошибках.
  • Параллельный , непрерывный и распределенный . Поток обычно включает в себя все события, которые протекают между двумя уровнями программного обеспечения, одновременно в разных местах и ​​в течение конечного или бесконечного периода времени. Таким образом, в общем случае события в распределенном потоке распределены как в пространстве (они происходят в разных узлах), так и во времени (происходят в разное время). Например, поток многоадресных запросов будет включать все такие запросы, сделанные экземплярами данного приложения на разных узлах; обычно такой поток будет включать в себя события, которые происходят на всех узлах, участвующих в данном протоколе многоадресной передачи. Поток, в котором все события происходят в одном узле, будет считаться вырожденным.

Официальное представительство [ править ]

Формально мы представляем каждое событие в распределенном потоке как четверку вида (x, t, k, v), где x - это место (например, сетевой адрес физического узла), в котором происходит событие, t равно время, в которое это происходит, k - это версия или порядковый номер, идентифицирующий конкретное событие, а v - значение, которое представляет полезную нагрузку события (например, все аргументы, переданные в вызове метода). Каждый распределенный поток представляет собой (возможно, бесконечный) набор таких четверок, который удовлетворяет следующим трем формальным свойствам.

  • Для любого конечного момента времени t в потоке может быть только конечное число событий, которые происходят в момент времени t или раньше. Это означает, что в каком потоке всегда можно указать момент времени, когда поток возник. Сам поток может быть бесконечным; в таком случае в любой момент времени в потоке появится новое событие.
  • Для любой пары событий e_1 и e_2, которые происходят в одном месте, если e_1 происходит раньше, чем e_2, то номер версии в e_1 также должен быть меньше, чем у e_2.
  • Для любой пары событий e_1 и e_2, которые происходят в одном месте, если два события имеют одинаковые номера версий, они также должны иметь одинаковые значения.

В дополнение к вышесказанному, потоки могут иметь ряд дополнительных свойств.

  • Последовательность . Распределенный поток называется согласованным, если события с одной и той же версией всегда имеют одинаковое значение, даже если они происходят в разных местах. Согласованные потоки обычно представляют собой различные виды глобальных решений, принимаемых протоколом или приложением.
  • Монотонность . Распределенный поток называется слабо монотонным, если для любой пары событий e_1 и e_2, которые происходят в одном и том же месте, если e_1 имеет меньшую версию, чем e_2, то e_1 должен иметь меньшее значение, чем e_2. Распределенный поток называется сильно монотонным (или просто монотонным ), если это верно даже для пар событий e_1 и e_2, которые происходят в разных местах. Сильно монотонные потоки всегда согласованы. Обычно они представляют собой разного рода необратимые решения. Слабо монотонные потоки могут быть, а могут и не быть согласованными.

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

  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). «Язык распределенных потоков данных для многосторонних протоколов», 5-й семинар ACM SIGOPS по языкам программирования и операционным системам (PLOS 2009) , Биг Скай, Мт, США. 11 октября 2009 г., http://www.cs.cornell.edu/~krzys/krzys_plos2009.pdf
  3. Перейти ↑ Ostrowski, K., Birman, K., Dolev, D. (2009). «Программирование живых распределенных объектов с распределенными потоками данных», представленный на Международной конференции по объектно-ориентированному программированию, системам, языкам и приложениям (OOPSLA 2009) , http://www.cs.cornell.edu/~krzys/krzys_oopsla2009.pdf