亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

資源獲取的方法及服務(wù)器與流程

文檔序號:12363183閱讀:1405來源:國知局
資源獲取的方法及服務(wù)器與流程

本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體地,涉及一種資源獲取的方法及服務(wù)器。



背景技術(shù):

目前,集群環(huán)境下的資源共享通常采用樂觀鎖對數(shù)據(jù)庫資源進行加鎖,避免并發(fā)線程獲取同一資源時產(chǎn)生沖突。其中,資源共享的數(shù)據(jù)庫中的同一資源只能被一個線程訪問。

采用樂觀鎖對資源進行訪問的實現(xiàn)機制如下:首先,在數(shù)據(jù)庫的資源池取到待鎖資源,再采用樂觀鎖對待鎖資源進行鎖定,其中,如果鎖定不成功,則重新鎖定,直到成功為止。樂觀鎖鎖定成功后,服務(wù)器從數(shù)據(jù)庫中取走資源并將資源返回給客戶端,客戶端對資源的處理完成后從資源池中移除資源,若客戶端對資源的處理失敗,則將資源重新返回數(shù)據(jù)庫資源池中。樂觀鎖鎖定后,其他線程不能對該資源進行訪問,從而避免了沖突。

由上可知,樂觀鎖是針對數(shù)據(jù)庫的每一個資源進行加鎖,開銷過大,并且采用樂觀鎖對資源進行加鎖后,線程每次只能從數(shù)據(jù)庫中獲取一個資源,導(dǎo)致數(shù)據(jù)庫的吞吐量過小。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的是提供一種資源獲取的方法及服務(wù)器,用以解決現(xiàn)有的資源數(shù)據(jù)庫在并發(fā)訪問共享資源時吞吐量過小的技術(shù)問題。

為了實現(xiàn)上述目的,本發(fā)明提供一種資源獲取的方法,所述方法應(yīng)用于服務(wù)器,所述服務(wù)器與資源數(shù)據(jù)庫相連,所述方法包括:

服務(wù)器接收客戶端發(fā)送的至少一個資源請求消息,所述資源請求消息用于獲取所述資源數(shù)據(jù)庫中的資源;

所述服務(wù)器根據(jù)程序鎖對所述至少一個資源請求消息進行加鎖處理,其中,所述程序鎖允許所述服務(wù)器在同一時刻只處理一個資源請求消息,其中,所述資源數(shù)據(jù)庫中的同一資源只能被一個資源請求消息訪問;

所述服務(wù)器根據(jù)第一資源請求消息獲取內(nèi)存隊列中的資源;其中,所述第一資源請求消息是所述至少一個資源請求消息中的任一資源請求消息,所述內(nèi)存隊列中存儲有所述服務(wù)器從所述資源數(shù)據(jù)庫中批量獲取的資源;

所述服務(wù)器將根據(jù)所述第一資源請求消息獲取到的資源返回給所述客戶端。

可選地,所述方法還包括:

所述服務(wù)器在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源;

所述服務(wù)器接收所述客戶端發(fā)送的處理成功消息,所述處理成功消息用于指示所述客戶端已經(jīng)完成對存入所述鎖隊列的資源的處理;

所述服務(wù)器將所述鎖隊列的資源記錄到完成隊列的第二文件塊中。

可選地,所述方法還包括:

所述服務(wù)器確定所述完成隊列中的所述第二文件塊已經(jīng)記錄滿資源;

所述服務(wù)器在所述資源數(shù)據(jù)庫中刪除所述第二文件塊中記錄的資源。

可選地,所述服務(wù)器在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源之后,所述方法還包括:

所述服務(wù)器啟動一定時器;

所述服務(wù)器確定所述定時器超時,將所述第二文件塊與所述第一文件塊中的資源進行比較;

所述服務(wù)器在所述資源數(shù)據(jù)庫中刪除所述第二文件塊中記錄的與所述第一文件塊中相同的資源;

所述服務(wù)器將所述第一文件塊中記錄的與所述第二文件塊中不同的資源返回至所述資源數(shù)據(jù)庫。

可選地,所述方法還包括:

所述服務(wù)器在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源;

所述服務(wù)器接收所述客戶端發(fā)送的處理失敗消息,所述處理失敗消息用于指示所述客戶端對所述資源的處理失?。?/p>

