本發(fā)明涉及并發(fā)設(shè)計(jì)領(lǐng)域,更具體地說(shuō),本發(fā)明涉及一種app并發(fā)請(qǐng)求隊(duì)列的實(shí)現(xiàn)方法。
背景技術(shù):
1、在一個(gè)快速發(fā)展的網(wǎng)絡(luò)平臺(tái)上,用戶量不斷增加,用戶體驗(yàn)變得至關(guān)重要,隨著用戶數(shù)量的增加,服務(wù)器端面臨著越來(lái)越多的并發(fā)請(qǐng)求,給app帶來(lái)了挑戰(zhàn),在高峰時(shí)段大量的并發(fā)請(qǐng)求導(dǎo)致服務(wù)器過(guò)載,造成系統(tǒng)性能下降以及崩潰。
2、目前,app同一時(shí)間并發(fā)多個(gè)請(qǐng)求時(shí),存在超出最大并發(fā)數(shù)限制,無(wú)法對(duì)超出并發(fā)數(shù)的請(qǐng)求進(jìn)行有效管理,帶來(lái)時(shí)序紊亂問(wèn)題,并發(fā)多個(gè)請(qǐng)求時(shí)存在用戶信息過(guò)期情況,發(fā)送出去的請(qǐng)求就會(huì)面臨著請(qǐng)求無(wú)效,無(wú)法獲取正確的數(shù)據(jù),影響用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明針對(duì)現(xiàn)有技術(shù)中存在的技術(shù)問(wèn)題,提供一種app并發(fā)請(qǐng)求隊(duì)列的實(shí)現(xiàn)方法,以解決上述背景技術(shù)中提出的問(wèn)題。
2、本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:一種app并發(fā)請(qǐng)求隊(duì)列的實(shí)現(xiàn)方法,包括以下步驟:
3、s101.設(shè)計(jì)隊(duì)列管理器類的屬性和方法負(fù)責(zé)管理全局的請(qǐng)求隊(duì)列和控制并發(fā)數(shù),app啟動(dòng)時(shí)注冊(cè)全局的隊(duì)列管理器實(shí)例,當(dāng)屬性為當(dāng)前并發(fā)數(shù)達(dá)到最大時(shí),將超出當(dāng)前并發(fā)數(shù)的請(qǐng)求按照順序依次推入至隊(duì)列管理器進(jìn)行管理;
4、s102.隊(duì)列管理器中的請(qǐng)求以先進(jìn)先出方式進(jìn)行存儲(chǔ),檢查判斷當(dāng)前是否存在可用的并發(fā)處理資源,釋放隊(duì)列管理器中的請(qǐng)求;
5、s103.隊(duì)列管理器釋放請(qǐng)求過(guò)程中,循環(huán)執(zhí)行新一輪到達(dá)的請(qǐng)求以及釋放請(qǐng)求步驟;
6、s104.服務(wù)器接收用戶發(fā)出請(qǐng)求進(jìn)行響應(yīng)返回并發(fā)現(xiàn)用戶信息失效,暫停隊(duì)列管理器中的請(qǐng)求出隊(duì)操作并保持請(qǐng)求隊(duì)列狀態(tài)不變,啟動(dòng)隊(duì)列管理器自動(dòng)刷新用戶信息機(jī)制,重新將請(qǐng)求隊(duì)列中的請(qǐng)求依次出隊(duì);
7、在一個(gè)優(yōu)選地實(shí)施方式中,所述s101中,設(shè)計(jì)隊(duì)列管理器類的屬性和方法負(fù)責(zé)管理全局的請(qǐng)求隊(duì)列和控制并發(fā)數(shù),屬性包括最大并發(fā)數(shù)、當(dāng)前并發(fā)數(shù)以及請(qǐng)求隊(duì)列,方法包括add_request(request)和process_requests()。
8、進(jìn)一步地,創(chuàng)建一個(gè)新的請(qǐng)求隊(duì)列管理器,將屬性為當(dāng)前并發(fā)數(shù)的變量初始化為0,利用add_request(request)方法將請(qǐng)求加入到請(qǐng)求隊(duì)列中并鎖定資源,通知存在等待處理的線程,處理請(qǐng)求后,減少并記錄屬性為當(dāng)前并發(fā)數(shù)的參數(shù)值,用于表示該請(qǐng)求已完成。
9、進(jìn)一步地,app啟動(dòng)時(shí)注冊(cè)全局的隊(duì)列管理器實(shí)例,并利用單例模式確保全局僅存一個(gè)隊(duì)列管理器對(duì)象,調(diào)用列隊(duì)管理器的add_request(request)方法將新到達(dá)的請(qǐng)求加入隊(duì)列管理器,根據(jù)屬性為當(dāng)前并發(fā)數(shù)的情況判斷請(qǐng)求處理方式,當(dāng)屬性為當(dāng)前并發(fā)數(shù)達(dá)到最大時(shí),隊(duì)列管理器將超出當(dāng)前并發(fā)數(shù)的請(qǐng)求按照順序依次推入至隊(duì)列管理器進(jìn)行管理,并控制最大并發(fā)數(shù)。
10、在一個(gè)優(yōu)選地實(shí)施方式中,所述s102中,隊(duì)列管理器中的請(qǐng)求以先進(jìn)先出方式進(jìn)行存儲(chǔ),將第一時(shí)間到達(dá)的請(qǐng)求通過(guò)add_request(request)方法加入至隊(duì)列管理器尾部,并依次加入隨后到達(dá)對(duì)的請(qǐng)求并依次存放,直至隊(duì)列管理器首部被存放。
11、進(jìn)一步地,檢查判斷當(dāng)前是否存在可用的并發(fā)處理資源,當(dāng)存在可用的并發(fā)處理資源,則立即開(kāi)始處理隊(duì)列管理器中的請(qǐng)求,并從隊(duì)列管理器首部取出請(qǐng)求進(jìn)行發(fā)送處理,當(dāng)不存在可用的并發(fā)處理資源,則等待直到存在并發(fā)處理資源可用,移除隊(duì)列管理器已處理的請(qǐng)求,當(dāng)不再有新的請(qǐng)求到達(dá)且當(dāng)前隊(duì)列管理器中的所有請(qǐng)求均處理完成時(shí),開(kāi)始釋放隊(duì)列管理器中的請(qǐng)求。
12、在一個(gè)優(yōu)選地實(shí)施方式中,所述s103中,隊(duì)列管理器釋放請(qǐng)求過(guò)程中,將新一輪到達(dá)的并發(fā)請(qǐng)求推入隊(duì)列管理器中,隊(duì)列管理器繼續(xù)請(qǐng)求的釋放并將新一輪到達(dá)切超出屬性為當(dāng)前并發(fā)數(shù)的請(qǐng)求依次推入到隊(duì)列管理器的首部,循環(huán)執(zhí)行新一輪到達(dá)的請(qǐng)求以及釋放請(qǐng)求步驟。
13、在一個(gè)優(yōu)選地實(shí)施方式中,所述s104中,調(diào)用列隊(duì)管理器的add_request(request)方法將新到達(dá)的請(qǐng)求加入隊(duì)列管理器過(guò)程中,服務(wù)器接收用戶發(fā)出請(qǐng)求進(jìn)行響應(yīng)返回并發(fā)現(xiàn)用戶信息失效,響應(yīng)返回的請(qǐng)求無(wú)法正常返回?cái)?shù)據(jù),發(fā)送無(wú)法正常返回?cái)?shù)據(jù)信息通知,隊(duì)列管理器接收用戶信息失效信息通知,暫停隊(duì)列管理器中的請(qǐng)求出隊(duì)操作并保持請(qǐng)求隊(duì)列狀態(tài)不變,將響應(yīng)返回的請(qǐng)求重新加入請(qǐng)求隊(duì)列并等待處理,啟動(dòng)隊(duì)列管理器自動(dòng)刷新用戶信息機(jī)制,嘗試刷新用戶信息并等待成功通知,重新將請(qǐng)求隊(duì)列中的請(qǐng)求依次出隊(duì),并重新向服務(wù)器發(fā)送請(qǐng)求獲取返回?cái)?shù)據(jù)。
14、本發(fā)明的有益效果是:通過(guò)明確定義屬性和方法,使得隊(duì)列管理器的功能和作用清晰可見(jiàn),對(duì)隊(duì)列管理器類的初始化以及利用單例模式確保全局僅存在一個(gè)隊(duì)列管理器對(duì)象,確保方案的一致性和高效性,根據(jù)當(dāng)前并發(fā)數(shù)的情況判斷請(qǐng)求的處理方式,保證不同情況下隊(duì)列管理器的穩(wěn)定性和高效性,對(duì)超出并發(fā)數(shù)的請(qǐng)求進(jìn)行有效管理,降低時(shí)序紊亂問(wèn)題概率,通過(guò)請(qǐng)求以先進(jìn)先出方式進(jìn)行存儲(chǔ),確保請(qǐng)求的順序性,避免請(qǐng)求處理的混亂和不確定性,通過(guò)檢查判斷當(dāng)前是否存在可用的并發(fā)處理資源,保證請(qǐng)求處理的及時(shí)性和有效性,當(dāng)存在可用并發(fā)處理資源時(shí),立即開(kāi)始處理隊(duì)列管理器中的請(qǐng)求,并從隊(duì)列管理器首部取出請(qǐng)求進(jìn)行處理,保證請(qǐng)求的按序處理和方案的高效性,新一輪到達(dá)請(qǐng)求的處理保證能夠及時(shí)響應(yīng)新的請(qǐng)求并進(jìn)行處理,通過(guò)屬性判斷和請(qǐng)求推入隊(duì)列管理器,有效控制并發(fā)數(shù)并避免資源的過(guò)度占用,通過(guò)循環(huán)執(zhí)行,保證動(dòng)態(tài)環(huán)境下的穩(wěn)定性和可靠性,通過(guò)描述用戶信息失效的處理流程,保證服務(wù)器對(duì)用戶信息失效情況的及時(shí)響應(yīng)和處理,暫停隊(duì)列管理器中的請(qǐng)求出隊(duì)操作,能夠保持原有的請(qǐng)求順序和狀態(tài),通過(guò)重新加入響應(yīng)返回請(qǐng)求,避免因用戶信息失效導(dǎo)致的數(shù)據(jù)返回失敗。
1.一種app并發(fā)請(qǐng)求隊(duì)列的實(shí)現(xiàn)方法,其特征在于,具體包括以下步驟:
2.根據(jù)權(quán)利要求1所述的一種app并發(fā)請(qǐng)求隊(duì)列的實(shí)現(xiàn)方法,其特征在于:所述s101中,設(shè)計(jì)隊(duì)列管理器類的屬性和方法負(fù)責(zé)管理全局的請(qǐng)求隊(duì)列和控制并發(fā)數(shù),屬性包括最大并發(fā)數(shù)、當(dāng)前并發(fā)數(shù)以及請(qǐng)求隊(duì)列,方法包括add_request(request)和process_requests()。
3.根據(jù)權(quán)利要求2所述的一種app并發(fā)請(qǐng)求隊(duì)列的實(shí)現(xiàn)方法,其特征在于:利用add_request(request)方法將請(qǐng)求加入到請(qǐng)求隊(duì)列中并鎖定資源,通知存在等待處理的線程,處理請(qǐng)求后,減少并記錄屬性為當(dāng)前并發(fā)數(shù)的參數(shù)值,用于表示該請(qǐng)求已完成。
4.根據(jù)權(quán)利要求2所述的一種app并發(fā)請(qǐng)求隊(duì)列的實(shí)現(xiàn)方法,其特征在于:app啟動(dòng)時(shí)注冊(cè)全局的隊(duì)列管理器實(shí)例,調(diào)用列隊(duì)管理器的add_request(request)方法將新到達(dá)的請(qǐng)求加入隊(duì)列管理器,根據(jù)屬性為當(dāng)前并發(fā)數(shù)的情況判斷請(qǐng)求處理方式,當(dāng)屬性為當(dāng)前并發(fā)數(shù)達(dá)到最大時(shí),隊(duì)列管理器將超出當(dāng)前并發(fā)數(shù)的請(qǐng)求按照順序依次推入至隊(duì)列管理器進(jìn)行管理,并控制最大并發(fā)數(shù)。
5.根據(jù)權(quán)利要求1所述的一種app并發(fā)請(qǐng)求隊(duì)列的實(shí)現(xiàn)方法,其特征在于:所述s102中,隊(duì)列管理器中的請(qǐng)求以先進(jìn)先出方式進(jìn)行存儲(chǔ),將第一時(shí)間到達(dá)的請(qǐng)求通過(guò)add_request(request)方法加入至隊(duì)列管理器尾部,并依次加入隨后到達(dá)對(duì)的請(qǐng)求并依次存放,直至隊(duì)列管理器首部被存放,檢查判斷當(dāng)前是否存在可用的并發(fā)處理資源。
6.根據(jù)權(quán)利要求5所述的一種app并發(fā)請(qǐng)求隊(duì)列的實(shí)現(xiàn)方法,其特征在于:所述檢查判斷具體步驟為:當(dāng)存在可用的并發(fā)處理資源,則立即開(kāi)始處理隊(duì)列管理器中的請(qǐng)求,并從隊(duì)列管理器首部取出請(qǐng)求進(jìn)行發(fā)送處理,當(dāng)不存在可用的并發(fā)處理資源,則等待直到存在并發(fā)處理資源可用,移除隊(duì)列管理器已處理的請(qǐng)求,當(dāng)不再有新的請(qǐng)求到達(dá)且當(dāng)前隊(duì)列管理器中的所有請(qǐng)求均處理完成時(shí),開(kāi)始釋放隊(duì)列管理器中的請(qǐng)求。
7.根據(jù)權(quán)利要求1所述的一種app并發(fā)請(qǐng)求隊(duì)列的實(shí)現(xiàn)方法,其特征在于:所述s103中,隊(duì)列管理器釋放請(qǐng)求過(guò)程中,將新一輪到達(dá)的并發(fā)請(qǐng)求推入隊(duì)列管理器中,隊(duì)列管理器繼續(xù)請(qǐng)求的釋放并將新一輪到達(dá)切超出屬性為當(dāng)前并發(fā)數(shù)的請(qǐng)求依次推入到隊(duì)列管理器的首部,循環(huán)執(zhí)行新一輪到達(dá)的請(qǐng)求以及釋放請(qǐng)求步驟。
8.根據(jù)權(quán)利要求1所述的一種app并發(fā)請(qǐng)求隊(duì)列的實(shí)現(xiàn)方法,其特征在于:所述s104中,調(diào)用列隊(duì)管理器的add_request(request)方法將新到達(dá)的請(qǐng)求加入隊(duì)列管理器過(guò)程中,服務(wù)器接收用戶發(fā)出請(qǐng)求進(jìn)行響應(yīng)返回并發(fā)現(xiàn)用戶信息失效,發(fā)送無(wú)法正常返回?cái)?shù)據(jù)信息通知,隊(duì)列管理器接收用戶信息失效信息通知,暫停隊(duì)列管理器中的請(qǐng)求出隊(duì)操作并保持請(qǐng)求隊(duì)列狀態(tài)不變,將響應(yīng)返回的請(qǐng)求重新加入請(qǐng)求隊(duì)列并等待處理,啟動(dòng)隊(duì)列管理器自動(dòng)刷新用戶信息機(jī)制,重新將請(qǐng)求隊(duì)列中的請(qǐng)求依次出隊(duì),并向服務(wù)器發(fā)送請(qǐng)求獲取返回?cái)?shù)據(jù)。