国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種任務(wù)判重方法及系統(tǒng)的制作方法

      文檔序號(hào):6378481閱讀:267來源:國知局
      專利名稱:一種任務(wù)判重方法及系統(tǒng)的制作方法
      一種任務(wù)判重方法及系統(tǒng)
      技術(shù)領(lǐng)域
      本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域的網(wǎng)站開發(fā)技術(shù),尤其涉及一種任務(wù)判重方法及系統(tǒng)。背景技術(shù)
      目前,網(wǎng)站開發(fā)過程中,前端會(huì)向中間處理器發(fā)送服務(wù)請求,中間處理器再將服務(wù)請求轉(zhuǎn)發(fā)給后端,在收到服務(wù)請求后,后端會(huì)直接處理該服務(wù)請求,執(zhí)行相應(yīng)的操作。如果后端沒有及時(shí)向中間處理器返回服務(wù)請求的響應(yīng),或中間處理器沒有收到響應(yīng),例如,由于網(wǎng)絡(luò)出現(xiàn)波動(dòng)或中斷,導(dǎo)致中間服務(wù)器沒有成功將服務(wù)請求發(fā)送到后端,后端沒有收到服務(wù)請求就不會(huì)返回響應(yīng);或服務(wù)請求對應(yīng)的任務(wù)執(zhí)行過程比較復(fù)雜,后端執(zhí)行任務(wù)的時(shí)間較長,沒有及時(shí)返回響應(yīng),或后端返回響應(yīng)時(shí),網(wǎng)絡(luò)出現(xiàn)波動(dòng)或中斷,后端沒有成功返回響應(yīng)。如果發(fā)生上述情況,中間處理器會(huì)由于沒有收到后端返回的響應(yīng),而認(rèn)為服務(wù)請求沒有提交成功,會(huì)重復(fù)提交該服務(wù)請求給后端;如果后端正在處理之前收到的相·同的服務(wù)請求或已經(jīng)處理完該服務(wù)請求,此時(shí)又收到同一服務(wù)請求,則會(huì)重復(fù)執(zhí)行相應(yīng)的操作,給后端帶來多余的處理負(fù)擔(dān),浪費(fèi)后端的處理資源。而且,針對不同的服務(wù),后端重復(fù)執(zhí)行任務(wù)將帶來很多問題,例如,如果重復(fù)提交扣除款項(xiàng)的服務(wù)請求,后端將重復(fù)執(zhí)行款項(xiàng)的扣除,將給用戶帶來經(jīng)濟(jì)損失;如果重復(fù)提交發(fā)送消息的服務(wù)請求,后端將向用戶重復(fù)發(fā)送消息,給用戶帶來較差的用戶體驗(yàn)。

      發(fā)明內(nèi)容本發(fā)明提供了一種任務(wù)判重方法及系統(tǒng),能夠解決后端重復(fù)執(zhí)行相同任務(wù)的問題,節(jié)省后端的處理資源。本發(fā)明的具體技術(shù)方案如下根據(jù)本發(fā)明一優(yōu)選實(shí)施例,一種任務(wù)判重方法,后端在執(zhí)行中間處理器發(fā)送的服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)時(shí),記錄任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系;還包括當(dāng)后端依據(jù)中間處理器發(fā)送的服務(wù)請求中的序列號(hào),判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中或已執(zhí)行完畢時(shí),拒絕再次執(zhí)行所述任務(wù)。上述方法中,所述序列號(hào)是所述中間處理器在接收到前端發(fā)送的服務(wù)請求后,依據(jù)服務(wù)請求的接收順序,為收到的服務(wù)請求中攜帶的命令標(biāo)識(shí)分配的唯一的序列號(hào)。上述方法中,該方法還包括當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為未執(zhí)行時(shí),后端依據(jù)命令標(biāo)識(shí),從配置文件中命令標(biāo)識(shí)、模塊名稱、執(zhí)行的任務(wù)的映射關(guān)系中找到所述模塊名稱對應(yīng)的處理模塊;由所述處理模塊依據(jù)所述映射關(guān)系找到需要執(zhí)行的任務(wù),并執(zhí)行找到的任務(wù);當(dāng)任務(wù)執(zhí)行成功時(shí),后端將任務(wù)執(zhí)行成功的提示信息通過中間處理器返回給前端;當(dāng)任務(wù)執(zhí)行失敗時(shí),后端將任務(wù)執(zhí)行失敗的提示信息通過中間處理器返回給前端。
      上述方法中,如果所述后端記錄的任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系中,不存在所述服務(wù)請求中的序列號(hào),則判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為未執(zhí)行;當(dāng)所述任務(wù)執(zhí)行失敗時(shí),該方法還包括刪除記錄的該任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系。上述方法中,當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中時(shí),后端將任務(wù)執(zhí)行錯(cuò)誤的提示信息返回給中間處理器;當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為已執(zhí)行完畢時(shí),后端將任務(wù)執(zhí)行成功的提示信息返回給中間處理器。上述方法中,當(dāng)前端向中間處理器發(fā)送攜帶命令標(biāo)識(shí)的服務(wù)請求時(shí),或當(dāng)中間處理器沒有收到后端返回的響應(yīng)時(shí),中間處理器向后端發(fā)送攜帶命令標(biāo)識(shí)和序列號(hào)的服務(wù)請求;所述響應(yīng)包括任務(wù)執(zhí)行失敗的提示信息、任務(wù)執(zhí)行成功的提示信息或任務(wù)執(zhí)行錯(cuò)誤·的提示信息。一種任務(wù)判重系統(tǒng),包括中間處理器、后端;所述后端進(jìn)一步包括調(diào)度模塊;其中,調(diào)度模塊,用于在執(zhí)行中間處理器發(fā)送的服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)時(shí),記錄任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系;還用于當(dāng)依據(jù)中間處理器發(fā)送的服務(wù)請求中的序列號(hào),判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中或已執(zhí)行完畢時(shí),拒絕再次執(zhí)行所述任務(wù)。上述系統(tǒng)中,所述序列號(hào)是所述中間處理器在接收到前端發(fā)送的服務(wù)請求后,依據(jù)服務(wù)請求的接收順序,為收到的服務(wù)請求中攜帶的命令標(biāo)識(shí)分配的唯一的序列號(hào)。上述系統(tǒng)中,所述后端還包括處理模塊;所述調(diào)度模塊,還用于當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為未執(zhí)行時(shí),依據(jù)命令標(biāo)識(shí),從配置文件中命令標(biāo)識(shí)、模塊名稱、執(zhí)行的任務(wù)的映射關(guān)系中找到所述模塊名稱對應(yīng)的處理模塊;處理模塊,用于依據(jù)所述映射關(guān)系找到需要執(zhí)行的任務(wù),并執(zhí)行找到的任務(wù);當(dāng)任務(wù)執(zhí)行成功時(shí),將任務(wù)執(zhí)行成功的提示信息返回給調(diào)度模塊;當(dāng)任務(wù)執(zhí)行失敗時(shí),將任務(wù)執(zhí)行失敗的提示信息返回給調(diào)度模塊;調(diào)度模塊,還用于將任務(wù)執(zhí)行成功的提示信息或任務(wù)執(zhí)行失敗的提示信息,通過中間處理器返回給前端。上述系統(tǒng)中,所述調(diào)度模塊,還用于如果所述后端記錄的任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系中,不存在所述服務(wù)請求中的序列號(hào),判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為未執(zhí)行;當(dāng)所述任務(wù)執(zhí)行失敗時(shí),調(diào)度模塊還用于刪除記錄的該任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系。上述系統(tǒng)中,所述調(diào)度模塊,還用于當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中時(shí),將任務(wù)執(zhí)行錯(cuò)誤的提示信息返回給中間處理器;當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為已執(zhí)行完畢時(shí),將任務(wù)執(zhí)行成功的提示信息返回給中間處理器。
      上述系統(tǒng)中,所述中間處理器,還用于當(dāng)前端向自身發(fā)送攜帶命令標(biāo)識(shí)的服務(wù)請求時(shí),或當(dāng)自身沒有收到后端返回的響應(yīng)時(shí),向后端發(fā)送攜帶命令標(biāo)識(shí)和序列號(hào)的服務(wù)請求;所述響應(yīng)包括任務(wù)執(zhí)行失敗的提示信息、任務(wù)執(zhí)行成功的提示信息或任務(wù)執(zhí)行錯(cuò)誤的提示信息。由以上技術(shù)方案可以看出,本發(fā)明提供的具有以下有益效果對于從中間處理器收到的服務(wù)請求,后端會(huì)進(jìn)行任務(wù)的判重處理,依據(jù)判重結(jié)果決定是否執(zhí)行任務(wù);如此,避免后端重復(fù)處理服務(wù)請求對應(yīng)的任務(wù),降低后端的處理負(fù)擔(dān),節(jié)省后端的處理資源。

      圖I是本發(fā)明實(shí)現(xiàn)任務(wù)判重系統(tǒng)的優(yōu)選實(shí)施例的結(jié)構(gòu)示意圖; 圖2是本發(fā)明實(shí)現(xiàn)任務(wù)判重方法的優(yōu)選實(shí)施例的流程示意圖。
      具體實(shí)施方式本發(fā)明的基本思想是后端在執(zhí)行中間處理器發(fā)送的服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)時(shí),記錄任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系;當(dāng)后端依據(jù)中間處理器發(fā)送的服務(wù)請求中的序列號(hào),判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中或已執(zhí)行完畢時(shí),拒絕再次執(zhí)行所述任務(wù)。為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述。本發(fā)明提供一種任務(wù)判重系統(tǒng),圖I是本發(fā)明實(shí)現(xiàn)任務(wù)判重系統(tǒng)的優(yōu)選實(shí)施例的結(jié)構(gòu)不意圖,如圖I所不,該系統(tǒng)包括如端10、中間處理器20、后端30 ;后端30進(jìn)一步包括調(diào)度模塊301和一個(gè)以上處理模塊302 30η,η為大于等于3的正整數(shù)?;谏鲜鱿到y(tǒng),本發(fā)明還提供一種任務(wù)判重方法,圖2是本發(fā)明實(shí)現(xiàn)任務(wù)判重方法的優(yōu)選實(shí)施例的流程示意圖,如圖2所示,該優(yōu)選實(shí)施例包括以下步驟步驟201,前端發(fā)送攜帶命令標(biāo)識(shí)的服務(wù)請求給中間處理器。具體的,前端與后端的開發(fā)人員預(yù)先協(xié)商命令標(biāo)識(shí)key、模塊名稱、執(zhí)行的任務(wù)的映射關(guān)系,前端接收前端開發(fā)人員輸入的命令標(biāo)識(shí)key,然后將該命令標(biāo)識(shí)key攜帶在服務(wù)請求中發(fā)送給中間處理器;其中,命令標(biāo)識(shí)key可以為任意的字符串,如abc,也可以利用模塊名稱、執(zhí)行的任務(wù)或模塊名稱+執(zhí)行的任務(wù)來組成命令標(biāo)識(shí)key,后端可以依據(jù)命令標(biāo)識(shí)key獲取對應(yīng)的模塊和執(zhí)行的任務(wù);例如,命令標(biāo)識(shí)key可以為msg-insertWebBroadcastMsg,其中 msg 為消息,insertffebBroadcastMsg 為執(zhí)行的任務(wù)。步驟202,中間處理器在收到前端發(fā)送的服務(wù)請求后,依據(jù)服務(wù)請求的接收順序,為收到的服務(wù)請求中攜帶的命令標(biāo)識(shí)分配唯一的序列號(hào),并將分配的序列號(hào)和命令標(biāo)識(shí)通過服務(wù)請求發(fā)送給后端。具體的,中間處理器收到前端發(fā)送的服務(wù)請求后,從該服務(wù)請求中提取出攜帶的命令標(biāo)識(shí)key,然后依據(jù)服務(wù)請求的接收順序,為服務(wù)請求中的命令標(biāo)識(shí)key分配一個(gè)唯一的序列號(hào),并將分配的序列號(hào)和命令標(biāo)識(shí)key攜帶在服務(wù)請求中發(fā)送給后端;同時(shí),中間處理器中需要存儲(chǔ)分配的序列號(hào)及對應(yīng)的命令標(biāo)識(shí)key,用于中間處理器在一段時(shí)間內(nèi)沒有收到后端針對該服務(wù)請求的響應(yīng)時(shí),再次將服務(wù)請求發(fā)送給后端。其中,中間處理器可以依據(jù)服務(wù)請求的接收順序,為其中的命令標(biāo)識(shí)key分配一個(gè)唯一的序列號(hào),例如,收到的第一個(gè)服務(wù)請求后,為其中的命令標(biāo)識(shí)key分配序列號(hào)001,收到的第二個(gè)服務(wù)請求后,為其中的命令標(biāo)識(shí)key分配序列號(hào)002,以此類推;例如,如果命令標(biāo)識(shí)key為msg-insertWebBroadcastMsg,中間處理器發(fā)送給后端的服務(wù)請求中攜帶命令標(biāo)識(shí)key和序列號(hào),即服務(wù)請求中攜帶msg-insertWebBroadcastMsg-001,其中insertffebBroadcastMsg為命令標(biāo)識(shí)key, 001為中間處理器為命令標(biāo)識(shí)key分配的序列號(hào)。步驟203,后端在執(zhí)行中間處理器發(fā)送的服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)時(shí),記錄任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系;當(dāng)后端依據(jù)中間處理器發(fā)送的服務(wù)請求中的序列號(hào),判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中或已執(zhí)行完畢時(shí),拒絕再次執(zhí)行所述任務(wù)。具體的,前端與后端的開發(fā)人員協(xié)商好命令標(biāo)識(shí)key、模塊名稱、執(zhí)行的任務(wù)的映射關(guān)系后,在后端的存儲(chǔ)器中存儲(chǔ)的配置文件中寫入命令標(biāo)識(shí)key、模塊名稱、執(zhí)行的任務(wù)的映射關(guān)系,例如,可以在配置文件中寫入如下表示映射關(guān)系的字段[· msg-insertffebBroadcastMsg][. . param]webid: intmsgtype: intmagdetaiI: string[· . self]class:Service_RpcPage_Broadcastmethod:insertffebBroadcastMsg其中,上述映射關(guān)系中,msg-insertWebBroadcastMsg表不命令標(biāo)識(shí)key, class字段名的賦值Service_RpcPage_Broadcast表示該命令標(biāo)識(shí)key對應(yīng)的模塊名稱,method字段名的賦值insertWebBroadcastMsg表示該命令標(biāo)識(shí)key對應(yīng)需要執(zhí)行的任務(wù)。調(diào)度模塊在觸發(fā)處理模塊執(zhí)行中間處理器發(fā)送的服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)時(shí),記錄任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系;如此,后端的調(diào)度模塊收到中間處理器發(fā)來的服務(wù)請求后,從該服務(wù)請求中提取出命令標(biāo)識(shí)key和序列號(hào),依據(jù)該序列號(hào),讀取后端的存儲(chǔ)器中存儲(chǔ)的任務(wù)的執(zhí)行狀態(tài)與序列號(hào)之間的對應(yīng)關(guān)系,在該對應(yīng)關(guān)系中,查找該序列號(hào)及對應(yīng)的任務(wù)的執(zhí)行狀態(tài);如果調(diào)度模塊在任務(wù)的執(zhí)行狀態(tài)與序列號(hào)之間的對應(yīng)關(guān)系中,沒有找到收到的服務(wù)請求中的序列號(hào),表示該序列號(hào)的鎖定狀態(tài)是未加鎖,判斷出服務(wù)請求中命令標(biāo)識(shí)key對應(yīng)的任務(wù)的執(zhí)行狀態(tài)是未執(zhí)行,則調(diào)度模塊先在對應(yīng)關(guān)系中添加該序列號(hào)及對應(yīng)的任務(wù)的執(zhí)行狀態(tài),然后將該序列號(hào)加鎖,將對應(yīng)的任務(wù)的執(zhí)行狀態(tài)設(shè)置為正在執(zhí)行中,并設(shè)置該序列號(hào)的加鎖計(jì)時(shí)器,該加鎖計(jì)時(shí)器到時(shí)后,將對應(yīng)的任務(wù)的執(zhí)行狀態(tài)設(shè)置為已執(zhí)行完畢,且序列號(hào)解鎖;然后調(diào)度模塊需要依據(jù)從服務(wù)請求中提取的命令標(biāo)識(shí)key,在配置文件中命令標(biāo)識(shí)key、fe;塊名稱、執(zhí)行的任務(wù)的映射關(guān)系中,找到對應(yīng)的|吳塊名稱,然后將提取的命令標(biāo)識(shí)key發(fā)送給對應(yīng)的處理模塊;該處理模塊收到命令標(biāo)識(shí)key后,讀取配置文件,在配置文件中命令標(biāo)識(shí)key、模塊名稱、執(zhí)行的任務(wù)的映射關(guān)系中,找到需要執(zhí)行的任務(wù),并執(zhí)行該任務(wù);如果任務(wù)執(zhí)行成功,則向調(diào)度模塊返回任務(wù)執(zhí)行成功的提示信息,調(diào)度模塊將任務(wù)執(zhí)行成功的提示信息返回給中間處理器,中間處理器再轉(zhuǎn)發(fā)給前端,由于加鎖計(jì)時(shí)器到時(shí)后,自動(dòng)為該命令標(biāo)識(shí)key對應(yīng)的序列號(hào)解鎖,將序列號(hào)的鎖定狀態(tài)設(shè)置為已加鎖且已經(jīng)執(zhí)行完畢,所以調(diào)度模塊不需要修改序列號(hào)與鎖定狀態(tài)的映射關(guān)系表中該序列號(hào)的鎖定狀態(tài);如果處理模塊的任務(wù)執(zhí)行失敗,則處理模塊向調(diào)度模塊返回任務(wù)執(zhí)行失敗的提示信息,調(diào)度模塊將任務(wù)執(zhí)行失敗的提示信息返回給中間處理器,中間處理器再轉(zhuǎn)發(fā)給前端,同時(shí)調(diào)度模塊刪除對應(yīng)關(guān)系中該序列號(hào)及對應(yīng)的任務(wù)的執(zhí)行狀態(tài)的對應(yīng)關(guān)系項(xiàng),如此,如果再從中間處理器收到包含該序列號(hào)的服務(wù)請求,處理模塊可以重新執(zhí)行對應(yīng)的任務(wù)。如果調(diào)度模塊在任務(wù)的執(zhí)行狀態(tài)與序列號(hào)之間的對應(yīng)關(guān)系中,找到該序列號(hào),且該序列號(hào)的鎖定狀態(tài)為已加鎖且正在執(zhí)行中,判斷出攜帶該序列號(hào)的服務(wù)請求中命令標(biāo)識(shí)key對應(yīng)的任務(wù)已經(jīng)有處理模塊正在執(zhí)行中,因此拒絕再次執(zhí)行該任務(wù),調(diào)度模塊將任務(wù)執(zhí)行錯(cuò)誤的提示信息返回給中間處理器,中間處理器就不會(huì)在沒收到后端返回的提示信息時(shí),在發(fā)送周期內(nèi)再次發(fā)送同樣的服務(wù)請求給后端。如果調(diào)度模塊在任務(wù)的執(zhí)行狀態(tài)與序列號(hào)之間的對應(yīng)關(guān)系中找到該序列號(hào),且該 序列號(hào)的鎖定狀態(tài)為已加鎖且已經(jīng)執(zhí)行完畢,判斷出該序列號(hào)的服務(wù)請求中命令標(biāo)識(shí)key對應(yīng)的任務(wù)已經(jīng)由處理模塊執(zhí)行完畢,且任務(wù)執(zhí)行成功,因此拒絕再次執(zhí)行該任務(wù),則調(diào)度模塊將任務(wù)執(zhí)行成功的提示信息返回給中間處理器,中間處理器將任務(wù)執(zhí)行成功的提示信息返回給前端。在上述方法的過程中,中間處理器如果接收到后端返回的任務(wù)執(zhí)行成功的提示信息、任務(wù)執(zhí)行失敗的提示信息或任務(wù)執(zhí)行錯(cuò)誤的提示信息并返回給前端后,如果沒有再次接收到攜帶相同命令標(biāo)識(shí)key的服務(wù)請求,則不會(huì)重復(fù)發(fā)送攜帶相同命令標(biāo)識(shí)key的服務(wù)請求給后端。也就是說,中間處理器只有在設(shè)定時(shí)間內(nèi)沒有收到來自后端的響應(yīng)時(shí)才會(huì)重復(fù)發(fā)送攜帶相同命令標(biāo)識(shí)key的服務(wù)請求給后端。實(shí)際應(yīng)用中,存在一個(gè)任務(wù)需要多次執(zhí)行的情況,此時(shí)前端會(huì)向中間處理器重復(fù)發(fā)送攜帶相同命令標(biāo)識(shí)key的服務(wù)請求,用來指示后端重復(fù)執(zhí)行同一個(gè)任務(wù),利用本發(fā)明優(yōu)選實(shí)施例,中間處理器即使從前端先后收到攜帶相同命令標(biāo)識(shí)的服務(wù)請求,也會(huì)依據(jù)接收順序不同為命令標(biāo)識(shí)key分配不同的序列號(hào),后端依據(jù)服務(wù)請求中的序列號(hào)判斷該序列號(hào)的鎖定狀態(tài),進(jìn)一步依據(jù)鎖定狀態(tài)判斷是否執(zhí)行相應(yīng)的任務(wù),而不是依據(jù)命令標(biāo)識(shí)key判斷是否執(zhí)行相應(yīng)的任務(wù),因此,前端向中間處理器重復(fù)發(fā)送攜帶相同命令標(biāo)識(shí)key的服務(wù)請求后,中間處理器依據(jù)接收順序不同為命令標(biāo)識(shí)分配不同的序列號(hào),后端保存的序列號(hào)中不會(huì)有新收到的序列號(hào),因此即使命令標(biāo)識(shí)key相同,也可以重復(fù)執(zhí)行相應(yīng)的任務(wù);利用上述技術(shù)方案,針對前端重復(fù)提交的服務(wù)請求,后端會(huì)執(zhí)行相應(yīng)的處理,針對中間處理器由于沒有收到響應(yīng)而重復(fù)提交的服務(wù)請求,后端會(huì)進(jìn)任務(wù)的判重,依據(jù)判重結(jié)果決定是否執(zhí)行處理;如此,既不影響前端指示后端重復(fù)執(zhí)行同一任務(wù),又可以避免中間處理器重復(fù)發(fā)送服務(wù)請求帶來的重復(fù)執(zhí)行任務(wù),解決后端重復(fù)處理服務(wù)請求對應(yīng)的任務(wù)的問題,降低后端的處理負(fù)擔(dān),節(jié)省后端的處理資源;同時(shí)能夠減少中間處理器重復(fù)發(fā)送服務(wù)請求的次數(shù),降低中間處理器的處理負(fù)擔(dān),節(jié)省中間處理器的處理資源;將上述技術(shù)方案應(yīng)用于支付網(wǎng)站等各種業(yè)務(wù)網(wǎng)站時(shí),能夠避免由于用戶重復(fù)提交服務(wù)請求,給用戶帶來的經(jīng)濟(jì)損失,提高用戶體驗(yàn)。
      為實(shí)現(xiàn)上述方法,如圖I所示的系統(tǒng)調(diào)度模塊301,用于在執(zhí)行中間處理器20發(fā)送的服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)時(shí),記錄任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系;還用于當(dāng)依據(jù)中間處理器發(fā)送的服務(wù)請求中的序列號(hào),判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中或已執(zhí)行完畢時(shí),拒絕再次執(zhí)行所述任務(wù)。其中,所述序列號(hào)是所述中間處理器20在接收到前端10發(fā)送的服務(wù)請求后,依據(jù)服務(wù)請求的接收順序,為收到的服務(wù)請求中攜帶的命令標(biāo)識(shí)分配的唯一的序列號(hào)。其中,所述調(diào)度模塊301,還用于當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為未執(zhí)行時(shí),依據(jù)命令標(biāo)識(shí),從配置文件中命令標(biāo)識(shí)、模塊名稱、執(zhí)行的任務(wù)的映射關(guān)系中找到所述模塊名稱對應(yīng)的處理模塊302 30n ;處理模塊302 30n,用于依據(jù)所述映射關(guān)系找到需要執(zhí)行的任務(wù),并執(zhí)行找到的任務(wù);當(dāng)任務(wù)執(zhí)行成功時(shí),將任務(wù)執(zhí)行成功的提示信息返回給調(diào)度模塊301 ;當(dāng)任務(wù)執(zhí)行失敗時(shí),將任務(wù)執(zhí)行失敗的提示信息返回給調(diào)度模塊301 ;調(diào)度模塊301,還用于將任務(wù)執(zhí)行成功的提示信息或任務(wù)執(zhí)行失敗的提示信息,通過中間處理器20返回給前端10。其中,所述調(diào)度模塊301,還用于如果所述后端30記錄的任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系中,不存在所述服務(wù)請求中的序列號(hào),判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為未執(zhí)行;當(dāng)所述任務(wù)執(zhí)行失敗時(shí),調(diào)度模塊301還用于刪除記錄的該任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系。其中,所述調(diào)度模塊301,還用于當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中時(shí),將任務(wù)執(zhí)行錯(cuò)誤的提示信息返回給中間處理器20 ;當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為已執(zhí)行完畢時(shí),將任務(wù)執(zhí)行成功的提示信息返回給中間處理器20。其中,所述中間處理器20,還用于當(dāng)前端10向自身發(fā)送攜帶命令標(biāo)識(shí)的服務(wù)請求時(shí),或當(dāng)自身沒有收到后端返回的響應(yīng)時(shí),向后端30發(fā)送攜帶命令標(biāo)識(shí)和序列號(hào)的服務(wù)請求;所述響應(yīng)包括任務(wù)執(zhí)行失敗的提示信息、任務(wù)執(zhí)行成功的提示信息或任務(wù)執(zhí)行錯(cuò)誤的提示信息。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
      權(quán)利要求
      1.一種任務(wù)判重方法,其特征在于,后端在執(zhí)行中間處理器發(fā)送的服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)時(shí),記錄任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系;該方法還包括當(dāng)后端依據(jù)中間處理器發(fā)送的服務(wù)請求中的序列號(hào),判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中或已執(zhí)行完畢時(shí),拒絕再次執(zhí)行所述任務(wù)。
      2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述序列號(hào)是所述中間處理器在接收到前端發(fā)送的服務(wù)請求后,依據(jù)服務(wù)請求的接收順序,為收到的服務(wù)請求中攜帶的命令標(biāo)識(shí)分配的唯一的序列號(hào)。
      3.根據(jù)權(quán)利要求I所述的方法,其特征在于,該方法還包括當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為未執(zhí)行時(shí),后端依據(jù)命令標(biāo)識(shí),從配置文件中命令標(biāo)識(shí)、模塊名稱、執(zhí)行的任務(wù)的映射關(guān)系中找到所述模塊名稱對應(yīng)的處理模塊;由所述處理模塊依據(jù)所述映射關(guān)系找到需要執(zhí)行的任務(wù),并執(zhí)行找到的任務(wù);當(dāng)任務(wù)執(zhí)行成功時(shí),后端將任務(wù)執(zhí)行成功的提示信息通過中間處理器返回給前端;當(dāng)任務(wù)執(zhí)行失敗時(shí),后端將任務(wù)執(zhí)行失敗的提示信息通過中間處理器返回給前端。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,如果所述后端記錄的任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系中,不存在所述服務(wù)請求中的序列號(hào),則判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為未執(zhí)行;當(dāng)所述任務(wù)執(zhí)行失敗時(shí),該方法還包括刪除記錄的該任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系。
      5.根據(jù)權(quán)利要求I所述的方法,其特征在于,當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中時(shí),后端將任務(wù)執(zhí)行錯(cuò)誤的提示信息返回給中間處理器;當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為已執(zhí)行完畢時(shí),后端將任務(wù)執(zhí)行成功的提示信息返回給中間處理器。
      6.根據(jù)權(quán)利要求I所述方法,其特征在于,當(dāng)前端向中間處理器發(fā)送攜帶命令標(biāo)識(shí)的服務(wù)請求時(shí),或當(dāng)中間處理器沒有收到后端返回的響應(yīng)時(shí),中間處理器向后端發(fā)送攜帶命令標(biāo)識(shí)和序列號(hào)的服務(wù)請求;所述響應(yīng)包括任務(wù)執(zhí)行失敗的提不/[目息、任務(wù)執(zhí)行成功的提不/[目息或任務(wù)執(zhí)行錯(cuò)誤的提不/[目息。
      7.一種任務(wù)判重系統(tǒng),其特征在于,該系統(tǒng)包括中間處理器、后端;所述后端進(jìn)一步包括調(diào)度模塊;其中,調(diào)度模塊,用于在執(zhí)行中間處理器發(fā)送的服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)時(shí),記錄任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系;還用于當(dāng)依據(jù)中間處理器發(fā)送的服務(wù)請求中的序列號(hào),判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中或已執(zhí)行完畢時(shí),拒絕再次執(zhí)行所述任務(wù)。
      8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述序列號(hào)是所述中間處理器在接收到前端發(fā)送的服務(wù)請求后,依據(jù)服務(wù)請求的接收順序,為收到的服務(wù)請求中攜帶的命令標(biāo)識(shí)分配的唯一的序列號(hào)。
      9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述后端還包括處理模塊;所述調(diào)度模塊,還用于當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為未執(zhí)行時(shí),依據(jù)命令標(biāo)識(shí),從配置文件中命令標(biāo)識(shí)、模塊名稱、執(zhí)行的任務(wù)的映射關(guān)系中找到所述模塊名稱對應(yīng)的處理模塊; 處理模塊,用于依據(jù)所述映射關(guān)系找到需要執(zhí)行的任務(wù),并執(zhí)行找到的任務(wù);當(dāng)任務(wù)執(zhí)行成功時(shí),將任務(wù)執(zhí)行成功的提示信息返回給調(diào)度模塊;當(dāng)任務(wù)執(zhí)行失敗時(shí),將任務(wù)執(zhí)行失敗的提示信息返回給調(diào)度模塊; 調(diào)度模塊,還用于將任務(wù)執(zhí)行成功的提示信息或任務(wù)執(zhí)行失敗的提示信息,通過中間處理器返回給前端。
      10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述調(diào)度模塊,還用于如果所述后端記錄的任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系中,不存在所述服務(wù)請求中的序列號(hào),判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為未執(zhí)行; 當(dāng)所述任務(wù)執(zhí)行失敗時(shí),調(diào)度模塊還用于刪除記錄的該任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系。
      11.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述調(diào)度模塊,還用于當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中時(shí),將任務(wù)執(zhí)行錯(cuò)誤的提示信息返回給中間處理器;當(dāng)判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為已執(zhí)行完畢時(shí),將任務(wù)執(zhí)行成功的提示信息返回給中間處理器。
      12.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述中間處理器,還用于當(dāng)前端向自身發(fā)送攜帶命令標(biāo)識(shí)的服務(wù)請求時(shí),或當(dāng)自身沒有收到后端返回的響應(yīng)時(shí),向后端發(fā)送攜帶命令標(biāo)識(shí)和序列號(hào)的服務(wù)請求;所述響應(yīng)包括任務(wù)執(zhí)行失敗的提示信息、任務(wù)執(zhí)行成功的提示信息或任務(wù)執(zhí)行錯(cuò)誤的提示信息。
      全文摘要
      本發(fā)明提供了一種任務(wù)判重方法,包括后端在執(zhí)行中間處理器發(fā)送的服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)時(shí),記錄任務(wù)的執(zhí)行狀態(tài)與服務(wù)請求中序列號(hào)之間的對應(yīng)關(guān)系;當(dāng)后端依據(jù)中間處理器發(fā)送的服務(wù)請求中的序列號(hào),判斷出所述服務(wù)請求中命令標(biāo)識(shí)對應(yīng)的任務(wù)的執(zhí)行狀態(tài)為執(zhí)行中或已執(zhí)行完畢時(shí),拒絕再次執(zhí)行所述任務(wù);本發(fā)明還提供一種任務(wù)判重系統(tǒng)。根據(jù)本發(fā)明提供的技術(shù)方案,能夠解決后端重復(fù)執(zhí)行相同任務(wù)的問題,節(jié)省后端的處理資源。
      文檔編號(hào)G06F9/46GK102929698SQ20121037969
      公開日2013年2月13日 申請日期2012年9月29日 優(yōu)先權(quán)日2012年9月29日
      發(fā)明者李鵬, 陳建森, 李哲, 黃彥彬, 廖迪青 申請人:北京百度網(wǎng)訊科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1