所述服務(wù)器將所述第一文件塊中記錄的資源返回至所述資源數(shù)據(jù)庫。

可選地,所述方法還包括:

所述服務(wù)器從所述資源數(shù)據(jù)庫中批量獲取資源,并將所述資源存入所述內(nèi)存隊列。

本發(fā)明還提供一種服務(wù)器,所述服務(wù)器與資源數(shù)據(jù)庫相連,所述服務(wù)器包括:

接收單元,用于接收客戶端發(fā)送的至少一個資源請求消息,所述資源請求消息用于獲取所述資源數(shù)據(jù)庫中的資源;

程序鎖單元,根據(jù)程序鎖對所述至少一個資源請求消息進行加鎖處理,其中,所述程序鎖允許所述服務(wù)器在同一時刻只處理一個資源請求消息,其中,所述資源數(shù)據(jù)庫中的同一資源只能被一個資源請求消息訪問;

第一獲取單元,用于根據(jù)第一資源請求消息獲取內(nèi)存隊列中的資源;其中,所述第一資源請求消息是所述至少一個資源請求消息中的任一資源請求消息,所述內(nèi)存隊列中存儲有所述服務(wù)器從所述資源數(shù)據(jù)庫中批量獲取的資源;

響應(yīng)單元,用于將根據(jù)所述第一資源請求消息獲取到的資源返回給所述客戶端。

可選地,所述服務(wù)器還包括記錄單元,用于在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源;

所述接收單元還用于,接收所述客戶端發(fā)送的處理成功消息,所述處理成功消息用于指示所述客戶端已經(jīng)完成對存入所述鎖隊列的資源的處理;

所述記錄單元還用于,將所述鎖隊列的資源記錄到完成隊列的第二文件塊中。

可選地,所述服務(wù)器還包括確定單元,用于確定所述完成隊列中的所述第二文件塊已經(jīng)記錄滿資源;

刪除單元,用于在所述資源數(shù)據(jù)庫中刪除所述第二文件塊中記錄的資源。

可選地,所述服務(wù)器還包括定時單元,用于在所述記錄單元在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源之后,啟動一定時器;

比較單元,用于在確定所述定時器超時,將所述第二文件塊與所述第一文件塊中的資源進行比較;

刪除單元,用于在所述資源數(shù)據(jù)庫中刪除所述第二文件塊中記錄的與所述第一文件塊中相同的資源;

資源返回單元,用于將所述第一文件塊中記錄的與所述第二文件塊中不同的資源返回至所述資源數(shù)據(jù)庫。

可選地,所述服務(wù)器還包括記錄單元,用于在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源;

所述接收單元還用于,接收所述客戶端發(fā)送的處理失敗消息,所述處理失敗消息用于指示所述客戶端對所述資源的處理失??;

資源返回單元,用于將所述第一文件塊中記錄的資源返回至所述資源數(shù)據(jù)庫。

可選地,所述服務(wù)器還包括第二獲取單元,用于從所述資源數(shù)據(jù)庫中批量獲取資源,并將所述資源存入所述內(nèi)存隊列。

通過上述技術(shù)方案,內(nèi)存隊列中存儲有服務(wù)器從資源數(shù)據(jù)庫中批量獲取的資源,并采用程序鎖對線程進行加鎖。相比現(xiàn)有技術(shù),本發(fā)明的鎖定方式由數(shù)據(jù)庫轉(zhuǎn)移到內(nèi)存隊列中,減小了鎖資源的開銷。并且,相比現(xiàn)有技術(shù)中只能每次單條從數(shù)據(jù)庫中獲取資源,本發(fā)明可以從數(shù)據(jù)庫中批量獲取資源,提高數(shù)據(jù)庫資源池的數(shù)據(jù)吞吐量。

本發(fā)明的其他特征和優(yōu)點將在隨后的具體實施方式部分予以詳細說明。

附圖說明

附圖是用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與下面的具體實施方式一起用于解釋本發(fā)明,但并不構(gòu)成對本發(fā)明的限制。在附圖中:

圖1是現(xiàn)有技術(shù)中的一種系統(tǒng)架構(gòu)圖;

