翻譯自:https://tech.io/playgrounds/929/reactive-programming-with-reactor-3/Intro
Introduction to Reactive Programming
Reactor 3 is a library built around the Reactive Streams
specification, bringing the paradigm of Reactive Programming
on the JVM.
Reactor 3是一個圍繞反應流規范構建的庫,在JVM上引入了反應式編程的范例。
In this course, you'll familiarize with the Reactor API.
So let's make a quick introduction to the more general concepts
in Reactive Streams and Reactive Programming.
在本課程中,您將熟悉Reactor API。讓我們快速介紹一下反應流和反應編程中更一般的概念。
Why
Reactive Programming is a new paradigm in which you use declarative code
(in a manner that is similar to functional programming) in order to build
asynchronous processing pipelines. It is an event-based model where data
is pushed to the consumer, as it becomes available: we deal with asynchronous
sequences of events.
反應式編程是一種新的范式,在這種范式中,您使用聲明性代碼(以類似于函數式編程的方式)來構建異步處理管道。
它是一種基于事件的模型,當數據可用時,數據被推送到消費者手中:我們以異步事件序列來處理。
This is important in order to be more efficient with resources and increase
an application's capacity to serve large number of clients, without the
headache of writing low-level concurrent or and/or parallelized code.
為了更有效地利用資源,提高應用程序為大量客戶機服務的能力,而不必編寫低級并發或/或并行代碼,這一點很重要。
By being built around the core pillars of being fully asynchronous and non-blocking,
Reactive Programming is an alternative to the more limited ways of doing asynchronous
code in the JDK: namely Callback based APIs and Future
.
通過圍繞完全異步和非阻塞的核心支柱構建,反應式編程是JDK中執行異步代碼更有限方法的替代方法:
即基于Callback的API和Future。
It also facilitates composition, which in turn makes asynchronous code more
readable and maintainable.
它還促進了組合,從而使異步代碼更具可讀性和可維護性。
Reactive Streams
The Reactive Streams specification is an industry-driven effort to standardize
Reactive Programming libraries on the JVM, and more importantly specify how they
must behave so that they are interoperable. Implementors include Reactor 3 but also
RxJava from version 2 and above, Akka Streams, Vert.x and Ratpack.
反應流規范是一項行業驅動的工作,旨在標準化JVM上的反應式編程庫,更重要的是指定它們的行為方式,
以使它們具有互操作性。實現者包括Reactor 3,也包括RxJava版本2及更高版本,Akka Streams,Vert.x和Ratpack。
It contains 4 very simple interfaces as well as a TCK, which shouldn't be overlooked
since it is the rules of the specification that bring the most value to it.
它包含4個非常簡單的接口以及一個TCK,這不應該被忽視,因為規范的規則為它帶來了最大的價值。
From a user perspective however, it is fairly low-level. Reactor 3 aims at offering an
higher level API that can be leverage in a large breadth of situations, building it on
top of Reactive Streams Publisher
.
然而,從用戶的角度來看,它是相當低級的。Reactor 3旨在提供一種更高級別的API,該API可以在廣泛的情況下使用,
將其構建在反應流Publisher的基礎上。
Interactions
In reactive stream sequences, the source Publisher
produces data. But by default,
it does nothing until a Subscriber
has registered (subscribed), at which point
it will push data to it.
在反應流序列中,源Publisher(發布者)生成數據。但默認情況下,在Subscriber(訂閱者)注冊(訂閱)之前,
它什么也不做,訂閱發生時它(Publisher)會將數據推送到它(Subscriber)。
Reactor adds the concept of operators, which are chained together to describe
what processing to apply at each stage to the data. Applying an operator returns a new
intermediate Publisher
(in fact it can be thought of as both a Subscriber to the operator
upstream and a Publisher for downstream). The final form of the data ends up in the final
Subscriber
that defines what to do from a user perspective.
Reactor增加了運算符(operators)的概念,將運算符鏈接在一起,以描述在每個階段對數據應用什么處理。
應用運算符將返回一個新的中間發布者(實際上,它可以被視為運算符上游的訂閱者和下游的發布者)。數據的最終形式在
最終訂閱者中結束,該訂閱者從用戶角度定義了要做的事情。