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

Реакти́вні пото́ки (англ. Reactive Streams) — це ініціатива із запровадження стандарту для асинхронної потокової обробки із неблоковним зворотним тиском[1].

Основним завданням реактивних потоків є керування обміном потоковими даними через асинхронну межу — таку, як передача елементів до іншої нитки або пулу ниток — забезпечуючи, що одержуюча сторона не змушується буферизувати необмежену кількість даних. Іншими словами, зворотній тиск є невід’ємною частиною цієї моделі щоби дозволити чергам, які обслуговують взаємодію ниток бути обмеженими.

Задумано дозволити створення багатьох сумісних реалізацій, які в силу дотримання правил стандарту зможуть безпроблемно взаємодіяти, зберігаючи згадані переваги і характеристики вздовж усього графу обробки потоку.

Обсягом стандарту є мінімальний набір інтерфейсів, методів і протоколів, які описують необхідні операції та об'єкти для досягнення асинхронних потоків даних із неблокуючим зворотнім тиском. Предметно-орієнтована мова (DSL) або API цілеспрямовано були залишені за межами стандарту з метою заохочення і дозволу різних реалізацій.

Ініціатива реактивних потоків почалася наприкінці 2013 року між інженерами Netflix, Pivotal і Typesafe. Найперші обговорення відбулися у 2013 році між командами Play і Akka у Typesafe.[2][3] Typesafe є одним із основних розробників реактивних потоків.[4] Інші учасники включають Red Hat, Oracle, Twitter і spray.io[5] Ведеться робота, щоб зробити реалізацію реактивних потоків на Java частиною Java 9: Даг Лі, лідер JSR 166, запропонував[6] новий клас Flow[7] який реалізує інтерфейси описані у стандарті Реактивних потоків.[4][8]

30 квітня 2015 вийшла версія 1.0.0 реактивних потоків для JVM,[4][5][9] включно із Java API,[10] текстовою специфікацією,[11] TCK та прикладами реалізації. Існує ряд сумісних реалізацій, які перевірені за допомогою TCK на відповідність стандарту, перелічені у алфавітному порядку:

Інші реалізації включають Cassandra,[21] Elasticsearch,[22] Apache Kafka,[23] Parallel Universe Quasar,[24] Play Framework.[25]

Примітки

Ланки

  •  Ця стаття включає текст із http://www.reactive-streams.org/, опублікований під ліцензією CC0 1.0 Universal (CC0 1.0) Public Domain Dedication.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.