圖2是本發(fā)明實施例提供的一種資源獲取的方法的流程示意圖;

圖3是本發(fā)明實施例提供的一種系統(tǒng)架構(gòu)圖;

圖4是基于圖3所示的系統(tǒng)架構(gòu)的一種資源獲取的方法的流程示意圖;

圖5A是本發(fā)明實施例提供的一種服務(wù)器的結(jié)構(gòu)示意圖;

圖5B是本發(fā)明實施例提供的另一種服務(wù)器的結(jié)構(gòu)示意圖。

具體實施方式

以下結(jié)合附圖對本發(fā)明的具體實施方式進行詳細說明。應(yīng)當(dāng)理解的是,此處所描述的具體實施方式僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。

為了使本領(lǐng)域的技術(shù)人員更容易理解本發(fā)明實施例提供的技術(shù)方案,下面首先對涉及到的相關(guān)技術(shù)術(shù)語進行簡單介紹。

服務(wù)器集群:隨著電子商務(wù)的發(fā)展,人們已經(jīng)可以很方便地利用網(wǎng)站來購買各種商品。伴隨而來的是網(wǎng)站的瀏覽量及訂單量的不斷增長,對網(wǎng)站運營系統(tǒng)的并發(fā)處理能力要求越來越高。單個服務(wù)器無論性能如何強勁,總有瓶頸,且存在單點故障問題。在此種情況下,現(xiàn)有技術(shù)中出現(xiàn)了利用多個計算機進行并行計算從而獲得很高的計算速度,并且通過多個計算機做備份,使得任何一個機器發(fā)生故障時整個系統(tǒng)還是能正常運行的技術(shù)方案。其中,多個計算機的組合即為服務(wù)器集群。

如圖1所示,資源數(shù)據(jù)庫與服務(wù)器集群中的每個服務(wù)器相連,每個服務(wù)器可以接收客戶端發(fā)送的資源請求消息,每個服務(wù)器在接收到資源請求消息后,可以從資源數(shù)據(jù)庫中獲取資源返回給客戶端。其中,該資源數(shù)據(jù)庫中的同一個資源只能被服務(wù)器集群中的一個節(jié)點所訪問。舉例說明,該資源數(shù)據(jù)庫可以為火車票務(wù)系統(tǒng)的數(shù)據(jù)庫,在此種情況下,數(shù)據(jù)庫資源遵循先到先得的原則,先訪問的用戶可以先取走火車票,在該用戶對火車票的處理完成之前,其他用戶不能再次獲取到該火車票。

然而,服務(wù)器集群也隨之帶來了訪問競爭的問題。現(xiàn)有技術(shù)中,數(shù)據(jù)訪問線程無區(qū)別的競爭數(shù)據(jù)庫的樂觀鎖,帶來了極大的鎖競爭,降低了整個集群的吞吐量。

本發(fā)明實施例為了解決上述技術(shù)問題,提供一種資源獲取的方法,該方法的執(zhí)行主體為服務(wù)器,該服務(wù)器與資源數(shù)據(jù)庫相連。如圖2所示,該方法包括:

S201、服務(wù)器接收客戶端發(fā)送的至少一個資源請求消息,該資源請求消息用于獲取該資源數(shù)據(jù)庫中的資源。

其中,該資源數(shù)據(jù)庫中的同一資源只能被一個資源請求消息訪問。

示例地,該資源數(shù)據(jù)庫為火車票務(wù)系統(tǒng)的數(shù)據(jù)庫,其資源池中包括每列火車未售的火車票。這樣,每個用戶使用客戶端買票的下單操作即向服務(wù)器發(fā)送一次資源獲取請求。

上述只是舉例說明,本發(fā)明實施例還可以用于其他資源數(shù)據(jù)庫,例如,購物網(wǎng)站的商品數(shù)據(jù)庫等,本發(fā)明對此不做限定。

S202、該服務(wù)器根據(jù)程序鎖對所述至少一個資源請求消息進行加鎖處理。

其中,所述程序鎖允許所述服務(wù)器在同一時刻只處理一個資源請求消息。

