欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Reactive Programming入門(mén)概念詳解

 更新時(shí)間:2022年09月28日 16:24:58   作者:暗里著迷for_you  
這篇文章主要為大家介紹了Reactive Programming入門(mén)概念詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

為了應(yīng)對(duì)高并發(fā)環(huán)境下的服務(wù)端編程,xx提出了一個(gè)實(shí)現(xiàn)異步編程的方案 -Reactive Programming,中文名稱(chēng)反應(yīng)式編程。反應(yīng)式編程(reactive programming)并不是一個(gè)新的概念,也不是一個(gè)新的技術(shù),很早之前就被提出來(lái)了。

先從幾個(gè)概念入門(mén)說(shuō)起:

  • Reactive Programming
  • Reactive Streams
  • Reactor
  • Webflux

Reactive Programming

反應(yīng)式編程 (reactive programming) 是一種基于數(shù)據(jù)流 (data stream) 和 變化傳遞 (propagation of change) 的聲明式 (declarative) 的編程范式。

響應(yīng)式編程使用三個(gè)核心概念:數(shù)據(jù)流,變化傳遞和異步觀察。

換句話說(shuō):使用異步數(shù)據(jù)流進(jìn)行編程,這意味著可以在編程語(yǔ)言中很方便地表達(dá)靜態(tài)或動(dòng)態(tài)的數(shù)據(jù)流,而相關(guān)的計(jì)算模型會(huì)自動(dòng)將變化的值通過(guò)數(shù)據(jù)流進(jìn)行傳播。反應(yīng)式編程提高了代碼的抽象級(jí)別,可以只關(guān)注定義了業(yè)務(wù)邏輯的那些相互依賴的事件。

Reactive Streams

Reactive Streams :The purpose of Reactive Streams is to provide a standard for asynchronous stream processing with non-blocking backpressure。

Reactive Streams 的目的是為具有非阻塞背壓的異步流處理提供標(biāo)準(zhǔn)。

對(duì)于Java程序員,Reactive Streams是一個(gè)API。Reactive Streams為我們提供了Java中的Reactive Programming的通用API。

Reactive Streams API的范圍是找到一組最小的接口,方法和協(xié)議,這些接口,方法和協(xié)議將描述必要的操作和實(shí)體,從而實(shí)現(xiàn)具有非阻塞背壓的異步數(shù)據(jù)流。

Reactive Streams API中如下四個(gè)接口:(后面文章詳細(xì))

  • Publisher 發(fā)布者(生產(chǎn)者)
public interface Publisher<T> {    
    public void subscribe(Subscriber<? super T> s);
}
  • Subscriber訂閱者(消費(fèi)者)
public interface Subscriber<T> {    
    public void onSubscribe(Subscription s);    
    public void onNext(T t);    
    public void onError(Throwable t);    
    public void onComplete();
}
  • Subscription 訂閱
public interface Subscription {   
    public void request(long n);    
    public void cancel();
}
  • Processor 處理者
public interface Processor<T, R> extends Subscriber<T>, Publisher<R> {
}

Spring Reactor

Reactor 是第四代響應(yīng)式庫(kù),基于Reactive Streams規(guī)范,用于在 JVM 上構(gòu)建非阻塞應(yīng)用程序。是Spring提供的非阻塞式響應(yīng)式編程框架,實(shí)現(xiàn)了Reactive Streams規(guī)范而已

  • reactor-core: Reactor 完全無(wú)阻塞,并提供高效的管理,它直接與Java的函數(shù)式API,CompletableFuture,Stream配合使用
    • [0|1| N]序列:Reactore提供了兩個(gè)響應(yīng)式和可組合的API,Flux 和 Mono。

Flux 表示的是包含 0 到 N 個(gè)元素的異步序列。在該序列中可以包含三種不同類(lèi)型的消息通知:正常的包含元素的消息、序列結(jié)束的消息和序列出錯(cuò)的消息。當(dāng)消息通知產(chǎn)生時(shí),訂閱者中對(duì)應(yīng)的方法 onNext(), onComplete()和 onError()會(huì)被調(diào)用。Mono 表示的是包含 0 或者 1 個(gè)元素的異步序列。該序列中同樣可以包含與 Flux 相同的三種類(lèi)型的消息通知。Flux 和 Mono 之間可以進(jìn)行轉(zhuǎn)換。對(duì)一個(gè) Flux 序列進(jìn)行計(jì)數(shù)操作,得到的結(jié)果是一個(gè) Mono對(duì)象。把兩個(gè) Mono 序列合并在一起,得到的是一個(gè) Flux 對(duì)象。

  • Non-Blocking IO: Reactor 為HTTP(包括websocket),TCP和UDP提供背壓就緒的網(wǎng)絡(luò)引擎。
  • webflux

Spring 產(chǎn)品組合提供了兩個(gè)并行堆棧。 一種是基于帶有 Spring MVC 和 Spring Data 結(jié)構(gòu)的 Servlet API。 另一個(gè)是完全反應(yīng)式堆棧,它利用了 Spring WebFlux 和 Spring Data 的反應(yīng)式存儲(chǔ)庫(kù)。 如下技術(shù)棧:Spring官方提供

