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