示例地,程序鎖的實現(xiàn)機制可以如下:服務(wù)器存儲有鎖配置索引,該鎖配置索引包括鎖資源以及該鎖資源的狀態(tài)信息。該服務(wù)器接收到資源請求消息后,該服務(wù)器根據(jù)該鎖資源的狀態(tài)信息確定該鎖資源是否處于未使用狀態(tài),若該鎖資源處于未使用狀態(tài),則獲取該鎖資源,并將該服務(wù)器的鎖配置索引中該鎖資源的狀態(tài)信息更改為使用狀態(tài)。獲取到該鎖資源后,該服務(wù)器根據(jù)該資源請求消息從內(nèi)存隊列獲取資源。并在獲取到資源后,將鎖配置索引中該鎖資源的狀態(tài)信息更改為未使用狀態(tài)。

S203、該服務(wù)器根據(jù)第一資源請求消息獲取內(nèi)存隊列中的資源。

其中,該第一資源請求消息是所述至少一個資源請求消息中的任一資源請求消息,該內(nèi)存隊列中存儲有該服務(wù)器從該資源數(shù)據(jù)庫中批量獲取的資源。

也就是說,該服務(wù)器預(yù)先從資源數(shù)據(jù)庫中批量獲取一批資源存放在內(nèi)存隊列中。這樣,該服務(wù)器在接收到資源請求消息后,可以直接從內(nèi)存隊列中獲取到資源。

S204、該服務(wù)器將根據(jù)所述第一資源請求消息獲取到的資源返回給所述客戶端。

采用上述技術(shù)方案,內(nèi)存隊列中存儲有服務(wù)器從資源數(shù)據(jù)庫中批量獲取的資源,并采用程序鎖對線程進行加鎖。相比現(xiàn)有技術(shù),本發(fā)明的鎖定方式由數(shù)據(jù)庫轉(zhuǎn)移到內(nèi)存隊列中,減小了鎖資源的開銷。并且,相比現(xiàn)有技術(shù)中只能每次單條從數(shù)據(jù)庫中獲取資源,本發(fā)明可以從數(shù)據(jù)庫中批量獲取資源,提高數(shù)據(jù)庫資源池的數(shù)據(jù)吞吐量。

為了使本領(lǐng)域的技術(shù)人員更加理解本發(fā)明實施例提供的技術(shù)方案,下面對上述資源獲取的方法進行詳細的說明。

具體地,該服務(wù)器可以獨立采用一個線程執(zhí)行從該資源數(shù)據(jù)庫中批量獲取資源,并將該資源存入該內(nèi)存隊列的步驟。示例地,該服務(wù)器可以按照一固定周期從該資源數(shù)據(jù)庫中批量獲取資源,也可以在檢測到該內(nèi)存隊列中的資源低于預(yù)設(shè)水位時,觸發(fā)從資源數(shù)據(jù)庫中獲取資源,并將獲取到的資源存入內(nèi)存隊列。

進一步地,本發(fā)明實施例中,該服務(wù)器在將資源返回給客戶端后,還可以在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源。并且,該服務(wù)器在接收到所述客戶端發(fā)送的處理成功消息后,可以將所述鎖隊列的資源記錄到完成隊列的第二文件塊中。其中,所述處理成功消息用于指示所述客戶端已經(jīng)完成對存入所述鎖隊列的資源的處理。

進一步地,基于該第二文件塊以及該第一文件塊,本發(fā)明實施例可以實現(xiàn)對資源數(shù)據(jù)庫中資源進行批量移除。具體地,包括如下兩種方式:

方式一、該服務(wù)器在確定所述完成隊列中的所述第二文件塊已經(jīng)記錄滿資源時,在所述資源數(shù)據(jù)庫中刪除所述第二文件塊中記錄的資源。

具體地,該服務(wù)器可以采用一個獨立線程周期性檢查第二文件塊中是否已經(jīng)記錄滿資源,若是,則該服務(wù)器從資源數(shù)據(jù)庫的資源池中批量移除該第二文件塊中記錄的資源。相比現(xiàn)有技術(shù)中,客戶端每處理完一個資源,服務(wù)器均需要在數(shù)據(jù)庫移除單個資源,本發(fā)明實施例批量移除提升了數(shù)據(jù)庫在并發(fā)訪問共享資源時的吞吐量。

