后置處理帶來的性能提升

關(guān)于前置和后置是我自己理解的兩個(gè)概念,我理解為:

  • 如果某些工作我們放在業(yè)務(wù)執(zhí)行之前去做,就叫前置處理
  • 如果某些工作我們放在業(yè)務(wù)執(zhí)行之后去做,就叫后置處理

這兩個(gè)設(shè)計(jì),基于我們不同的場(chǎng)景可以極大的提高我們的處理性能.

一.前置處理

這個(gè)咱們之前也說過了,比如一些商品、活動(dòng)、庫存等信息的預(yù)熱,我們要提前進(jìn)行,該緩存的緩存,該推到CDN的去推,這樣我們活動(dòng)真正開始的時(shí)候就幾乎可以達(dá)到百分之百的緩存命中率了,大幅度降低數(shù)據(jù)庫壓力.

這里主要進(jìn)行后置處理的說明

二. 后置處理

某些工作我們放在業(yè)務(wù)執(zhí)行之后去做,就叫后置處理,某些操作我們可能不需要立馬進(jìn)行,我們可以根據(jù)某一代碼的執(zhí)行結(jié)果去做出自己的反饋,這樣的情況,我們可以做后置執(zhí)行.

下面我舉一個(gè)自己項(xiàng)目中的例子.

我這里有個(gè)郵件發(fā)送的服務(wù),我們使用的郵件平臺(tái)提供了以SMTP的形式發(fā)送郵件的功能,但是呢這種發(fā)送形式不會(huì)給我具體發(fā)送結(jié)果,我只能知道送達(dá)成功或者失敗,失敗的話不知道是什么原因,發(fā)送有兩個(gè)需要驗(yàn)證的點(diǎn),可能會(huì)導(dǎo)致郵件發(fā)送失敗

  • 1.發(fā)送平臺(tái)賬號(hào)信息
  • 2.發(fā)送發(fā)件人的賬號(hào)密碼信息

我這里要進(jìn)行郵件發(fā)送并且記錄失敗具體原因

那么如果采用前置法: 校驗(yàn)信息前置,那么過程是

  • 先驗(yàn)證平臺(tái)賬號(hào),如果驗(yàn)證失敗就提前中止反饋賬號(hào)驗(yàn)證失敗
  • 如果驗(yàn)證成功了再進(jìn)行攜帶賬號(hào)密碼的SMTP郵件發(fā)送,如果發(fā)送失敗了再反饋賬號(hào)密碼校驗(yàn)失敗

前置法偽代碼如下:

//如果賬號(hào)校驗(yàn)失敗
if(accountErrorCheck(account)){
    return "平臺(tái)賬號(hào)密碼校驗(yàn)失敗";
}
try{
  send(sendAccount,mailInfo)
}catch{
  return "郵件賬號(hào)密碼校驗(yàn)失敗";
}

這樣就有一個(gè)問題,大部分情況下我們賬號(hào)和密碼其實(shí)都是沒有問題的,如果這樣做的話,就會(huì)導(dǎo)致我們每次郵件發(fā)送都進(jìn)行了一次賬號(hào)校驗(yàn)情況,很沒必要,所以我們來看下后置法

后置法,先直接發(fā)送郵件,如果出現(xiàn)問題了,我們?cè)龠M(jìn)行原因的分析??

后置法偽代碼如下:


try{
  //直接進(jìn)行郵件發(fā)送
  send(sendAccount,mailInfo)
}catch{
  if(accountErrorCheck(account)){
    return "平臺(tái)賬號(hào)密碼校驗(yàn)失敗";
  }else{
   return "郵件賬號(hào)密碼校驗(yàn)失敗";
  }
}

如上面的代碼,我們不管三七二十一直接發(fā)送郵件,絕大部分賬號(hào)密碼都是沒問題的,可以正常投遞,少部分會(huì)有問題,我們?cè)倬唧w分析,這樣就可以減少了幾乎一半的請(qǐng)求耗時(shí)了,極大的提高我們的處理處理能力;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容