真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

(10)響應(yīng)式宣言、響應(yīng)式系統(tǒng)與響應(yīng)式編程——響應(yīng)式Spring的道法術(shù)器

本系列文章索引《響應(yīng)式Spring的道法術(shù)器》
前情提要 響應(yīng)式編程 | 響應(yīng)式流

創(chuàng)新互聯(lián)建站專注于循化企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站建設(shè)。循化網(wǎng)站建設(shè)公司,為循化等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

1.5 響應(yīng)式系統(tǒng)

1.5.1 響應(yīng)式宣言

關(guān)注“響應(yīng)式”的朋友不難搜索到關(guān)于“響應(yīng)式宣言”的介紹,先上圖:

(10)響應(yīng)式宣言、響應(yīng)式系統(tǒng)與響應(yīng)式編程——響應(yīng)式Spring的道法術(shù)器

這張圖凝聚了許多大神的智慧和經(jīng)驗(yàn),見官網(wǎng),中文版官網(wǎng),如果你認(rèn)可這個(gè)宣言的內(nèi)容,還可以簽下你的大名。雖然這些內(nèi)容多概念而少實(shí)戰(zhàn),讓人感覺是看教科書,但是字字千金,不時(shí)看一看都會(huì)有新的體會(huì)和收獲。

這也是新時(shí)代男朋友的行為準(zhǔn)則:

  • Responsive,要及時(shí)響應(yīng),24小時(shí)在線,不準(zhǔn)不接電話,微信回復(fù)時(shí)間要在5分鐘以內(nèi);
  • 如何做到Responsive呢,首先要Resilient,就是無論如何要有回應(yīng)。即使在玩LOL,也要接電話,哪怕正在聯(lián)合國演講,那么也要設(shè)置好“對(duì)不起寶貝兒,稍后打給你么么噠~”的自動(dòng)回復(fù);
  • 做到Responsive的另一點(diǎn)是Elastic,要彈性應(yīng)對(duì)大量命令的到來。當(dāng)奉天承運(yùn)的圣旨過多時(shí)完不成怎么辦?對(duì)不起,不存在的,如果學(xué)不會(huì)三頭六臂,那就拉幾個(gè)好友幫忙;
  • 圣旨是通過異步方式傳遞的(Message Driven),給花店打電話訂花、到蛋糕店訂蛋糕等,別忘了購物車?yán)锏摹跋㈥?duì)列”要及時(shí)處理嘍~ 這些訂單都是具有一定格式和目的地的消息,然后異步等待快遞上門。

以響應(yīng)式系統(tǒng)方式構(gòu)建的系統(tǒng)更加靈活,松耦合和可擴(kuò)展。這使得它們更容易開發(fā),而且更加擁抱變化。及時(shí)地響應(yīng),以保證良好的用戶體驗(yàn)。系統(tǒng)錯(cuò)誤和異常在所難免,當(dāng)異常出現(xiàn)時(shí),要優(yōu)雅地處理之,不要任其蔓延、甚至到達(dá)用戶眼前。

關(guān)于宣言的具體內(nèi)容官網(wǎng)上很詳細(xì),就不多贅述了。

從落地方面,我們不難想到一些具體技術(shù)來支撐響應(yīng)式宣言的目標(biāo):

  • 比如如今比較火熱的云原生和DevOps的理念與實(shí)踐,以及更早一些的自動(dòng)化運(yùn)維,都有助于讓系統(tǒng)更加Elastic,不過系統(tǒng)架構(gòu)的微服務(wù)化也是功不可沒;
  • 類似于Hystrix的熔斷器(Circuit Breaker)使得系統(tǒng)更加Resilient,因?yàn)樗軌蚣皶r(shí)將服務(wù)異常遏制在可控范圍內(nèi),避免雪崩;而類似kubernetes的云原生應(yīng)用能夠及時(shí)發(fā)現(xiàn)和重建系統(tǒng)中的異常服務(wù);
  • 而類似RabbitMQ、ActiveMQ這樣的消息隊(duì)列產(chǎn)品有助于構(gòu)建消息驅(qū)動(dòng)的系統(tǒng),并發(fā)揮解耦、提速、廣播、削峰的作用;
  • 消息驅(qū)動(dòng)有利于系統(tǒng)的彈性和可靠性,彈性和可靠性又使得系統(tǒng)的響應(yīng)更加及時(shí);
  • 等等。