值得說明的是,在具體實施時,該完成隊列中可以包括多個文件塊,服務(wù)器采用一個線程輪詢各個文件塊是否記錄滿資源,該第二文件塊是所述多個文件塊中的任一文件塊。

以火車票務(wù)網(wǎng)系統(tǒng)的數(shù)據(jù)庫舉例說明,該服務(wù)器接收到客戶端發(fā)送的資源請求消息后,按照先后順序?qū)?nèi)存隊列中的第一張火車票的資源返回至客戶端,并將該火車票的信息記錄在鎖隊列的第一文件塊中??蛻舳嗽诟犊畲_認后,向該服務(wù)器發(fā)送處理成功消息,該服務(wù)器接收到該處理成功消息后,將該火車票的信息記錄在完成隊列的第二文件塊中。該服務(wù)器對每張火車票均按照上述過程處理,這樣,該服務(wù)器在檢測到第二文件塊中存滿火車票的記錄時,從該數(shù)據(jù)庫中批量移除已經(jīng)處理完成的火車票。其中,在數(shù)據(jù)庫的資源池中,若某一資源已經(jīng)被服務(wù)器獲取放入內(nèi)存隊列中,則該資源池可以對該資源進行標記,指示該資源已經(jīng)被服務(wù)器獲取,避免服務(wù)器下一次批量獲取資源時,重復(fù)獲取到該資源。若該資源未被客戶端處理,則該服務(wù)器將該資源返回至數(shù)據(jù)庫,即刪除資源池對該資源的標記,使得服務(wù)器下一次批量獲取資源時,可以再次獲取到該資源。

也就是說,該服務(wù)器在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源后,若接收到客戶端發(fā)送的處理失敗消息,則將所述第一文件塊中記錄的資源返回至所述資源數(shù)據(jù)庫。其中,所述處理失敗消息用于指示所述客戶端對所述資源的處理失敗。

方式二、該服務(wù)器在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源之后,啟動一定時器;該服務(wù)器確定所述定時器超時,將所述第二文件塊與所述第一文件塊中的資源進行比較;該服務(wù)器在所述資源數(shù)據(jù)庫中刪除所述第二文件塊中記錄的與所述第一文件塊中相同的資源;該服務(wù)器將所述第一文件塊中記錄的與所述第二文件塊中不同的資源返回至所述資源數(shù)據(jù)庫。

仍以火車票務(wù)網(wǎng)系統(tǒng)的數(shù)據(jù)庫舉例說明,服務(wù)器將火車票信息返回給客戶端后,開始計時。若在四十分鐘內(nèi)未接收到該客戶端返回的處理成功消息,即客戶端在接收到服務(wù)器返回的火車票信息后,未在四十分鐘內(nèi)付款,則該服務(wù)器需要將該火車票返回至數(shù)據(jù)庫。此時,該火車票的信息記錄在第一文件塊中,未記錄在第二文件塊中,也就是說,鎖隊列的第一文件塊與完成隊列的第二文件塊中記錄的資源可能不一致,在此種情況下,第一文件塊以及第二文件塊中均記錄的資源為已經(jīng)處理完成的資源,對于這部分資源,服務(wù)器可以在數(shù)據(jù)庫中批量移除;第一文件塊中記錄且第二文件塊中未記錄的資源為在預(yù)定時間內(nèi)未處理完成的資源,對于這部分資源,該服務(wù)器可以批量返回至數(shù)據(jù)庫。相比現(xiàn)有技術(shù)中的單個移除和單個返回,本發(fā)明實施例提高了數(shù)據(jù)庫在并發(fā)訪問共享資源時的吞吐量。

上述兩種方式僅是舉例說明,在具體實施時,還可以采用其他的批量刪除方式,例如,在預(yù)定時長的結(jié)束時刻,直接在數(shù)據(jù)庫中批量刪除第二文件塊中記錄的資源,無需對第一文件塊與第二文件塊進行校驗。本發(fā)明對此不做限定。

下面結(jié)合具體的應(yīng)用場景對本發(fā)明實施例提供的一種資源獲取方法進行說明。

