日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
異步請求和異步調(diào)用有區(qū)別?直到看到了7年前的一個(gè)問答

本文轉(zhuǎn)載自微信公眾號「程序新視界」,作者二師兄。轉(zhuǎn)載本文請聯(lián)系程序新視界公眾號。

創(chuàng)新互聯(lián)是由多位在大型網(wǎng)絡(luò)公司、廣告設(shè)計(jì)公司的優(yōu)秀設(shè)計(jì)人員和策劃人員組成的一個(gè)具有豐富經(jīng)驗(yàn)的團(tuán)隊(duì),其中包括網(wǎng)站策劃、網(wǎng)頁美工、網(wǎng)站程序員、網(wǎng)頁設(shè)計(jì)師、平面廣告設(shè)計(jì)師、網(wǎng)絡(luò)營銷人員及形象策劃。承接:做網(wǎng)站、成都做網(wǎng)站、網(wǎng)站改版、網(wǎng)頁設(shè)計(jì)制作、網(wǎng)站建設(shè)與維護(hù)、網(wǎng)絡(luò)推廣、數(shù)據(jù)庫開發(fā),以高性價(jià)比制作企業(yè)網(wǎng)站、行業(yè)門戶平臺等全方位的服務(wù)。

當(dāng)你打開本文,首先想說的是,這篇文章不僅僅是在講一個(gè)知識點(diǎn),更重要的是在講一種學(xué)習(xí)方法:質(zhì)疑與求證。

前言

最近在研究Spring Boot的異步處理,準(zhǔn)備寫一篇文章。在搜集資料時(shí)發(fā)現(xiàn)一篇文章《SpringBoot中異步請求和異步調(diào)用》,以及許多它的衍生文章。文章的確不錯(cuò),但文章中提到的“異步請求和異步調(diào)用”這兩個(gè)概念,一直百思不得其解,衍生文章中也是在混著用。

終于忍不住想探究一番,發(fā)現(xiàn)除了那篇文章和衍生的文章之外,并沒有其他證據(jù)來區(qū)別這兩個(gè)概念。直到在Stack Overflow上搜到了一篇七年前的文章,這個(gè)疑惑才解開。

今天就帶大家一起探究一下“異步請求和異步調(diào)用”這兩個(gè)概念。

異步請求和異步調(diào)用的區(qū)別

上面提到的文章中有這樣兩段話來講異步請求和異步調(diào)用的區(qū)別:

區(qū)別一:異步請求用來解決并發(fā)請求對服務(wù)器造成的壓力,從而提高對請求的吞吐量;而異步調(diào)用是用來做一些非主線流程且不需要實(shí)時(shí)計(jì)算和響應(yīng)的任務(wù),比如同步日志到kafka中做日志分析等。

區(qū)別二:異步請求是會(huì)一直等待response相應(yīng)的,需要返回結(jié)果給客戶端的;而異步調(diào)用往往會(huì)馬上返回給客戶端響應(yīng),完成這次整個(gè)的請求,至于異步調(diào)用的任務(wù)后臺運(yùn)行就可以了,客戶端不會(huì)關(guān)心。

仔細(xì)閱讀和分析之后,文章中提到的異步請求應(yīng)該指的是通過Servlet的AsyncContext對象或Spring中的Callable、DeferredResult、WebAsyncTask等方式進(jìn)行業(yè)務(wù)的異步處理。而文中異步調(diào)用指的是類似在Spring中調(diào)用@Async注解的異步方法。

你看了上面的兩個(gè)概念的區(qū)別,是否覺得很有道理?感覺已經(jīng)成功區(qū)分了異步請求和異步調(diào)用了嗎?

那么,是否想過一個(gè)問題,我們通常說請求一個(gè)接口和調(diào)用一個(gè)接口時(shí)難道不是一個(gè)意思嗎?怎么在這里就變成兩個(gè)截然不同的概念了?

疑問探究

帶著上面的疑問,開始用搜索引擎進(jìn)行搜索。發(fā)現(xiàn)當(dāng)搜索“異步請求和異步調(diào)用的區(qū)別”時(shí),搜出來的內(nèi)容基本上都來自上述文章及衍生文章,或者是講異步和同步的區(qū)別。這并不能說明什么,但也說明了這兩個(gè)概念的區(qū)別并沒有得到普遍的認(rèn)可。