1.5.2 響應(yīng)式編程與響應(yīng)式系統(tǒng)

響應(yīng)式宣言是一組架構(gòu)與設(shè)計(jì)原則,符合這些原則的系統(tǒng)可以認(rèn)為是響應(yīng)式的系統(tǒng)。而響應(yīng)式系統(tǒng)與響應(yīng)式編程是不同層面的內(nèi)容。

看到網(wǎng)上有些文章在介紹RxJava、Reactor等響應(yīng)式編程技術(shù)的時(shí)候,會(huì)用響應(yīng)式宣言來引出話題,稍微有點(diǎn)驢唇對(duì)馬嘴的感覺(^_^)。響應(yīng)式系統(tǒng)(或響應(yīng)式宣言)與響應(yīng)式編程又是一對(duì)容易被揉在一起用的兩個(gè)術(shù)語(上一對(duì)容易被混用的術(shù)語是“響應(yīng)式編程RP”和“函數(shù)響應(yīng)式編程FRP”,見1.3.1 lambda與函數(shù)式),它們從關(guān)系上看雖然不如“雷鋒”和“雷峰塔”、Java和JavaScript那么遠(yuǎn),但并不存在必然的因果關(guān)系。

作為《響應(yīng)式宣言》的作者,Jonas Bonér和Viktor Klang解釋了響應(yīng)式編程與響應(yīng)式系統(tǒng)的區(qū)別與聯(lián)系(“Linux中國”上有翻譯版),其中也有對(duì)響應(yīng)式宣言四個(gè)原則的解讀,值得學(xué)習(xí)。我從中總結(jié)了一些二者的不同點(diǎn):

1)戰(zhàn)術(shù)與戰(zhàn)略的區(qū)別

響應(yīng)式編程是異步編程下的一個(gè)子集,是一種范式,有具體的開發(fā)庫,側(cè)重于由信息/數(shù)據(jù)流而不是命令式的控制流來推動(dòng)邏輯的前進(jìn)。

響應(yīng)式宣言是一組設(shè)計(jì)原則,一種關(guān)于分布式環(huán)境下系統(tǒng)架構(gòu)與設(shè)計(jì)的思考方式,響應(yīng)式系統(tǒng)是符合這一架構(gòu)風(fēng)格的系統(tǒng)。

2)事件驅(qū)動(dòng)與消息驅(qū)動(dòng)的區(qū)別

響應(yīng)式編程——專注于短時(shí)間的數(shù)據(jù)流鏈條上的計(jì)算——因此傾向于事件驅(qū)動(dòng);而響應(yīng)式系統(tǒng)——關(guān)注于通過分布式系統(tǒng)的通信和協(xié)作所得到的彈性和可靠性——?jiǎng)t是消息驅(qū)動(dòng)的。

響應(yīng)式宣言中從定義上闡述了消息驅(qū)動(dòng)與事件驅(qū)動(dòng)的不同:

一條消息就是一則被送往一個(gè)明確目的地的數(shù)據(jù)。一個(gè)事件則是達(dá)到某個(gè)給定狀態(tài)的組件發(fā)出的一個(gè)信號(hào)。在一個(gè)消息驅(qū)動(dòng)系統(tǒng)中,可尋址到的接收者等待消息的到來然后響應(yīng)它,否則保持休眠狀態(tài)。在一個(gè)事件驅(qū)動(dòng)系統(tǒng)中,通知的監(jiān)聽者被綁定到消息源上,這樣當(dāng)消息被發(fā)出時(shí)它就會(huì)被調(diào)用。這意味著一個(gè)事件驅(qū)動(dòng)系統(tǒng)專注于可尋址的事件源而消息驅(qū)動(dòng)系統(tǒng)專注于可尋址的接收者。

3)組件范圍與系統(tǒng)范圍的區(qū)別

