網(wǎng)站設(shè)計(jì)中同步調(diào)用,還是異步調(diào)用?

2022-05-06    分類: 網(wǎng)站設(shè)計(jì)

我們已經(jīng)知道了同步的基本定義和一些示例,那么讓我們拓寬一-下討論,看看應(yīng)用中的同步調(diào)用和異步調(diào)用。同步調(diào)用是在調(diào)用返回時才能完全執(zhí)行它們的動作。如果一個方法被調(diào)用了,控制權(quán)被轉(zhuǎn)給該方法來行使,那么只有當(dāng)該方法完成了自己要執(zhí)行的操作,成功地返回了或者返回有錯時,應(yīng)用中調(diào)用該方法的地方才會重新得到控制權(quán)。換而言之,同步方法先被調(diào)用,然后它們執(zhí)行操作,當(dāng)它們完成時,會返還控制權(quán)。

作為同步方法的一個示例,讓我們來看看AllScale公司的HRM服務(wù)中的一個方法query_ exec。該方法用于構(gòu)建和執(zhí)行一個動態(tài)的數(shù)據(jù)庫查詢。query_ exec方法中的一個步驟是建立一一個數(shù)據(jù)庫連接。在得到這個數(shù)據(jù)庫連接任務(wù)成功完成了的明確確認(rèn)之前,query. exec方法不會繼續(xù)執(zhí)行。這樣做既浪費(fèi)資源,又浪費(fèi)時間。如果數(shù)據(jù)庫不可用,那么該應(yīng)用就不應(yīng)該把時間浪費(fèi)在創(chuàng)建查詢、等待數(shù)據(jù)庫恢復(fù)可用上。事實(shí)上,如果數(shù)據(jù)庫不可用了,,看看如何劃分?jǐn)?shù)據(jù)庫來提高它的可用性。盡管如此,這是個說明同步調(diào)用是 如何工作的例子。因此,發(fā)起調(diào)用的方法會被暫停,直到被調(diào)用的進(jìn)程返回結(jié)果之前,它是不能完成的。
另一個說明同步性的非技術(shù)示例是兩個人之間的溝通,這可以是面對面,也可以是通過電話。如果這兩個人都忙于有意義的談話,那么就不太可能發(fā)生其他的動作。其中一人如果不停止與另一人的談話,那么很難再與第三個人開始交談。電話會直占線,直到兩個人中的一個或者兩者掛斷了電話。
與同步方法或進(jìn)程相對的是異步方法。在異步方法調(diào)用中,會在一個新的線程中調(diào)用一個方法,這個方法會立即把控制權(quán)返回給調(diào)用它的線程。描述異步方法調(diào)用的設(shè)計(jì)模式叫作異步設(shè)計(jì)或異步方法調(diào)用(AMI)。這個異步調(diào)用的方法會在另一個線程中繼續(xù)執(zhí)行,或成功結(jié)束或出現(xiàn)錯誤,但都不會再與發(fā)起它的線程有進(jìn)一步的交互。 讓我們再來看看AllScale公司的query exec方法。在調(diào)用了同步方法,建立數(shù)據(jù)庫連接后,該方法需要準(zhǔn)備和執(zhí)行查詢了。在HRM系統(tǒng)中,AllScale公司有一個監(jiān)控框架,能夠用來觀察所有查詢的持續(xù)時間以及查詢是否成功了,這個框架采用了異步調(diào)用方法start query_ time和end query time。這些方法會把一個系統(tǒng)時間存儲在內(nèi)存中,等待調(diào)用的結(jié)束,以便計(jì)算查詢的持續(xù)時間。然后這個持續(xù)時間會被存儲在一個監(jiān)控?cái)?shù)據(jù)
庫中,通過查詢這個數(shù)據(jù)庫,可以根據(jù)查詢運(yùn)行時間的長短了解系統(tǒng)運(yùn)行狀況如何。雖然監(jiān)控查詢的性能很重要,但讓查詢真正服務(wù)于用戶的請求更為重要。因此,start query time和lend query_time這些方法是以異步模式調(diào)用的。如果它們運(yùn)行成功并返回了結(jié)果,那么AllScale公司的運(yùn)營團(tuán)隊(duì)和軟件開發(fā)團(tuán)隊(duì)就能從監(jiān)控?cái)?shù)據(jù)庫中得到查詢時間。即使監(jiān)控調(diào)用失敗了,或者連接監(jiān)控?cái)?shù)據(jù)庫花了20秒的時間,這些團(tuán)隊(duì)都不會在乎。用戶的查詢?nèi)匀辉谶\(yùn)行,它們根本不關(guān)心這些異步調(diào)用。
回到我們?nèi)穗H溝通的示例,電子郵件是個異步通信的很好例子。你寫了電子郵件并把它發(fā)出去后,可以立即去做其他的事情,可以寫另一封郵件, 也可以打一輪高爾夫球或者其他什么事情。當(dāng)回復(fù)的郵件在一個合適的時候到達(dá)時,你可以閱讀這封回復(fù)的郵件,并可能發(fā)出另一封郵件,作為回復(fù)。這個網(wǎng)站設(shè)計(jì)的溝通鏈除了需要為處理溝通和寫回信花費(fèi)點(diǎn)時間之外,不會妨礙發(fā)送者和接收者的任何其他活動。

網(wǎng)頁名稱:網(wǎng)站設(shè)計(jì)中同步調(diào)用,還是異步調(diào)用?
分享網(wǎng)址:http://www.bm7419.com/news48/150648.html

網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營銷seo公司;服務(wù)項(xiàng)目有網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作