于是開始嘗試通過英文搜索引擎進(jìn)行搜索。先搜了“the difference between asynchronous call and asynchronous request”,沒有想要的結(jié)果,大多數(shù)文章還是講異步和同步的區(qū)別。

改變關(guān)鍵字搜“the difference between asynchronous call and asynchronous method”,結(jié)果一樣,并沒有想要的文章。但卻搜出了一個(gè)Stack Overflow上的關(guān)聯(lián)問題“Synchronous Vs Asynchronous related to web services”。

在該問題的下面出現(xiàn)了兩個(gè)詞組:Asynchronous service和Asynchronous calls。再仔細(xì)看兩個(gè)詞組的解釋,發(fā)現(xiàn)正是想要的結(jié)果。

異步調(diào)用與異步服務(wù)

其實(shí)在英文搜索的過程中已經(jīng)發(fā)現(xiàn)了,探討異步與同步的區(qū)別時(shí),經(jīng)常會(huì)出現(xiàn)asynchronous request和asynchronous call這兩個(gè)詞組,而且它們都是在講異步與同步的區(qū)別,而沒有講它們兩個(gè)的區(qū)別。所以無論異步調(diào)用還是異步請求本質(zhì)上是一回事。

而《SpringBoot中異步請求和異步調(diào)用》一文中所說的異步請求和異步調(diào)用的區(qū)別,概念上也并沒有說清楚什么是異步請求,什么是異步調(diào)用。而且只有那幾篇文章這么講,所以可以認(rèn)為異步請求和異步調(diào)用是同一個(gè)概念(asynchronous call)。而作者所講的“異步調(diào)用”指的應(yīng)該異步服務(wù)(Asynchronous service)。

為了進(jìn)一步證明上面的結(jié)論,下面將問答中對兩個(gè)概念的解釋簡單翻譯一下。

Asynchronous service和Asynchronous calls

Asynchronous service

當(dāng)你的web服務(wù)執(zhí)行需要耗費(fèi)大量時(shí)間,比如從文件系統(tǒng)中讀取一個(gè)大文件。此時(shí),如果你使用“同步”的web服務(wù),那么客戶端必須等待處理完成,通常會(huì)阻塞線程,對于高并發(fā)的服務(wù),會(huì)出現(xiàn)性能問題。

如果將web服務(wù)設(shè)置為異步服務(wù),那么可以把耗時(shí)服務(wù)委托給另外一個(gè)線程,或者使用非阻塞機(jī)制,在未來的某刻進(jìn)行返回。還以讀取大文件為例,可以使用異步的ReadFile方法來讀取大文件。這樣便能避免線程阻塞,提高吞吐量。

Asynchronous calls

值得注意的是:你可以通過異步的方式調(diào)用一個(gè)非異步的的服務(wù)。比如在JavaScript中的Ajax的調(diào)用:

  
 
 
 
  1. var jqxhr = $.ajax( "AnyService.svc" )
  2.     .done(function() { alert("success"); })
  3.     .fail(function() { alert("error"); })
  4.     .always(function() { alert("complete"); });
  5. alert("Called");

執(zhí)行上述示例,首先展示“Called”,然后展示“success”,因?yàn)閳?zhí)行的過程中并不需要等到服務(wù)返回的結(jié)果。而被調(diào)用的服務(wù)也不需要是異步的。

總之,服務(wù)實(shí)現(xiàn)的異步與同步特性完全獨(dú)立于客戶端調(diào)用的異步和同步特性。也就是說客戶端可以異步的去調(diào)用同步服務(wù),而且客戶端也可以同步的去調(diào)用異步服務(wù)。

小結(jié)

通過上面的追蹤分析,關(guān)于異步請求和異步調(diào)用我們可以理解為是一回事,同時(shí)我們還得知了所謂的客戶端異步和同步與服務(wù)的異步與同步是相互獨(dú)立的。也就是客戶端可以異步請求也可以同步請求,服務(wù)可以異步處理也可以同步處理。兩兩組合可以有四種情況。

另外,更重要的是我們要學(xué)會(huì)通過搜索中英文資料來解答自己心中的疑惑,而且英文資料相對更準(zhǔn)確一些,所以首推英文。在探索疑惑問題的過程中往往還能有不少意外的收獲。


標(biāo)題名稱:異步請求和異步調(diào)用有區(qū)別?直到看到了7年前的一個(gè)問答
本文來源:http://m.5511xx.com/article/dhccsjp.html