首先,服務(wù)器與數(shù)據(jù)庫的連接架構(gòu)如圖3所示。服務(wù)器包括內(nèi)存隊列,鎖隊列以及完成隊列,其中,鎖隊列包括文件塊1和文件塊2,完成隊列包括文件塊3和文件塊4。其中,該服務(wù)器作為資源共享的服務(wù)器,其上層還連接有服務(wù)器集群,該服務(wù)器集群用于接收客戶端發(fā)送的資源請求消息,本發(fā)明實施例中所描述的服務(wù)器接收客戶端發(fā)送的消息,可以理解為是服務(wù)器集群接收客戶端消息,再將消息發(fā)送至資源共享的服務(wù)器。另外,資源共享的服務(wù)器也可以是一個集群,圖3中所示的服務(wù)器可以是資源共享服務(wù)器集群中的主服務(wù)器。值得說明的是,資源共享服務(wù)器的集群中為上層提供服務(wù)器只有主服務(wù)器,其他服務(wù)器用作備份,為了便于理解圖3中未一一示出。

如圖4所示,在圖3所示的資源數(shù)據(jù)庫為火車票務(wù)系統(tǒng)的數(shù)據(jù)庫的情況下,本發(fā)明實施例提供的一種資源獲取的方法的流程包括:

S401、服務(wù)器從資源數(shù)據(jù)庫批量獲取火車票資源,并將獲取到的火車票資源寫入內(nèi)存隊列。

示例地,若內(nèi)存隊列的容量為2000,則該服務(wù)器可以一次性從資源數(shù)據(jù)庫中獲取2000張火車票的資源。

S402、該服務(wù)器接收客戶端發(fā)送的至少一個資源請求消息。

值得說明的是,該服務(wù)器可以是獲取不同的客戶端發(fā)送的多個資源請求消息,所述至少一個資源請求消息可以是多個客戶端同一時刻發(fā)送至該服務(wù)器的消息。該資源請求消息用戶獲取火車票資源。

S403、該服務(wù)器基于程序鎖機制確定本次處理的第一資源請求消息。

具體地,對于并發(fā)線程上的資源請求消息,該服務(wù)器基于程序鎖可以每次只對一個資源請求消息進行處理。避免了沖突。該第一資源請求消息為所述至少一個資源請求消息中的任一個資源請求消息。

S404、該服務(wù)器根據(jù)該資源請求消息從內(nèi)存隊列中獲取第一張火車票,并將該第一張火車票返回至客戶端。

值得說明的是,第一張火車票從內(nèi)存隊列中取出后,該內(nèi)存隊列存儲該第一張火車票的數(shù)據(jù)塊即被標記為無效或者進行擦除,避免服務(wù)器下一次重復(fù)從該數(shù)據(jù)庫獲取資源。

S405、該服務(wù)器將該第一火車票記錄在鎖隊列的文件塊1。

S406、該服務(wù)器啟動一定時器。

S407、該服務(wù)器判斷該定時器是否超時。

進一步地,若未超時,則執(zhí)行步驟S408和S409;若超時,則執(zhí)行步驟S410至S412。

S408、該服務(wù)器在接收到客戶端發(fā)送的處理成功消息時,將該第一火車票記錄在完成隊列的文件塊3中。

S409、該服務(wù)器在確定該文件塊3已經(jīng)記錄滿火車票信息時,在該資源數(shù)據(jù)庫中刪除該文件塊3記錄的所有火車票。

示例地,該文件塊3的容量為1000,則該服務(wù)器可以一次性在資源數(shù)據(jù)庫中刪除1000張已經(jīng)處理成功的火車票。

S410、該服務(wù)器將該文件塊1與該文件塊3中的火車票信息進行比較。

S411、該服務(wù)器在該資源數(shù)據(jù)庫中刪除該文件塊3中記錄的與該文件塊1中相同的火車票。

S412、該服務(wù)器將該文件塊1中記錄的與該文件塊3中不同的火車票返回至該資源數(shù)據(jù)庫。

采用上述方法,內(nèi)存隊列中存儲有服務(wù)器從資源數(shù)據(jù)庫中批量獲取的資源,并采用程序鎖對線程進行加鎖。相比現(xiàn)有技術(shù),本發(fā)明的鎖定方式由數(shù)據(jù)庫轉(zhuǎn)移到內(nèi)存隊列中,減小了鎖資源的開銷。并且,參照上述步驟S401以及步驟S409,相比現(xiàn)有技術(shù)中只能每次單條從數(shù)據(jù)庫中獲取資源,本發(fā)明可以從數(shù)據(jù)庫中批量獲取資源以及批量移除資源,從而提高數(shù)據(jù)庫資源池的數(shù)據(jù)吞吐量。

