本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種榜單刷新方法、裝置及服務(wù)端。
背景技術(shù):
隨著互聯(lián)網(wǎng)的快速發(fā)展,互聯(lián)網(wǎng)上各種榜單投票成為熱點(diǎn),榜單是按照分?jǐn)?shù)給某些ID投票形成的票數(shù)排序單,ID可以是人、作品等,票數(shù)可以體現(xiàn)為ID的評(píng)論、禮物或者其他能夠增長(zhǎng)的形態(tài),用戶通過(guò)投票使榜單上的ID名次發(fā)生變化。由于受限于大數(shù)據(jù)和請(qǐng)求刷榜的請(qǐng)求量問(wèn)題,現(xiàn)有技術(shù)中,很多榜單都是通過(guò)后臺(tái)定時(shí)異步計(jì)算生成的,即每隔一段時(shí)間將該段時(shí)間范圍內(nèi)的全部請(qǐng)求進(jìn)行榜單的刷新,這種方式用戶的實(shí)時(shí)體驗(yàn)感較差,比如用戶向某主播送禮的時(shí)候,需要能實(shí)時(shí)更新用戶對(duì)主播貢獻(xiàn)的排行榜單,這樣才能對(duì)主播和用戶起到更直接的激勵(lì)效果。榜單的實(shí)時(shí)生成,在觸發(fā)生成次數(shù)過(guò)于密集時(shí)容易帶來(lái)服務(wù)器性能波動(dòng)和不穩(wěn)定,影響整個(gè)系統(tǒng)的體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種榜單刷新方法、裝置及服務(wù)端,以提高在高并發(fā)環(huán)境下,榜單的準(zhǔn)實(shí)時(shí)更新和系統(tǒng)的穩(wěn)定性。
為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例采用的技術(shù)方案如下:
第一方面,本發(fā)明提供了一種榜單刷新方法,所述方法包括:
接收對(duì)榜單進(jìn)行刷新的請(qǐng)求;
根據(jù)前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值,利用與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求刷新榜單,或?qū)⑶耙活A(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入暫存區(qū)。
優(yōu)選地,所述方法包括:
當(dāng)最新接受到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的差值在第一時(shí)間范圍內(nèi)時(shí),將啟動(dòng)時(shí)間更新為最新接受到請(qǐng)求的時(shí)間;
對(duì)前一預(yù)定時(shí)間內(nèi)對(duì)應(yīng)的請(qǐng)求總和的賦值進(jìn)行更新,所述更新后的賦值為最新接受到請(qǐng)求的時(shí)間之前累加的請(qǐng)求總和;
根據(jù)所述更新后的賦值,利用最新接受到的請(qǐng)求刷新榜單或者將最新接收到的請(qǐng)求存入暫存區(qū)。
優(yōu)選地,所述方法包括:
當(dāng)最新請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的差值大于第二時(shí)間范圍內(nèi)時(shí),將啟動(dòng)時(shí)間更新為所述最新請(qǐng)求的時(shí)間;
對(duì)前一預(yù)定時(shí)間內(nèi)對(duì)應(yīng)的請(qǐng)求總和的賦值進(jìn)行更新,所述更新后的賦值為零;
利用最新接受到的請(qǐng)求刷新榜單。
優(yōu)選地,所述方法包括:
當(dāng)前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在第一范圍內(nèi)時(shí),利用與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求刷新榜單。
優(yōu)選地,所述暫存區(qū)包括第一暫存區(qū),所述方法包括:
當(dāng)前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在第二范圍內(nèi)時(shí),將與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入第一暫存區(qū),當(dāng)所述第一暫存區(qū)飽和,合并所述第一暫存區(qū)內(nèi)的請(qǐng)求得到請(qǐng)求總和,并利用合并后的請(qǐng)求總和刷新榜單。
優(yōu)選地,所述暫存區(qū)還包括第二暫存區(qū),所述第二暫存區(qū)的長(zhǎng)度大于所述第一暫存區(qū)的長(zhǎng)度,所述方法包括:
當(dāng)前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在第三范圍內(nèi)時(shí),將與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入第二暫存區(qū),當(dāng)所述第二暫存區(qū)飽和,合并所述第二暫存區(qū)內(nèi)的請(qǐng)求得到請(qǐng)求總和,并利用合并后的請(qǐng)求總和刷新榜單。
優(yōu)選地,所述方法包括:
響應(yīng)定時(shí)時(shí)間觸發(fā),利用暫存區(qū)內(nèi)的請(qǐng)求刷新榜單。
另一方面,本發(fā)明提供了一種榜單刷新裝置,所述裝置包括:
接收模塊,用于接收對(duì)榜單進(jìn)行刷新的請(qǐng)求;
刷新模塊,用于根據(jù)前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值,利用與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求刷新榜單,或?qū)⑶耙活A(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入暫存區(qū)。
優(yōu)選地,所述裝置還包括:
時(shí)間更新模塊,用于當(dāng)最新接受到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的差值在第一時(shí)間范圍內(nèi)時(shí),將啟動(dòng)時(shí)間更新為最新接受到請(qǐng)求的時(shí)間;
賦值更新模塊,用于對(duì)前一預(yù)定時(shí)間內(nèi)對(duì)應(yīng)的請(qǐng)求總和的賦值進(jìn)行更新,所述更新后的賦值為最新接受到請(qǐng)求的時(shí)間為止累加的請(qǐng)求總和;
所述刷新模塊還用于根據(jù)所述更新后的賦值,利用最新接受到請(qǐng)求刷新榜單或者將最新接收到的請(qǐng)求存入暫存區(qū)。
優(yōu)選地,所述裝置還包括:
時(shí)間更新模塊,用于當(dāng)最新請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的差值大于第二時(shí)間范圍內(nèi)時(shí),將啟動(dòng)時(shí)間更新為所述最新請(qǐng)求的時(shí)間;
賦值更新模塊,用于對(duì)前一預(yù)定時(shí)間內(nèi)對(duì)應(yīng)的請(qǐng)求總和的賦值進(jìn)行更新,所述更新后的賦值為零;
所述刷新模塊還用于在前一預(yù)定時(shí)間內(nèi)對(duì)應(yīng)的請(qǐng)求總和的賦值為零時(shí)利用最新接受到請(qǐng)求刷新榜單。
優(yōu)選地,所述刷新模塊用于在前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在第一范圍內(nèi)時(shí),利用與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求刷新榜單。
優(yōu)選地,所述暫存區(qū)包括第一暫存區(qū),所述刷新模塊用于在前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在第二范圍內(nèi)時(shí),將與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入第一暫存區(qū),以及
在所述第一暫存區(qū)飽和時(shí),合并所述第一暫存區(qū)內(nèi)的請(qǐng)求得到請(qǐng)求總和,并利用合并后的請(qǐng)求總和刷新榜單。
優(yōu)選地,所述暫存區(qū)還包括第二暫存區(qū),所述第二暫存區(qū)的長(zhǎng)度大于所述第一暫存區(qū)的長(zhǎng)度,所述刷新模塊用于在前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和在第三范圍內(nèi)時(shí),將與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入第二暫存區(qū),以及
在所述第二暫存區(qū)飽和時(shí),合并所述第二暫存區(qū)內(nèi)的請(qǐng)求得到請(qǐng)求總和,并利用合并后的請(qǐng)求總和刷新榜單。
優(yōu)選地,所述刷新模塊還用于響應(yīng)定時(shí)時(shí)間觸發(fā),利用暫存區(qū)內(nèi)的請(qǐng)求刷新榜單。
第三方面,本發(fā)明還提供了一種服務(wù)端,所述服務(wù)端包括:
存儲(chǔ)器;
處理器;以及
榜單刷新裝置,所述榜單刷新裝置安裝于所述存儲(chǔ)器中并包括一個(gè)或多個(gè)由所述處理器執(zhí)行的軟件功能模塊,所述榜單刷新裝置包括:
接收模塊,用于接收對(duì)榜單進(jìn)行刷新的請(qǐng)求;
刷新模塊,用于根據(jù)前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值,利用與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求刷新榜單,或?qū)⑶耙活A(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入暫存區(qū)。
本發(fā)明提供的榜單刷新方法、裝置及服務(wù)端,服務(wù)端在接收到刷新榜單的請(qǐng)求后,會(huì)根據(jù)前一預(yù)定時(shí)間的請(qǐng)求總和的賦值決定將與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求刷新榜單,或?qū)⑶耙活A(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入暫存區(qū)。根據(jù)系統(tǒng)請(qǐng)求的數(shù)量,實(shí)時(shí)的調(diào)整榜單的生成頻率,保證系統(tǒng)的穩(wěn)定,使榜單生成更具實(shí)時(shí)性。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對(duì)范圍的限定,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1是是本發(fā)明較佳實(shí)施例提供的服務(wù)端與至少一客戶端通信的交互示意圖。
圖2是圖1所示的服務(wù)端的方框示意圖。
圖3是針對(duì)目前支持網(wǎng)絡(luò)主播的賬戶排行榜的示意圖。
圖4是本發(fā)明較佳實(shí)施例提供的應(yīng)用于圖1所示的服務(wù)端的榜單刷新方法的流程圖。
圖5是本發(fā)明較佳實(shí)施例提供的榜單刷新方法的實(shí)際應(yīng)用示例圖。
圖6是本發(fā)明較佳實(shí)施例提供的榜單刷新裝置的功能模塊架構(gòu)示意圖。
主要元件符號(hào)說(shuō)明:服務(wù)端100、榜單刷新裝置110、存儲(chǔ)器111、處理器112、通信單元113、客戶端200、網(wǎng)絡(luò)300、應(yīng)用程序400、接收模塊601、刷新模塊602、時(shí)間更新模塊603、賦值更新模塊604。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來(lái)布置和設(shè)計(jì)。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例提供的榜單刷新方法應(yīng)用于與多個(gè)客戶端相互通信的服務(wù)端。如圖1所示,是本發(fā)明較佳實(shí)施例提供的服務(wù)端100與至少一客戶端200通信的交互示意圖。所述服務(wù)端100可通過(guò)網(wǎng)絡(luò)300與所述客戶端200進(jìn)行通信,以實(shí)現(xiàn)服務(wù)端100與客戶端200之間的數(shù)據(jù)通信或交互。所述服務(wù)端100可以提供至少一個(gè)適用于各種操作系統(tǒng)的應(yīng)用程序(Application,APP)400的安裝包供所述客戶端200下載。所述客戶端200通過(guò)所述網(wǎng)絡(luò)300訪問(wèn)所述服務(wù)端100后,可通過(guò)所述網(wǎng)絡(luò)300從服務(wù)端100下載適用于該客戶端200的操作系統(tǒng)的應(yīng)用程序400的安裝包,以將所述應(yīng)用程序400安裝到所述客戶端200中。
本實(shí)施例中,所述服務(wù)端100可以是,但不限于,web(網(wǎng)站)服務(wù)器、ftp(file transfer protocol,文件傳輸協(xié)議)服務(wù)器等。所述客戶端200可以是,但不限于,智能手機(jī)、個(gè)人電腦(personal computer,PC)、平板電腦、個(gè)人數(shù)字助理(personal digital assistant,PDA)、移動(dòng)上網(wǎng)設(shè)備(mobile Internet device,MID)等。所述網(wǎng)絡(luò)300可以是,但不限于,有線網(wǎng)絡(luò)或無(wú)線網(wǎng)絡(luò)。所述客戶端200的操作系統(tǒng)可以是,但不限于,安卓(Android)系統(tǒng)、IOS(iPhone operating system)系統(tǒng)、Windows phone系統(tǒng)、Windows系統(tǒng)等。所述應(yīng)用程序400可以是服務(wù)端100提供的任何可供客戶端200自定義下載并安裝的應(yīng)用程序,優(yōu)選地,本實(shí)施例中,所述應(yīng)用程序400為可為不同ID刷新榜單的客戶端程序,比如具有不同ID的主播、明星、小說(shuō)、游戲等榜單,客戶端200接收用戶刷新榜單的請(qǐng)求以刷新榜單,用戶可以通過(guò)禮物、評(píng)論、投票等方式刷新榜單,本實(shí)施例對(duì)用戶刷新榜單的請(qǐng)求方式不做限定。
請(qǐng)參照?qǐng)D2,是圖1所示的服務(wù)端100的方框示意圖。所述服務(wù)端100包括榜單刷新裝置110、存儲(chǔ)器111、處理器112和通信單元113。
所述存儲(chǔ)器111、處理器112以及通信單元113各元件相互之間直接或間接地電性連接,以實(shí)現(xiàn)數(shù)據(jù)的傳輸或交互。例如,這些元件相互之間可通過(guò)一條或多條通訊總線或信號(hào)線實(shí)現(xiàn)電性連接。所述榜單刷新裝置110包括至少一個(gè)可以軟件或固件(firmware)的形式存儲(chǔ)于所述存儲(chǔ)器111中或固化在所述服務(wù)端100的操作系統(tǒng)(operating system,OS)中的軟件功能模塊。所述處理器112用于執(zhí)行所述存儲(chǔ)器111中存儲(chǔ)的可執(zhí)行模塊,例如所述榜單刷新裝置110所包括的軟件功能模塊及計(jì)算機(jī)程序等。
其中,所述存儲(chǔ)器111可以是,但不限于,隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM),只讀存儲(chǔ)器(Read Only Memory,ROM),可編程只讀存儲(chǔ)器(Programmable Read-Only Memory,PROM),可擦除只讀存儲(chǔ)器(Erasable Programmable Read-Only Memory,EPROM),電可擦除只讀存儲(chǔ)器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存儲(chǔ)器111用于存儲(chǔ)程序,所述處理器112在接收到執(zhí)行指令后,執(zhí)行所述程序。所述通信單元113用于通過(guò)所述網(wǎng)絡(luò)300建立所述服務(wù)端100與客戶端200之間的通信連接,并用于通過(guò)所述網(wǎng)絡(luò)300收發(fā)數(shù)據(jù)。
請(qǐng)參照?qǐng)D3,是針對(duì)目前支持網(wǎng)絡(luò)主播的賬戶排行榜的示意圖。用戶通過(guò)向網(wǎng)絡(luò)主播贈(zèng)送禮物或者點(diǎn)贊的方式獲得貢獻(xiàn)值,榜單系統(tǒng)按照用戶的貢獻(xiàn)值多少進(jìn)行排序以生成貢獻(xiàn)排行榜,用戶可以通過(guò)增加贈(zèng)送禮物以獲得更多的貢獻(xiàn)值,從而刷新用戶在貢獻(xiàn)排行榜上的排名,在本示例中,用戶贈(zèng)送禮物即一個(gè)刷新榜單的請(qǐng)求。
請(qǐng)參照?qǐng)D4,是本發(fā)明較佳實(shí)施例提供的應(yīng)用于圖1所示的服務(wù)端100的榜單刷新方法的流程圖。下面對(duì)圖4所述的具體流程和步驟進(jìn)行詳細(xì)闡述。
步驟S401:接收對(duì)榜單進(jìn)行刷新的請(qǐng)求。
服務(wù)端100接收的對(duì)榜單進(jìn)行刷新的請(qǐng)求是客戶端200響應(yīng)用戶在客戶端200的應(yīng)用程序上的操作而發(fā)送的。比如,用戶在客戶端200的應(yīng)用程序上點(diǎn)擊贈(zèng)送禮物,則客戶端200響應(yīng)用戶的操作向服務(wù)端100發(fā)送該贈(zèng)送禮物的請(qǐng)求。
步驟S402:判斷最新接收到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的差值的時(shí)間范圍。
由于服務(wù)端100同時(shí)與多個(gè)客戶端200通信連接,服務(wù)端100在同一時(shí)間可能會(huì)接收到多個(gè)客戶端200對(duì)榜單進(jìn)行刷新的請(qǐng)求,當(dāng)客戶端200發(fā)送的請(qǐng)求過(guò)多,服務(wù)端100同時(shí)對(duì)多個(gè)請(qǐng)求進(jìn)行處理,可能會(huì)影響服務(wù)端100的處理效率和穩(wěn)定性。在本實(shí)施例中,采用了將時(shí)間分段,通過(guò)判斷上一段時(shí)間內(nèi)接收到的請(qǐng)求總和判斷服務(wù)端200當(dāng)前的繁忙程度,以根據(jù)服務(wù)端200的繁忙程度來(lái)決定當(dāng)前接收到的請(qǐng)求的處理方式,上一段時(shí)間的長(zhǎng)度通過(guò)預(yù)先設(shè)定。上一段時(shí)間的開(kāi)始時(shí)間即為啟動(dòng)時(shí)間,該啟動(dòng)時(shí)間不是一個(gè)固定的時(shí)間,而是隨著系統(tǒng)當(dāng)前的請(qǐng)求情況而變化的。
在本較佳實(shí)施例中,當(dāng)最新接受到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的差值在第一時(shí)間范圍內(nèi)時(shí),執(zhí)行步驟S403;當(dāng)最新接受到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的差值在第二時(shí)間范圍內(nèi)時(shí),執(zhí)行步驟S404,當(dāng)最新接收到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的時(shí)間差值的時(shí)間范圍既不在第一時(shí)間范圍,也不在第二時(shí)間范圍,執(zhí)行步驟S406。
步驟S403:對(duì)前一預(yù)定時(shí)間內(nèi)對(duì)應(yīng)的請(qǐng)求總和的賦值進(jìn)行更新,所述更新后的賦值為最新接受到請(qǐng)求的時(shí)間之前累加的請(qǐng)求總和。其后,執(zhí)行步驟S405。
服務(wù)端100在接收到請(qǐng)求的時(shí)候,會(huì)根據(jù)上一段時(shí)間的請(qǐng)求總和來(lái)判斷當(dāng)前接收的請(qǐng)求的處理方式,上一段時(shí)間的請(qǐng)求總和通過(guò)賦值的方式得到,上一段時(shí)間即為前一預(yù)定時(shí)間,此處所述的前一預(yù)定時(shí)間的時(shí)間長(zhǎng)度是變化的,具體的時(shí)間長(zhǎng)度根據(jù)第一時(shí)間范圍或者第二時(shí)間范圍的設(shè)定長(zhǎng)度和最新接收到請(qǐng)求的時(shí)間而決定。為了便于理解,請(qǐng)參照?qǐng)D5,設(shè)定榜單系統(tǒng)的最初啟動(dòng)時(shí)間為0,設(shè)定第一時(shí)間范圍為1s(秒)~2s(不包括2s),由于最初啟動(dòng)時(shí)間為0,在0之前沒(méi)有請(qǐng)求,默認(rèn)0的“前一預(yù)定時(shí)間”的賦值為0。服務(wù)端100分別在0.3s時(shí)收到5個(gè)請(qǐng)求,0.5s時(shí)收到5個(gè)請(qǐng)求、0.7s時(shí)收到5個(gè)請(qǐng)求、1.5s時(shí)收到22個(gè)請(qǐng)求,因?yàn)?.3s、0.5s、0.7s均小于1s,所以在這三個(gè)接收到請(qǐng)求數(shù)的時(shí)刻均不進(jìn)行賦值,在0.7s時(shí),請(qǐng)求總和為5+5+5=15個(gè)。在0.7s之后,最新接收到請(qǐng)求的時(shí)間是1.5s,1.5s在1s~2s的范圍內(nèi),故而對(duì)前一預(yù)定時(shí)間(這里的前一預(yù)定時(shí)間即為0~1.5s)的請(qǐng)求總和的賦值進(jìn)行更新,更新之后的請(qǐng)求總和為5+5+5=15個(gè)。本實(shí)施例中,第一時(shí)間范圍設(shè)置為1s~2s,最新接收到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間之間的時(shí)間長(zhǎng)度并不長(zhǎng),表明當(dāng)前用戶請(qǐng)求較為活躍,將前一預(yù)設(shè)時(shí)間的請(qǐng)求總和賦值為15個(gè),以根據(jù)該賦值決定與前一預(yù)設(shè)時(shí)間連續(xù)后一預(yù)設(shè)時(shí)間接收的請(qǐng)求的處理方式。
步驟S404:對(duì)前一預(yù)定時(shí)間內(nèi)對(duì)應(yīng)的請(qǐng)求總和的賦值進(jìn)行更新,所述更新后的賦值為零。其后,執(zhí)行步驟S405。
請(qǐng)繼續(xù)參考圖5,設(shè)第二時(shí)間范圍為2s~∞s,4.1s為系統(tǒng)的一個(gè)啟動(dòng)時(shí)間,4.1s后,最新的請(qǐng)求時(shí)間是7s,由于7s-4.1s=2.9s>2s,符合第二時(shí)間范圍,則將7s的前一預(yù)定時(shí)間(這里的前一預(yù)定時(shí)間即為4.1s~7s)內(nèi)的請(qǐng)求總和(7個(gè))賦值為零,以供后一連續(xù)的預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求的處理作為參考,因?yàn)榉?wù)端100在2.9s內(nèi)都沒(méi)有新的請(qǐng)求,表明服務(wù)端100當(dāng)前的繁忙程度較低,故而直接將前一預(yù)定時(shí)間的請(qǐng)求總和賦值為零。
步驟S405:將啟動(dòng)時(shí)間更新為最新接收到請(qǐng)求的時(shí)間。其后,執(zhí)行步驟S406。
無(wú)論最新接收到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的差值的時(shí)間范圍是第一時(shí)間范圍還是第二時(shí)間范圍,均將啟動(dòng)時(shí)間更新為最新接收到請(qǐng)求的時(shí)間,以進(jìn)行下一段時(shí)間的計(jì)算。例如,請(qǐng)參照?qǐng)D5,在1.5s時(shí),最新接收到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的時(shí)間差值為1.5s-0s=1.5s,在第一時(shí)間范圍內(nèi),則將1.5s作為新的啟動(dòng)時(shí)間。在2.9s時(shí),接收到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的時(shí)間差值為2.9s-1.5s=1.4s,在第一時(shí)間范圍內(nèi),則將2.9s作為新的啟動(dòng)時(shí)間。在7s時(shí),接收到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的時(shí)間差值為7s-4.1s=2.9s,在第二時(shí)間范圍內(nèi),則將7s作為新的啟動(dòng)時(shí)間。通過(guò)重新設(shè)定啟動(dòng)時(shí)間,對(duì)時(shí)間進(jìn)行分段處理,后一端時(shí)間接收的請(qǐng)求參考前一段時(shí)間內(nèi)的請(qǐng)求總和的賦值進(jìn)行處理。下面的步驟將對(duì)處理的方式進(jìn)行說(shuō)明。
步驟S406:判斷前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值的范圍。
服務(wù)端100根據(jù)判斷得到的前一預(yù)定時(shí)間的請(qǐng)求總和的賦值以決定最新接收到的請(qǐng)求的處理方式。當(dāng)前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在第一范圍時(shí),執(zhí)行步驟S407,當(dāng)前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在第二范圍時(shí),執(zhí)行步驟S408,前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在第三范圍時(shí),執(zhí)行步驟S409。
步驟407:利用與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求刷新榜單。
在本實(shí)施例中,第一范圍的取值為0~10。當(dāng)前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在0~10內(nèi),表明服務(wù)端100當(dāng)前并不繁忙,則將當(dāng)前接收到的請(qǐng)求(即與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求)直接用于刷新榜單。為了便于理解,請(qǐng)參照?qǐng)D5,在0.3s時(shí),服務(wù)端100接收到了5個(gè)請(qǐng)求,因?yàn)?.3s時(shí)的前一預(yù)定時(shí)間不存在,默認(rèn)為前一預(yù)定時(shí)間的請(qǐng)求總和的賦值為0,0位于0~10內(nèi),則將0.3s接收的5個(gè)請(qǐng)求直接用于刷新榜單。
步驟S408:將與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入第一暫存區(qū)。其后執(zhí)行步驟S410。
在本實(shí)施例中,暫存區(qū)包括第一暫存區(qū),該第二范圍的取值為11~100。當(dāng)前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在11~100內(nèi),表明服務(wù)端100當(dāng)前較為繁忙,則將當(dāng)前接收到的請(qǐng)求(即與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求)暫時(shí)存儲(chǔ)在第一暫存區(qū),此處的第一暫存區(qū)為緩沖器(buffer),該第一暫存區(qū)的長(zhǎng)度為4,即第一暫存區(qū)能夠存儲(chǔ)的請(qǐng)求數(shù)為4個(gè)。為了便于理解,請(qǐng)參照?qǐng)D5,在1.7s時(shí),服務(wù)端100接收到了25個(gè)請(qǐng)求,由于在1.7s的前一預(yù)定時(shí)間(即0~1.5s)的請(qǐng)求總和的賦值為15,15位于第二范圍,則將1.7s接收到的25個(gè)請(qǐng)求依次放入第一暫存區(qū)進(jìn)行暫存,以減輕服務(wù)端100當(dāng)前的負(fù)擔(dān)。當(dāng)?shù)谝粫捍鎱^(qū)飽和時(shí),即第一暫存區(qū)存儲(chǔ)的請(qǐng)求數(shù)達(dá)到上限時(shí),執(zhí)行步驟S410。
步驟S409:將與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入第二暫存區(qū)。其后執(zhí)行步驟S411。
在本實(shí)施例中,暫存區(qū)還包括第二暫存區(qū),該第三范圍的取值為101~∞。當(dāng)前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在101~∞內(nèi),表明服務(wù)端100當(dāng)前非常繁忙,容易發(fā)生性能撥動(dòng)和不穩(wěn)定,此時(shí),將當(dāng)前接收到的請(qǐng)求(即與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求)暫時(shí)存儲(chǔ)在第二暫存區(qū),需要說(shuō)明的是,此處的第二暫存區(qū)和第一暫存區(qū)均為緩沖器(buffer),該緩沖器的長(zhǎng)度可以自由變化,該第二暫存區(qū)的長(zhǎng)度為8,即第二暫存區(qū)能夠存儲(chǔ)的請(qǐng)求數(shù)為8個(gè)。為了便于理解,請(qǐng)參照?qǐng)D5,在3.1s時(shí),服務(wù)端100接收到了1個(gè)請(qǐng)求,由于在3.1s的前一預(yù)定時(shí)間(即1.5~2.9s)的請(qǐng)求總和的賦值為122,122位于第三范圍,則將3.1s接收到的1個(gè)請(qǐng)求放入第二暫存區(qū)進(jìn)行暫存,以減輕服務(wù)端100當(dāng)前的負(fù)擔(dān)。當(dāng)?shù)诙捍鎱^(qū)飽和時(shí),即第二暫存區(qū)存儲(chǔ)的請(qǐng)求數(shù)達(dá)到上限時(shí),執(zhí)行步驟S411。
步驟S410:合并第一暫存區(qū)內(nèi)的請(qǐng)求,并利用合并后的請(qǐng)求刷新榜單。
在本實(shí)施例中,當(dāng)?shù)谝粫捍鎱^(qū)內(nèi)的請(qǐng)求達(dá)到4個(gè),則將此4個(gè)請(qǐng)求進(jìn)行合并以刷新榜單,比如S408中所述的在1.7s時(shí)的25個(gè)請(qǐng)求放入第一暫存區(qū)時(shí),每滿4個(gè)則進(jìn)行依次刷新,則會(huì)進(jìn)行6次刷新,每次為榜單增加4個(gè)請(qǐng)求,服務(wù)端100對(duì)這25個(gè)請(qǐng)求所做的計(jì)算次數(shù)為6次,相較于傳統(tǒng)的實(shí)時(shí)更新中,一個(gè)請(qǐng)求進(jìn)行一次計(jì)算的方式,能夠減少19次計(jì)算,使服務(wù)端100更加輕松,增加穩(wěn)定性。
步驟411:合并第二暫存區(qū)內(nèi)的請(qǐng)求,并利用合并后的請(qǐng)求刷新榜單。
第二暫存區(qū)的長(zhǎng)度大于第一暫存區(qū)的長(zhǎng)度,能夠緩沖更多的請(qǐng)求,適用于服務(wù)端100更繁忙的時(shí)候,當(dāng)?shù)诙捍鎱^(qū)飽和,合并第二暫存區(qū)內(nèi)的請(qǐng)求,并用合并后的請(qǐng)求刷新榜單。
可以理解,為了防止請(qǐng)求長(zhǎng)期存儲(chǔ)在暫存區(qū)造成榜單更新的延誤,本發(fā)明還可以在步驟S408和S409后直接執(zhí)行步驟S412:響應(yīng)定時(shí)時(shí)間觸發(fā),利用第一暫存區(qū)或第二暫存區(qū)內(nèi)的請(qǐng)求刷新榜單。
由于本實(shí)施例提供的方法中,某些時(shí)候需要將請(qǐng)求數(shù)進(jìn)行暫存,等暫存區(qū)飽和之后再合并暫存區(qū)內(nèi)的請(qǐng)求數(shù)以刷新榜單,當(dāng)暫存區(qū)長(zhǎng)時(shí)間未飽和的時(shí)候,暫存區(qū)內(nèi)的請(qǐng)求未能即時(shí)地對(duì)榜單進(jìn)行刷新,失去了榜單刷新的準(zhǔn)實(shí)時(shí)性,影響用戶的體驗(yàn)。為了便于理解,請(qǐng)參照?qǐng)D5,由于1.5~2.9s之間的請(qǐng)求總和的賦值為122,則2.9~4.1s內(nèi)的請(qǐng)求將放入第二暫存區(qū),在本實(shí)施例中,第二暫存區(qū)的長(zhǎng)度為8,而2.9~4.1s內(nèi)的請(qǐng)求數(shù)的數(shù)量為5,無(wú)法將第二暫存區(qū)填滿,而4.1~7s內(nèi)的7個(gè)請(qǐng)求將直接用于刷新榜單,不會(huì)存入暫存區(qū)中,故而第二暫存區(qū)中的5個(gè)請(qǐng)求將在第二暫存區(qū)存放至少4.1s。
為了解決這一問(wèn)題,本發(fā)明實(shí)施例提供的榜單刷新方法設(shè)置了一定時(shí)腳本,即設(shè)定一定時(shí)觸發(fā)時(shí)間,當(dāng)達(dá)到定時(shí)觸發(fā)時(shí)間時(shí),響應(yīng)該定時(shí)時(shí)間觸發(fā),將第一暫存區(qū)或第二暫存區(qū)內(nèi)殘留的請(qǐng)求數(shù)用以刷新榜單,以達(dá)到對(duì)請(qǐng)求的即時(shí)處理,保證榜單更新的準(zhǔn)實(shí)時(shí)性。由于服務(wù)端100接收到請(qǐng)求的時(shí)間的不確定性,在本實(shí)施例中,定時(shí)腳本的設(shè)置由實(shí)際應(yīng)用中的并發(fā)請(qǐng)求的時(shí)間段和持續(xù)長(zhǎng)度決定。
需要說(shuō)明的是,上述的各個(gè)步驟中,連續(xù)的幾個(gè)步驟實(shí)際上可以并行地執(zhí)行,有時(shí)也可以按照相反的順序執(zhí)行,這依所涉及的功能而定。比如步驟S403和步驟S405可以是先執(zhí)行步驟S403,也可以先執(zhí)行步驟S405。以及步驟S404和步驟S405可以是先執(zhí)行步驟S404,也可以先執(zhí)行步驟S405。
本發(fā)明實(shí)施例提供的榜單刷新方法根據(jù)前一預(yù)定時(shí)間的請(qǐng)求總和的賦值決定將與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求刷新榜單,或?qū)⑶耙活A(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入暫存區(qū)。根據(jù)系統(tǒng)請(qǐng)求的數(shù)量,實(shí)時(shí)的調(diào)整榜單的生成頻率,保證系統(tǒng)的穩(wěn)定,使榜單生成更具實(shí)時(shí)性。
請(qǐng)參照?qǐng)D6,是本發(fā)明較佳實(shí)施例提供的榜單刷新裝置110的功能模塊架構(gòu)示意圖。
本實(shí)施例提供的榜單刷新裝置110包括接收模塊601、刷新模塊602、時(shí)間更新模塊603和賦值更新模塊604。
其中,所述接收模塊601可用于執(zhí)行步驟S401。接收模塊601用于接收對(duì)榜單進(jìn)行刷新的請(qǐng)求,該請(qǐng)求由客戶端200發(fā)送。
所述時(shí)間更新模塊603可用于執(zhí)行步驟S402和S405。時(shí)間更新模塊603用于當(dāng)最新接受到請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的差值在第一時(shí)間范圍內(nèi)時(shí),將啟動(dòng)時(shí)間更新為最新接受到請(qǐng)求的時(shí)間。本實(shí)施例中,第一時(shí)間范圍的取值為1s~2s(不包括2s)。
時(shí)間更新模塊603還用于當(dāng)最新請(qǐng)求的時(shí)間與啟動(dòng)時(shí)間的差值大于第二時(shí)間范圍內(nèi)時(shí),將啟動(dòng)時(shí)間更新為所述最新請(qǐng)求的時(shí)間。本實(shí)施例中,第一時(shí)間范圍的取值為2s~∞。
所述賦值更新模塊604可用于執(zhí)行步驟S403和S404。賦值更新模塊604用于對(duì)前一預(yù)定時(shí)間內(nèi)對(duì)應(yīng)的請(qǐng)求總和的賦值進(jìn)行更新,所述更新后的賦值為最新接受到請(qǐng)求的時(shí)間為止累加的請(qǐng)求總和。賦值更新模塊604還用于對(duì)前一預(yù)定時(shí)間內(nèi)對(duì)應(yīng)的請(qǐng)求總和的賦值進(jìn)行更新,所述更新后的賦值為零。
所述刷新模塊602可用于執(zhí)行步驟S406~S412。刷新模塊602用于在前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在第一范圍內(nèi)時(shí),利用與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求刷新榜單。在本實(shí)施例中,第一范圍的取值為0~10。
刷新模塊602還用于在前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和的賦值在第二范圍內(nèi)時(shí),將與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入第一暫存區(qū),并在第一暫存區(qū)飽和時(shí),合并所述第一暫存區(qū)內(nèi)的請(qǐng)求,利用合并后的請(qǐng)求刷新榜單。本實(shí)施例中,第二范圍的取值為11~100,第一暫存區(qū)為緩沖器,第一暫存區(qū)的長(zhǎng)度為4,即第一暫存區(qū)能夠存儲(chǔ)的請(qǐng)求數(shù)為4個(gè)。
刷新模塊602還用于在前一預(yù)定時(shí)間內(nèi)的請(qǐng)求總和在第三范圍內(nèi)時(shí),將與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入第二暫存區(qū),并在第二暫存區(qū)飽和時(shí),合并第二暫存區(qū)內(nèi)的請(qǐng)求,并利用合并后的請(qǐng)求刷新榜單。刷新模塊602還用于響應(yīng)定時(shí)時(shí)間觸發(fā),利用第一暫存區(qū)或第二暫存區(qū)內(nèi)的請(qǐng)求刷新榜單。本實(shí)施例中,第三范圍的取值為101~∞,第二暫存區(qū)和第一暫存區(qū)均為緩沖器,該緩沖器的長(zhǎng)度可以自由變化,該第二暫存區(qū)的長(zhǎng)度為8,即第二暫存區(qū)能夠存儲(chǔ)的請(qǐng)求數(shù)為8個(gè)。
綜上所述,本發(fā)明實(shí)施例提供了一種榜單刷新方法及裝置,在接收到對(duì)榜單進(jìn)行刷新的請(qǐng)求后,根據(jù)前一預(yù)定時(shí)間的請(qǐng)求總和的賦值決定將與前一預(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求刷新榜單,或?qū)⑶耙活A(yù)定時(shí)間連續(xù)的后一預(yù)定時(shí)間內(nèi)接收到的請(qǐng)求存入暫存區(qū)。根據(jù)系統(tǒng)請(qǐng)求的數(shù)量,實(shí)時(shí)的調(diào)整榜單的生成頻率,保證系統(tǒng)的穩(wěn)定和榜單生成的準(zhǔn)實(shí)時(shí)性。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,也可以通過(guò)其它的方式實(shí)現(xiàn)。以上所描述的裝置實(shí)施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的裝置、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)方式中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能模塊可以集成在一起形成一個(gè)獨(dú)立的部分,也可以是各個(gè)模塊單獨(dú)存在,也可以兩個(gè)或兩個(gè)以上模塊集成形成一個(gè)獨(dú)立的部分。
所述功能如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。