<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          分享 | 道法術(shù)器響應(yīng)式 Spring

          共 2293字,需瀏覽 5分鐘

           ·

          2021-11-14 18:35

          曾有讀者問(wèn)我之前的文章《微服務(wù)網(wǎng)關(guān)演進(jìn)之路》里提到的編程框架 SpringWebflux有沒(méi)有比較好的學(xué)習(xí)資料或者文檔。

          我都是看官方文檔和網(wǎng)上比較零碎的資料,對(duì)新手來(lái)說(shuō)不友好。

          也想過(guò)自己來(lái)寫(xiě)一個(gè)關(guān)于響應(yīng)式編程的系列文章,奈何水平有限,很多東西我自己也是一知半解,就不來(lái)誤人子弟了。

          再后來(lái)發(fā)現(xiàn)了這樣一個(gè)CSDN博客專(zhuān)欄,名叫 【道法術(shù)器】響應(yīng)式Spring,作者劉康,寫(xiě)的非常好,特別適合入門(mén),下面是博客原地址,分享給大家:

          https://blog.csdn.net/get_set/category_9272724.html

          總共有20多篇文章,這些文章通俗易懂,我也是認(rèn)真看過(guò)幾遍才來(lái)推薦的。

          從什么是響應(yīng)式編程、響應(yīng)式流等概念說(shuō)起,為什么需要響應(yīng)式編程,還有什么其他方案以及優(yōu)缺點(diǎn)等都說(shuō)到了,還順便把所需要的lambda、函數(shù)式等知識(shí)也給我們補(bǔ)齊了,后面還有一些小例子,甚至教我們?nèi)绾螁卧獪y(cè)試,如何測(cè)試性能等等。

          當(dāng)然這個(gè)專(zhuān)欄偏入門(mén)和科普,只要有點(diǎn) Java 基礎(chǔ)就能看,如果你確實(shí)想動(dòng)手實(shí)踐一下,作者還翻譯了 Reactor3(SpringWebflux 核心依賴(lài)) 的參考手冊(cè)

          https://htmlpreview.github.io/?https://github.com/get-set/reactor-core/blob/master-zh/src/docs/index.html

          響應(yīng)式編程是比較小眾的技術(shù),但如果你要用 Java 寫(xiě)個(gè)網(wǎng)關(guān)這樣的服務(wù),可以看看。Apache 開(kāi)源的這款網(wǎng)關(guān)產(chǎn)品,也是基于 SpringWebflux 框架來(lái)寫(xiě)的

          https://github.com/apache/incubator-shenyu

          作者能把一個(gè)抽象的概念說(shuō)的非常清楚,這點(diǎn)也是我們技術(shù)寫(xiě)作的追求,下面分享一段作者寫(xiě)的一段介紹IO到底有多慢的文字:


          很多情況下,在大的空間和時(shí)間維度上,數(shù)量級(jí)經(jīng)常會(huì)大到超出我們的認(rèn)知范疇,我們的直覺(jué)總是不可靠的。

          一、舉兩個(gè)空間維度的例子:

          在大的尺度上,印象中,銀河系的中心位置群星閃耀,就像趕集一樣。但實(shí)際上,如果把恒星們縮小到沙粒的大小,那么密度也就相當(dāng)于一個(gè)體育場(chǎng)有一兩粒沙子。曾經(jīng)看科幻片,總是擔(dān)心光速飛行的飛船來(lái)不及拐彎或剎車(chē)撞到星球上,實(shí)際上,想要撞上才是相當(dāng)不容易的。

          而在小的尺度上,原子核具有原子絕大部分的質(zhì)量。

          但實(shí)際上,如果把一個(gè)原子也放大到體育場(chǎng)那么大,原子核才僅僅相當(dāng)于一個(gè)乒乓球那么大,空曠的很!

          二、從時(shí)間維度上:

          往大了說(shuō),如果地球45億年歷史縮短為一年,那么人類(lèi)有記錄的浩瀚文明史不過(guò)相當(dāng)于幾秒鐘而已。

          往小了說(shuō),“一瞬間”與“一瞬間”可能會(huì)差好幾個(gè)數(shù)量級(jí)。我們就從微觀時(shí)間維度來(lái)了解一下“CPU眼中的時(shí)間”,你會(huì)發(fā)現(xiàn),發(fā)生在計(jì)算機(jī)中的阻塞也許比你直覺(jué)印象中夸張的多。

          CPU眼中的時(shí)間——

          CPU絕對(duì)稱(chēng)得上是“閃電俠”,因?yàn)樗鼈冏鍪露加凶约旱囊惶讜r(shí)鐘。我們故事的主人公是一個(gè)主頻為2.5GHz的CPU,如果它的世界也有“秒”的概念,并且它的時(shí)鐘跳一下為一秒,那么在CPU(CPU的一個(gè)核心)眼中的時(shí)間概念是啥樣的呢?

          CPU先生所在的組是硬件部計(jì)算組。對(duì)它來(lái)說(shuō),與其一起緊密合作的幾個(gè)小伙伴還能跟的上它的節(jié)奏:

          • CPU先生很利索,只需要一秒就可以完成一個(gè)指令,復(fù)雜的動(dòng)作可能需要多個(gè)指令。
          • 好在“貼身秘書(shū)”一級(jí)緩存反應(yīng)比較快,能夠秒懂CPU先生的意思。
          • 來(lái)自“秘書(shū)組”的二級(jí)緩存雖然要十幾秒才能“get”到CPU先生的點(diǎn),但也不算太遲鈍。
          • 和內(nèi)存組的合作已經(jīng)習(xí)以為常了,跟內(nèi)存請(qǐng)求的數(shù)據(jù)通常要4-5分鐘才能找到(內(nèi)存尋址),不過(guò)也還好啦,畢竟一級(jí)緩存那里能拿到80%想要的數(shù)據(jù),其余的二級(jí)緩存也能搞定一大部分,不怎么耽誤事兒。

          CPU先生是典型的工作狂,任務(wù)多的時(shí)候,通宵達(dá)旦也毫無(wú)怨言,但是有什么事情讓它等,那簡(jiǎn)直要他命了。恰恰一起共事的其他組(尤其是I/O組的磁盤(pán)和網(wǎng)卡)相對(duì)來(lái)說(shuō)那效率是低的離譜啊:

          • 關(guān)于I/O組的同事,CPU先生已經(jīng)抱怨很久了,每次找SSD要東西,都要花費(fèi)4-5天才能找到(尋址),等到數(shù)據(jù)傳送過(guò)來(lái),幾周都過(guò)去了。機(jī)械磁盤(pán)更是過(guò)分地離譜,跟他要個(gè)數(shù)據(jù),竟然要平均花費(fèi)10個(gè)月才能找到,如果要讀取1M的數(shù)據(jù),竟然要20個(gè)月!這種員工怎么還不下崗?!
          • 關(guān)于網(wǎng)卡,CPU先生知道它們也盡力了,畢竟萬(wàn)兆網(wǎng)絡(luò)成本頗高。與機(jī)房?jī)?nèi)的其他小伙伴們用千兆網(wǎng)絡(luò)互相溝通也算順暢,給另一臺(tái)機(jī)器的CPU朋友發(fā)送1K的書(shū)信,最快七八個(gè)小時(shí)就可以送過(guò)去了。但是1K的書(shū)信經(jīng)過(guò)層層包裹,實(shí)際也寫(xiě)不了多少話(huà)。更要命的是,網(wǎng)卡們的溝通手續(xù)繁雜,每次網(wǎng)絡(luò)溝通前的 “你好能聽(tīng)到我嗎?——我能聽(tīng)到,你那邊能聽(tīng)到我嗎?——我也能聽(tīng)到你,那我們開(kāi)始吧!” 這樣的握手確認(rèn)都要花掉很長(zhǎng)的時(shí)間,不過(guò)不能當(dāng)面溝通,也只能這樣了。這還好,最恐怖的是與其他城市的小伙伴溝通,有時(shí)候傳遞消息要花費(fèi)好幾年呢!

          由此可見(jiàn),對(duì)于CPU先生來(lái)說(shuō),想要讓工作充實(shí)起來(lái)實(shí)在不容易,不過(guò)多虧了內(nèi)存組的小伙伴幫忙分批緩存往返于I/O組的數(shù)據(jù),矛盾才有所緩解。


          更多可去看他的博客,純粹的分享好東西,CSDN 給作者發(fā)了私信沒(méi)回我,如果覺(jué)得有點(diǎn)用處,記得給我點(diǎn)贊加關(guān)注哦~

          如果想看到更多的分享,也歡迎加我微信,朋友圈也經(jīng)常分享一些技術(shù)文章~

          - END -

          瀏覽 81
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一级片日逼片 | 草草在线视频 | 天天天天射天天天搞天天要 | 亚洲AV秘 无码 18日韩 | 一道本一区二区三区免费视频 |