足球资料库数据/孙祥/nba五佳球/足球直播哪个平台好 - cctv5今日现场直播

響應(yīng)式編程的基本概念
2016-01-24 18:13:09   來(lái)源:Jan Stenberg ,譯者 0 點(diǎn)擊:

Grails核心貢獻(xiàn)者Peter Ledbrook認(rèn)為,響應(yīng)式編程領(lǐng)域存在一個(gè)關(guān)鍵的問(wèn)題,就是它之所以那么難以理解是因?yàn)樗械男g(shù)語(yǔ)詞匯以及針對(duì)這些詞匯的許多不的同解釋。這也是他為什么決定搞明白這一切并在演示文稿中分享這些知識(shí)的原因。

在參加了許多次談話并閱讀了大量的博文后,Peter Ledbrook仍然未能深刻地理解響應(yīng)式編程的含義。因此他認(rèn)為,響應(yīng)式編程領(lǐng)域存在一個(gè)關(guān)鍵的問(wèn)題,就是它之所以那么難以理解是因?yàn)樗械男g(shù)語(yǔ)詞匯以及針對(duì)這些詞匯的許多不同的解釋。于是,他決定搞明白這一切,并希望同其他開(kāi)發(fā)人員分享他的知識(shí)。

Ledbrook是Grails的核心貢獻(xiàn)者之一。他首先閱讀了響應(yīng)式編程宣言,發(fā)現(xiàn)響應(yīng)式系統(tǒng)具備如下特點(diǎn):

  • 響應(yīng)性是指一個(gè)系統(tǒng)應(yīng)該總是能夠及時(shí)響應(yīng)用戶請(qǐng)求,并且保持很低的延遲。
  • 彈性是指一個(gè)系統(tǒng)即使在部分組件開(kāi)始出現(xiàn)故障的情況下也應(yīng)該能夠作出響應(yīng),將停機(jī)時(shí)間將至最低。
  • 可伸縮性是指一個(gè)系統(tǒng)在負(fù)載增加時(shí)應(yīng)該能夠根據(jù)需求增加資源以確保響應(yīng)性,但同時(shí)也應(yīng)該能在負(fù)載降低時(shí)減少資源,保持高效的資源利用率。
  • 消息驅(qū)動(dòng)是指在一個(gè)系統(tǒng)的不同部分之間傳遞消息,Ledbrook認(rèn)為這是響應(yīng)式系統(tǒng)的一個(gè)必備特點(diǎn)。

Ledbrook關(guān)注的下一個(gè)概念是響應(yīng)式流,他將其描述為隨著時(shí)間發(fā)出的一系列元素。他認(rèn)為,從觀察者模式入手理解這個(gè)概念是個(gè)不錯(cuò)的出發(fā)點(diǎn)。該模式包含一個(gè)發(fā)出事件的源及一個(gè)或多個(gè)等待事件的觀察者。在Ledbrook看來(lái),響應(yīng)式實(shí)際上是觀察者模式加上事件源的完成通知能力、錯(cuò)誤傳播能力和監(jiān)聽(tīng)者同事件源通信的能力。

響應(yīng)式流是一種規(guī)范ReactiveX是一種常用的跨平臺(tái)實(shí)現(xiàn)。ProjectReactorAkka是另外兩種實(shí)現(xiàn)。下面三個(gè)重要的概念是響應(yīng)式流API的構(gòu)建基礎(chǔ):

  • 發(fā)布者是事件的發(fā)送方,可以向它訂閱。
  • 訂閱者是事件訂閱方。
  • 訂閱將發(fā)布者和訂閱者聯(lián)系起來(lái),使訂閱者可以向發(fā)布者發(fā)送信號(hào)。

Ledbrook最后指出,許多響應(yīng)式流都是由我們熟悉的概念構(gòu)成,但是至少是部分地隱藏了復(fù)雜性。它適合于高I/O的環(huán)境或者需要處理大量數(shù)據(jù)的環(huán)境。Java 8的流同響應(yīng)式流類似,但他指出,Java 8的流只能推送,不能接收監(jiān)聽(tīng)者的信號(hào),并且沒(méi)有像響應(yīng)式流所做的那樣真正地針對(duì)I/O進(jìn)行優(yōu)化。

查看英文原文:The Basics of Being Reactive

相關(guān)熱詞搜索:reactive basics 架構(gòu) & 設(shè)計(jì) 語(yǔ)言 & 開(kāi)發(fā) 事件流處理 Event Driven Architecture 架構(gòu)

上一篇:Mozilla宣布關(guān)閉 Persona
下一篇:Docker 公布日志管理的新生態(tài)系統(tǒng)技術(shù)合作伙伴

分享到: 收藏