響應式程式設計(一)什麼是響應式程式設計

2021-09-29 18:18:05 字數 1457 閱讀 1812

響應式程式設計是相對於阻塞式程式設計,我們在這裡主要講的是springboot2中響應式webflux

了解 webflux,首先了解下什麼是 reactive streams。reactive streams 是 jvm 中面向流的庫標準和規範:

處理可能無限數量的元素

按順序處理

元件之間非同步傳遞

強制性非阻塞背壓(backpressure)

背壓是一種常用策略,使得發布者擁有無限制的緩衝區儲存元素,用於確保發布者發布元素太快時,不會去壓制訂閱者。

一般由以下組成:

發布者:發布元素到訂閱者

訂閱者:消費元素

訂閱:在發布者中,訂閱被建立時,將與訂閱者共享

處理器:發布者與訂閱者之間處理資料

有了 reactive streams 這種標準和規範,利用規範可以進行響應式程式設計。那再了解下什麼是 reactive programming 響應式程式設計。響應式程式設計是基於非同步和事件驅動的非阻塞程式,只是垂直通過在 jvm 內啟動少量執行緒擴充套件,而不是水平通過集群擴充套件。這就是乙個程式設計範例,具體專案中如何體現呢?

響應式專案程式設計實戰中,通過基於 reactive streams 規範實現的框架 reactor 去實戰。reactor 一般提供兩種響應式 api :

mono:實現發布者,並返回 0 或 1 個元素

flux:實現發布者,並返回 n 個元素

spring webflux

spring boot webflux 就是基於 reactor 實現的。spring boot 2.0 包括乙個新的 spring-webflux 模組。該模組包含對響應式 http 和 websocket 客戶端的支援,以及對 rest,html 和 websocket 互動等程式的支援。一般來說,spring mvc 用於同步處理,spring webflux 用於非同步處理。

spring boot webflux 有兩種程式設計模型實現,一種類似 spring mvc 註解方式,另一種是使用其功能性端點方式。註解的會在第二篇文章講到,下面快速入門用 spring webflux 功能性方式實現。

常用的 spring boot 2.0 webflux 生產的特性如下:

響應式 api

程式設計模型

適用性內嵌容器

starter 元件

還有對日誌、web、訊息、測試及擴充套件等支援。

reactor 框架是 spring boot webflux 響應庫依賴,通過 reactive streams 並與其他響應庫互動。提供了 兩種響應式 api:mono 和 flux。一般是將 publisher 作為輸入,在框架內部轉換成 reactor 型別並處理邏輯,然後返回 flux 或 mono 作為輸出。

web:spring webflux

模板引擎:thymeleaf

儲存:redis、mongodb、cassandra,不支援 mysql

內嵌容器:tomcat、jetty、undertow

響應式程式設計 什麼是響應式程式設計

那麼什麼是響應式程式設計,來看個簡單的例子 var i 1,j 2,k i j print k k k 3 i 3 j 4 print k k k 3在這裡把i,j,k當成某個狀態,k是j,i兩個狀態的組合,正常的程式設計中,在計算了k的狀態之後,再去改變j,i的狀態是不會影響到c的狀態的。所以在正...

響應式程式設計

react中提出乙個重要思想 狀態改變則ui隨之自動改變,而react框架本身就是響應使用者狀態改變的事件而執行重新構建使用者介面的工作,這就是典型的響應式程式設計正規化,下面我們總結一下react中響應式原理 開發者只需關注狀態轉移 資料 當狀態發生變化,react框架會自動根據新的狀態重新構建u...

函式式程式設計和響應式程式設計

在程式開發中,a b c 賦值之後,b或者c的值變化後,a的值不會跟著變化。響應式程式設計目標就是,如果b或者c的數值發生變化,a的數值會同時發生變化。函式式程式設計是一系列被不公平對待的程式設計思想的保護傘,它的核心思想是,它是一種將程式看成是數學方法的求值 不會改變狀態 不會產生 後面我們馬上會...