Reactive - 01 - 簡介

翻譯自: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)。
01_PublisherSubscriber.png

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)的概念,將運算符鏈接在一起,以描述在每個階段對數據應用什么處理。
應用運算符將返回一個新的中間發布者(實際上,它可以被視為運算符上游的訂閱者和下游的發布者)。數據的最終形式在
最終訂閱者中結束,該訂閱者從用戶角度定義了要做的事情。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容