響應(yīng)式編程的“活動(dòng)范圍”是在組件內(nèi)的,是一種管理組件或服務(wù)內(nèi)部邏輯和數(shù)據(jù)流的技術(shù),即使像1.4.2節(jié)中那樣數(shù)據(jù)流從服務(wù)B向服務(wù)A的流動(dòng),也并非跨服務(wù)的消息傳遞,只是基于API的調(diào)用而已。

響應(yīng)式系統(tǒng),強(qiáng)調(diào)組件/服務(wù)間的信息交流,并通過響應(yīng)式宣言提供了一種處理分布式系統(tǒng)彈性與可靠性的原則,因此是面向分布式的系統(tǒng)范圍的。

4)空間解耦能力的區(qū)別

正如前邊介紹到的異步調(diào)用方式那樣,事件驅(qū)動(dòng)的響應(yīng)式編程側(cè)重于時(shí)間上的解耦,從而在技術(shù)層面提供了一種更高性能的并發(fā)方式。然而其范圍限定了它不易于實(shí)現(xiàn)空間上的解耦。

消息驅(qū)動(dòng)的異步性使得響應(yīng)式系統(tǒng)既能夠在時(shí)間上解耦,還具有空間的解耦能力。服務(wù)間不僅可以通過消息隊(duì)列實(shí)現(xiàn)分布式協(xié)作,還可以根據(jù)負(fù)載實(shí)現(xiàn)單個(gè)服務(wù)的彈性伸縮,從而實(shí)現(xiàn)響應(yīng)式宣言中Elastic的能力。

5)總結(jié)

響應(yīng)式編程技術(shù)通常用于在單個(gè)節(jié)點(diǎn)或服務(wù)中對(duì)數(shù)據(jù)流進(jìn)行異步非阻塞的處理。當(dāng)有多個(gè)結(jié)點(diǎn)時(shí),就需要認(rèn)真考量數(shù)據(jù)一致性(data consistency)、跨結(jié)點(diǎn)溝通(cross-node communication)、協(xié)調(diào)(coordination)、版本控制(versioning)、編排(orchestration)、錯(cuò)誤管理(failure management)、關(guān)注與責(zé)任(concerns and responsibilities)分離等等的內(nèi)容——這些都是響應(yīng)式系統(tǒng)架構(gòu)要考慮的內(nèi)容。

類似的,Spring WebFlux是一種響應(yīng)式編程框架,用于開發(fā)響應(yīng)式應(yīng)用,而Spring Cloud不僅是更是一套適應(yīng)于當(dāng)今云原生環(huán)境下微服務(wù)架構(gòu)基礎(chǔ),更加接近響應(yīng)式宣言的目標(biāo)和響應(yīng)式系統(tǒng)的設(shè)計(jì)原則。

不過也應(yīng)該看到,也正是由于響應(yīng)式宣言中對(duì)現(xiàn)代系統(tǒng)的Responsive、Resilient、Elastic和Message Driven的要求,使得對(duì)響應(yīng)式編程技術(shù)的呼聲越來越高,顯然響應(yīng)式編程技術(shù)是構(gòu)建響應(yīng)式系統(tǒng)的合適工具之一。尤其是隨著面向響應(yīng)式宣言的響應(yīng)式流規(guī)范(Reactive Streams Specification)這一頂層設(shè)計(jì)的提出,類似Reactor、RxJava、Vert.x、Spring WebFlux等的響應(yīng)式編程技術(shù)在響應(yīng)式系統(tǒng)中必將發(fā)揮越來越大的作用。

關(guān)于響應(yīng)式系統(tǒng)的話題比較大,涉及到許多的理念、技術(shù)。本系列的文章仍主要聚焦于響應(yīng)式編程的范疇,并在最后討論響應(yīng)式編程在Spring Cloud中的應(yīng)用。


標(biāo)題名稱:(10)響應(yīng)式宣言、響應(yīng)式系統(tǒng)與響應(yīng)式編程——響應(yīng)式Spring的道法術(shù)器
文章位置:http://weahome.cn/article/pjjjsp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部