數(shù)據(jù)庫(kù):以一種反應(yīng)的方式訪問(wèn)和處理數(shù)據(jù)是非常重要的。MongoDB、Redis和Cassandra都有原生的Spring數(shù)據(jù)響應(yīng)支持。許多關(guān)系數(shù)據(jù)庫(kù)(Postgres、Microsoft SQL Server、MySQL、H2和GoogleSpanner)通過(guò)R2DBC提供了反應(yīng)性支持。

在消息傳遞的世界中,Spring Cloud Stream還支持對(duì)RabbitMQ和Kafka等平臺(tái)的反應(yīng)性訪問(wèn)。

Reactive Streams、Reactor和WebFlux 區(qū)別?

上面介紹了反應(yīng)式編程的一些概念。三者的關(guān)系:

  • Reactive Streams 是一套反應(yīng)式編程標(biāo)準(zhǔn)和規(guī)范;
  • Reactor 是基于 Reactive Streams 一套反應(yīng)式編程框架;
  • WebFlux 以 Reactor 為基礎(chǔ),實(shí)現(xiàn) Web 領(lǐng)域的反應(yīng)式編程框架。

參考:

以上就是Reactive Programming入門(mén)概念詳解的詳細(xì)內(nèi)容,更多關(guān)于Reactive Programming入門(mén)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java 在PDF中添加條形碼的兩種方法

    Java 在PDF中添加條形碼的兩種方法

    本文就將通過(guò)使用Java程序來(lái)演示如何在PDF文檔中添加Codebar、Code128A和Code39條形碼。通過(guò)實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-03-03
  • 十個(gè)最常見(jiàn)的Java字符串問(wèn)題(翻譯)

    十個(gè)最常見(jiàn)的Java字符串問(wèn)題(翻譯)

    這篇文章主要介紹了十個(gè)最常見(jiàn)的Java字符串問(wèn)題(翻譯),需要的朋友可以參考下
    2015-03-03
  • idea2019版與maven3.6.2版本不兼容的解決方法

    idea2019版與maven3.6.2版本不兼容的解決方法

    這篇文章主要介紹了idea2019版與maven3.6.2版本不兼容的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • SpringBoot整合EasyCaptcha實(shí)現(xiàn)圖形驗(yàn)證碼功能

    SpringBoot整合EasyCaptcha實(shí)現(xiàn)圖形驗(yàn)證碼功能

    這篇文章主要介紹了SpringBoot整合EasyCaptcha實(shí)現(xiàn)圖形驗(yàn)證碼功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-02-02
  • Java如何實(shí)現(xiàn)圖片裁剪預(yù)覽功能

    Java如何實(shí)現(xiàn)圖片裁剪預(yù)覽功能

    通常注冊(cè)賬戶上傳用戶圖像時(shí)需要進(jìn)行預(yù)覽,這篇文章就是教我們?nèi)绾斡?Java 實(shí)現(xiàn)圖片裁剪預(yù)覽功能,需要的朋友可以參考下
    2015-07-07
  • Mac下用Java調(diào)用c/c++的思路詳解

    Mac下用Java調(diào)用c/c++的思路詳解

    這篇文章主要介紹了Mac下用Java調(diào)用c/c++的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 解決idea出現(xiàn)的java.lang.OutOfMemoryError:?Java?heap?space的問(wèn)題

    解決idea出現(xiàn)的java.lang.OutOfMemoryError:?Java?heap?space的問(wèn)題

    我們?cè)谑褂胕dea的時(shí)候經(jīng)常會(huì)遇到一些問(wèn)題,本文介紹了如何解決idea出現(xiàn)的java.lang.OutOfMemoryError:?Java?heap?space的問(wèn)題,文中有相關(guān)的圖文示例,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java8內(nèi)存模型PermGen Metaspace實(shí)例解析

    Java8內(nèi)存模型PermGen Metaspace實(shí)例解析

    這篇文章主要介紹了Java8內(nèi)存模型PermGen Metaspace實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Spring?代碼技巧梳理總結(jié)讓你愛(ài)不釋手

    Spring?代碼技巧梳理總結(jié)讓你愛(ài)不釋手

    這篇文章主要分享了Spring?代碼技巧梳理總結(jié),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • Spring框架中ImportBeanDefinitionRegistrar的應(yīng)用詳解

    Spring框架中ImportBeanDefinitionRegistrar的應(yīng)用詳解

    這篇文章主要介紹了Spring框架中ImportBeanDefinitionRegistrar的應(yīng)用詳解,如果實(shí)現(xiàn)了ImportSelector接口,在配置類(lèi)中被@Import加入到Spring容器中以后,Spring容器就會(huì)把ImportSelector接口方法返回的字符串?dāng)?shù)組中的類(lèi)new出來(lái)對(duì)象然后放到工廠中去,需要的朋友可以參考下
    2024-01-01

最新評(píng)論