Jump to content

Реактивные потоки

Реактивные потоки
Первоначальный выпуск 15 мая 2015 г .; 9 лет назад ( 15 мая 2015 )
Стабильная версия
1.0.3 / 23 августа 2019 г .; 4 года назад ( 23.08.2019 )
Репозиторий github /реактивные-потоки /реактивные-потоки-jvm
Написано в Java (Scala, Groovy, Котлин), .NET
Веб-сайт реактивные потоки .org

Reactive Streams — это инициатива, направленная на создание обработки потоков стандарта асинхронной с неблокирующим обратным давлением. [1] [2]

Источник

[ редактировать ]

Реактивные потоки начались как инициатива в конце 2013 года между инженерами Netflix , Pivotal и Lightbend . Некоторые из первых обсуждений начались в 2013 году между командами Play и Akka в Lightbend. [3] [4] Lightbend — один из основных разработчиков Reactive Streams. [5] Среди других участников — Red Hat , Oracle , Twitter иspray.io. [6]

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

Цель спецификации — разрешить создание множества соответствующих реализаций , которые благодаря соблюдению правил смогут беспрепятственно взаимодействовать , сохраняя упомянутые преимущества и характеристики во всем графе обработки потокового приложения. Свободно доступный комплект совместимости технологий. [7] был разработан вместе со спецификацией, что позволяет разработчикам спецификации проверять, охватывают ли они все правила и требования, включая проверку потенциальных условий гонки .

Область применения Reactive Streams — это минимальный набор интерфейсов , методов и протоколов, описывающих необходимые операции и объекты для достижения асинхронных потоков данных с неблокирующим обратным давлением. [2] для конечных пользователей DSL привязки протоколов или API-интерфейсы намеренно исключены из рассмотрения, чтобы поощрять и обеспечивать возможность различных реализаций, которые потенциально используют разные языки программирования , чтобы оставаться максимально верными идиомам своей платформы.

Включение в стандарт Java

[ редактировать ]

Спецификация разработана с намерением в будущем включить ее в официальную стандартную библиотеку Java, если она окажется успешной и будет принята достаточным количеством библиотек и поставщиков.

Реактивные потоки были предложены стать частью Java 9 Дугом Ли , лидером JSR 166. [8] как новый класс Flow [9] это будет включать в себя интерфейсы, предоставляемые в настоящее время Reactive Streams. [5] [10] После успешного выпуска версии 1.0 Reactive Streams и растущего распространения предложение было принято, и Reactive Streams был включен в JDK9 через JEP -266. [10]

Принятие

[ редактировать ]

30 апреля 2015 г. была выпущена версия 1.0.0 Reactive Streams для JVM . [5] [6] [11] включая Java API , [12] текстовая спецификация , [13] TCK и примеры реализации . Он поставляется с множеством совместимых реализаций, проверенных TCK для версии 1.0.0, перечисленных в алфавитном порядке: [11]

Другие реализации включают Cassandra , [23] Эластичный поиск , [24] Апач Кафка , [25] Параллельная Вселенная Квазар, [26] Игровая платформа , [27] Оружейная палата. [28]

Spring 5 будет построен на Reactor Core, совместимом с Reactive Streams. Объявлено, что [29]

Amazon объявила, что ее Amazon Web Services SDK будет поддерживать Reactive Streams, обеспечивая возможности потоковой передачи в ее клиентских библиотеках в версии 2.0. [30]

Reactive Streams 1.0.1 выпущен 9 августа 2017 г. и включает различные улучшения точности спецификаций, улучшения TCK и другие разъяснения. Спецификация, а также интерфейсы остались полностью обратно совместимыми с версией 1.0.0, однако были направлены на упрощение внедрения для будущих разработчиков, а также на соответствие некоторым дополнительным требованиям, установленным OpenJDK . [31]

Порты и влияния

[ редактировать ]
  • Прямой порт спецификации, интерфейсов и TCK был доступен той же рабочей группе для платформы .NET . [32]
  • Когда язык Elixir представил свой потоковый API под названием GenStage, авторы выразили благодарность «[проектам] akka-streams и reactive-streams, которые предоставили нам рекомендации по реализации обмена между этапами, управляемого спросом». [33]
  1. ^ реактивные потоки.org
  2. ^ Перейти обратно: а б с Walls 2019 , стр. 243–245, §10.1.1 Определение реактивных потоков.
  3. ^ Путешествие в реактивные потоки
  4. ^ Интервью Reactive Streams 1.0.0
  5. ^ Перейти обратно: а б с Reactive Streams выпускает первую стабильную версию для JVM
  6. ^ Перейти обратно: а б Reactive Streams 1.0.0 – новый стандарт реактивной обработки данных
  7. ^ «Реактивные потоки TCK» . Гитхаб .
  8. ^ «Классы-кандидаты jdk9 Flow и SubmissionPublisher» . Архивировано из оригинала 20 января 2015 г. Проверено 23 декабря 2015 г.
  9. ^ "java.util.concurrent.Flow" . Архивировано из оригинала 3 февраля 2016 г. Проверено 23 декабря 2015 г.
  10. ^ Перейти обратно: а б JEP 266: дополнительные обновления параллелизма
  11. ^ Перейти обратно: а б Reactive Streams 1.0.0 уже здесь!
  12. ^ Java API
  13. ^ Реактивные потоки для спецификации JVM
  14. ^ InfoQ: Реактивные потоки с Akka Streams
  15. ^ «Принципы проектирования Akka Streams» . Архивировано из оригинала 12 января 2016 г. Проверено 23 декабря 2015 г.
  16. ^ Java-драйвер MongoDB Reactive Streams
  17. ^ Ratpack: API реактивных потоков
  18. ^ Доступен Reactor 2.0.0.RC1 со встроенной поддержкой Reactive Streams!
  19. ^ Расширенный RxJava: API Reactive-Streams (часть 1)
  20. ^ Замечание 3: Реактивные потоки для асинхронного доступа к базе данных в Scala
  21. ^ Слик 3.0.0
  22. ^ Интеграция реактивных потоков Vert.x
  23. ^ Доступ к Кассандре реактивным способом
  24. ^ elastic4s — неблокирующий типобезопасный клиент DSL и Scala для Elasticsearch.
  25. ^ Реактивные потоки для Apache Kafka
  26. ^ «Квазар и реактивные потоки» . Архивировано из оригинала 4 октября 2015 г. Проверено 24 декабря 2015 г.
  27. ^ Play Framework — интеграция с реактивными потоками (экспериментальная)
  28. ^ Армерия - Полностью асинхронная и реактивная
  29. ^ Реактивная пружина
  30. ^ «Объявление о предварительной версии AWS SDK для Java 2.0 для разработчиков» .
  31. ^ «Объявление о выпуске Reactive Streams 1.0.1» .
  32. ^ «Реактивные потоки .NET» . Гитхаб .
  33. ^ «Блог Elixir: анонс GenStage» .
  •  В этой статье использован текст с сайта www. .reactive-streams .org , который выпущен под лицензией CC0 1.0 Universal (CC0 1.0) Public Domain .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2ce4eba84d017343910775df3829838a__1686089580
URL1:https://arc.ask3.ru/arc/aa/2c/8a/2ce4eba84d017343910775df3829838a.html
Заголовок, (Title) документа по адресу, URL1:
Reactive Streams - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)