對于上述方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本發(fā)明所必須的。

本發(fā)明實施例還提供一種服務(wù)器50,用于實施上述方法實施例提供的一種資源獲取的方法,其中,該服務(wù)器50與資源數(shù)據(jù)庫相連,如圖5A所示,該服務(wù)器50包括:

接收單元501,用于接收客戶端發(fā)送的至少一個資源請求消息,所述資源請求消息用于獲取所述資源數(shù)據(jù)庫中的資源。

其中,該資源數(shù)據(jù)庫中的同一資源只能被一個資源請求消息訪問。

程序鎖單元502,根據(jù)程序鎖對所述至少一個資源請求消息進行加鎖處理,其中,所述程序鎖允許所述服務(wù)器在同一時刻只處理一個資源請求消息。

第一獲取單元503,用于根據(jù)第一資源請求消息獲取內(nèi)存隊列中的資源。其中,所述第一資源請求消息是所述至少一個資源請求消息中的任一資源請求消息,所述內(nèi)存隊列中存儲有所述服務(wù)器從所述資源數(shù)據(jù)庫中批量獲取的資源。

響應(yīng)單元504,用于將根據(jù)所述第一資源請求消息獲取到的資源返回給所述客戶端。

可選地,如圖5B所示,該服務(wù)器50還包括記錄單元505,用于在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源;所述接收單元501還用于,接收所述客戶端發(fā)送的處理成功消息,所述處理成功消息用于指示所述客戶端已經(jīng)完成對存入所述鎖隊列的資源的處理;所述記錄單元505還用于,將所述鎖隊列的資源記錄到完成隊列的第二文件塊中。

可選地,如圖5B所示,該服務(wù)器50還包括確定單元506,用于確定所述完成隊列中的所述第二文件塊已經(jīng)記錄滿資源;刪除單元507,用于在所述資源數(shù)據(jù)庫中刪除所述第二文件塊中記錄的資源。

可選地,如圖5B所示,該服務(wù)器50還包括定時單元508,用于在所述記錄單元在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源之后,啟動一定時器;比較單元509,用于在確定所述定時器超時,將所述第二文件塊與所述第一文件塊中的資源進行比較;所述刪除單元507用于在所述資源數(shù)據(jù)庫中刪除所述第二文件塊中記錄的與所述第一文件塊中相同的資源;資源返回單元510,用于將所述第一文件塊中記錄的與所述第二文件塊中不同的資源返回至所述資源數(shù)據(jù)庫。

可選地,所述記錄單元505用于在鎖隊列的第一文件塊中記錄已經(jīng)被所述客戶端取走的資源;所述接收單元501還用于,接收所述客戶端發(fā)送的處理失敗消息,所述處理失敗消息用于指示所述客戶端對所述資源的處理失??;所述資源返回單元510還用于將所述第一文件塊中記錄的資源返回至所述資源數(shù)據(jù)庫。

可選地,如圖5B所示,該服務(wù)器50還包括第二獲取單元511,用于從所述資源數(shù)據(jù)庫中批量獲取資源,并將所述資源存入所述內(nèi)存隊列。

值得說明的是,以上對服務(wù)器50的單元劃分,僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式。并且,上述各功能單元的物理實現(xiàn)也可能有多種實現(xiàn)方式,本發(fā)明對此不做限定。

另外,所屬本領(lǐng)域的技術(shù)人員應(yīng)該清楚地了解到,為描述的方便和簡潔,上述描述的服務(wù)器的各單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,此處不再贅述。

在本申請所提供的實施例中,應(yīng)該理解到,所公開的裝置和方法,可以通過其它的方式實現(xiàn)。例如,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。

上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、RAM(Random Access Memory,隨機存取存儲器)、磁碟或者光盤等各種可以存儲數(shù)據(jù)的介質(zhì)。

以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以權(quán)利要求的保護范圍為準。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1