現(xiàn)在,我們理解同步和異步調(diào)用調(diào)用之間的差異。常熟做網(wǎng)頁更復(fù)雜的信息如矢量圖形、動(dòng)畫、視頻、聲頻等多媒體檔案則需要插件程序來運(yùn)行,同樣地它們亦需要標(biāo)示語言移植在網(wǎng)站內(nèi)。常熟做網(wǎng)頁的目的就是產(chǎn)生網(wǎng)站。簡單的信息如文字,圖片(GIFs, JPEGs,PNGs)和表格,都可以通過使超言、可擴(kuò)展超文本標(biāo)記語言等標(biāo)示語言放置到網(wǎng)站頁面上。常熟網(wǎng)頁設(shè)計(jì)要能充分吸引訪問者的注意力,讓訪問者產(chǎn)生視覺上的愉悅感。因此在網(wǎng)頁創(chuàng)作的時(shí)候就必須將網(wǎng)站的整體設(shè)計(jì)與網(wǎng)頁設(shè)計(jì)的相關(guān)原理緊密結(jié)合起來。為什么我們應(yīng)該理解他們?答案可伸縮性他們。如果過度使用同步調(diào)用,或不當(dāng)使用時(shí)系統(tǒng)會(huì)造成過度的負(fù)擔(dān),防止其擴(kuò)大。讓我們繼續(xù)使用的查詢EXEC例如,試圖執(zhí)行一個(gè)用戶查詢。如果由于以下原因,即:(1)監(jiān)測是非常重要的,(2)監(jiān)測方法運(yùn)行速度非常快,(3)最糟糕的情況,但速度較慢的用戶的查詢,我們實(shí)現(xiàn)了兩個(gè)同步監(jiān)控的方法調(diào)用。由于這些原因,雖然出發(fā)點(diǎn)是好的,但他們錯(cuò)了。正如前面提到的,雖然監(jiān)測是非常重要的,但不是重要的,返回給用戶的查詢結(jié)果。當(dāng)在運(yùn)行時(shí)監(jiān)控方法的監(jiān)控?cái)?shù)據(jù)庫可以運(yùn)行速度非???,但是當(dāng)發(fā)生硬件故障時(shí),或者當(dāng)被監(jiān)控的數(shù)據(jù)庫不能訪問,會(huì)發(fā)生什么?這樣一來,監(jiān)控查詢將被堆放,等待超時(shí)。
這也意味著用戶的查詢將被阻塞,等待監(jiān)視查詢完成,從而導(dǎo)致用戶查詢的累積。當(dāng)用戶查詢速度減慢或暫時(shí)停止等待超時(shí)時(shí),它仍將占用用戶數(shù)據(jù)庫的數(shù)據(jù)庫連接,應(yīng)用服務(wù)器上執(zhí)行的線程仍將占用服務(wù)器上的內(nèi)存。隨著越來越多的用戶線程開始停止,在等待其監(jiān)視調(diào)用過期時(shí),可能會(huì)耗盡與用戶數(shù)據(jù)的連接數(shù),從而無法再將來自其他非監(jiān)視類的查詢連接到用戶數(shù)據(jù)庫。應(yīng)用服務(wù)器上的線程需要將數(shù)據(jù)寫回硬盤以釋放內(nèi)存,這將導(dǎo)致服務(wù)器上的內(nèi)存交換。此切換會(huì)減慢所有處理速度,并可能導(dǎo)致應(yīng)用服務(wù)器的TCP堆棧達(dá)到上限,從而導(dǎo)致拒絕后續(xù)連接。最后,新的用戶請(qǐng)求將不會(huì)被處理,用戶將不得不等待瀏覽器或應(yīng)用程序超時(shí)。實(shí)際上,您的應(yīng)用程序或平臺(tái)已經(jīng)停止工作。如您所見,無論使用同步調(diào)用還是異步調(diào)用,一個(gè)小小的疏忽很容易導(dǎo)致一系列壞事件。這個(gè)場景最好的一點(diǎn)是隱藏了問題的根本原因。由于我們是一步一步地討論這些事件,所以比較容易理解這個(gè)問題,但是如果系統(tǒng)的癥狀是系統(tǒng)的有人網(wǎng)頁開始變慢,那么在接下來的15分鐘內(nèi)情況就變得越來越嚴(yán)重,直到整個(gè)系統(tǒng)最終停止運(yùn)行,診斷這個(gè)問題很困難。也許你有足夠的監(jiān)控信息來幫助你診斷這些類型的問題,但是當(dāng)你的網(wǎng)站宕機(jī)而你急于把它送回服務(wù)的時(shí)候,知道這些事件的真相是很有壓力的。
方法調(diào)用通常以同步方式實(shí)現(xiàn),盡管不當(dāng)使用同步調(diào)用或過度使用會(huì)導(dǎo)致問題。為什么會(huì)這樣?答案是同步調(diào)用比異步調(diào)用簡單。您可以添加,等等,同步調(diào)用比較容易,但通常情況下,我們的一些方法需要調(diào)用其他方法才能成功完成。