對請求進行加解鎖方法、裝置及系統的制作方法
【技術領域】
[0001]本發明涉及互聯網技術領域,尤其涉及一種對請求進行加解鎖方法、裝置及系統。
【背景技術】
[0002]為了保證數據的一致和完整性,對于任何的數據庫都會設計數據庫鎖機制來使各種共享的資源在并發訪問時可以有序的進行。拿數據庫MySQL來說,MySQL自身也帶有鎖機制。具體的鎖機制的實現過程是:在客戶端訪問MySQL中的某條數據時,首先需要與MySQL建立傳輸控制協議(Transmiss1n Control Protocol,簡稱TCP)連接,然后由MySQL進行自檢,即查詢該條數據是否處于鎖狀態;若該條數據沒有被鎖,則客戶端可以繼續訪問該條數據,若該條數據被鎖,則客戶端進入等待狀態,直到訪問的數據被解鎖后客戶端才可以繼續訪問。
[0003]在上述MySQL進行自檢時,由于MySQL中的鎖機制是進行行級鎖定或頁級鎖定或表級鎖定的,所以首先需要查詢該條數據屬于哪個表或者哪頁或者哪行的數據,然后再判斷該數據所在的行或頁或表是否被鎖。實際應用中,數據庫中的數據量十分龐大,上述數據庫的鎖機制會造成數據庫自檢時資源消耗很大,因此效率低下。
【發明內容】
[0004]鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的對請求進行加解鎖方法、裝置及系統。
[0005]為解決上述技術問題,一方面,本發明提供了一種對請求進行加解鎖方法,方法應用于管理服務器側,包括:
[0006]接收客戶端發送的服務請求,所述服務請求用于請求訪問目標服務器;
[0007]判斷所述服務請求對應的資源是否被占用,所述資源是在目標服務器中的資源;
[0008]若所述資源沒有被占用,則向所述客戶端發送訪問指令,所述訪問指令用于指示所述客戶端訪問所述目標服務器;
[0009]若所述資源被占用,則不響應所述服務請求,以使所述客戶端處于等待狀態。
[0010]第二方面,本發明還提供了一種對請求進行加解鎖方法,方法應用于客戶端側,包括:
[0011]向管理服務器發送服務請求,所述服務請求用于請求訪問目標服務器;
[0012]等待所述管理服務器發送的訪問指令,所述訪問指令用于指示所述客戶端訪問所述目標服務器;
[0013]若接收到所述訪問指令,則訪問所述目標服務器;
[0014]若接收不到所述訪問指令,則繼續等待。
[0015]第三方面,本發明還提供了一種對請求進行加解鎖的裝置,所述裝置位于管理服務器側,包括:
[0016]請求接收單元,用于接收客戶端發送的服務請求,所述服務請求用于請求訪問目標服務器;
[0017]判斷單元,用于判斷所述服務請求對應的資源是否被占用,所述資源是在目標服務器中的資源;
[0018]訪問指令發送單元,用于若所述資源沒有被占用,則向所述客戶端發送訪問指令,所述訪問指令用于指示所述客戶端訪問所述目標服務器;
[0019]等待單元,用于若所述資源被占用,則不響應所述服務請求,以使所述客戶端處于等待狀態。
[0020]第四方面,本發明還提供了一種對請求進行加解鎖的裝置,所述裝置位于客戶端側,包括:
[0021 ]請求發送單元,用于向管理服務器發送服務請求,所述服務請求用于請求訪問目標服務器;
[0022]第一等待單元,用于等待所述管理服務器發送的訪問指令,所述訪問指令用于指示所述客戶端訪問所述目標服務器;
[0023]訪問單元,用于若接收到所述訪問指令,則訪問所述目標服務器;
[0024]第二等待單元,用于若接收不到所述訪問指令,則繼續等待。
[0025]第五方面,本發明還提供了一種對請求進行加解鎖的系統,該系統包括:管理服務器和客戶端;
[0026]所述管理服務器,用于接收所述客戶端發送的服務請求,所述服務請求用于請求訪問目標服務器;并判斷所述服務請求對應的資源是否被占用,所述資源是在目標服務器中的資源;若所述資源沒有被占用,則向所述客戶端發送訪問指令,所述訪問指令用于指示所述客戶端訪問所述目標服務器;若所述資源被占用,則不響應所述服務請求,以使所述客戶端處于等待狀態;
[0027]所述客戶端,用于向所述管理服務器發送所述服務請求;等待所述管理服務器發送的訪問指令;若接收到所述訪問指令,則訪問所述目標服務器;若接收不到所述訪問指令,則繼續等待。
[0028]借由上述技術方案,本發明提供的對請求進行加解鎖的方法、裝置及系統,能夠通過管理服務器接受客戶端用于訪問目標服務器的服務請求,然后由管理服務器先判斷該服務請求對應的在目標服務器中的資源是否被占用,若資源被占用,就不向客戶端發送訪問目標服務器的訪問指令,客戶端處于等待狀態,若資源未被占用則項客戶端發送訪問指令,使客戶端可以訪問目標服務器。與現有技術相比,本發明使目標服務器中的同一個資源每次只允許有一個客戶端進行訪問,在該資源在被占用的情況下,其他的客戶端就需要等待,即實現了資源的加解鎖管理。另外加解鎖的管理是通過獨立的管理服務器實現的,減輕了在目標服務器中實現加解鎖造成的資源消耗,因此提高了加解鎖的效率。
[0029]上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的【具體實施方式】。
【附圖說明】
[0030]通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0031]圖1示出了本發明實施例提供的一種對請求進行加解鎖的方法流程圖;
[0032]圖2示出了本發明實施例提供的另一種對請求進行加解鎖的方法流程圖;
[0033]圖3示出了本發明實施例提供的又一種對請求進行加解鎖的方法流程圖;
[0034]圖4示出了本發明實施例提供的再一種對請求進行加解鎖的方法流程圖;
[0035]圖5示出了本發明實施例提供的一種對請求進行加解鎖的裝置的組成框圖;
[0036]圖6示出了本發明實施例提供的另一種對請求進行加解鎖的裝置的組成框圖;
[0037]圖7示出了本發明實施例提供的又一種對請求進行加解鎖的裝置的組成框圖;
[0038]圖8示出了本發明實施例提供的再一種對請求進行加解鎖的裝置的組成框圖;
[0039]圖9示出了本發明實施例提供的一種對請求進行加解鎖的系統框圖。
【具體實施方式】
[0040]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0041]為解決現有數據庫鎖機制效率低下的問題,本發明實施例提供了一種對請求進行加解鎖的方法,如圖1所示,該方法應用于管理服務器側,該方法包括:
[0042]101、接收客戶端發送的服務請求。
[0043]管理服務器接收客戶端發送的服務請求,該服務請求用于請求訪問目標服務器。需要說明的是,在接收客戶端發送的服務請求之前必須與客戶端建立TCP連接,然后通過TCP連接接收客戶端發送的服務請求。TCP連接的建立是客戶端與管理服務器之間進行后續所有通訊的橋梁。
[0044]102、判斷服務請求對應的資源是否被占用。
[0045]需要說明的是對于步驟101中接收到的服務請求對應的資源是不能被不同的客戶端同時進行訪問的。所以需要首先判斷服務請求對應的資源是否被占用。
[0046]具體的判斷資源是否被占用的方法為:提前為目標服務器中的該資源設置一個鎖;當該資源被占用時,該鎖也處于被占用的狀態,當該資源未被占用時,該鎖也處于未被占用的狀態;然后通過判斷資源對應的鎖是否被占用來判斷資源是否被占用。
[0047]103、若資源沒有被占用,則向客戶端發送訪問指令。
[0048]若管理服務器判斷服務請求中對應的資源未被占用,則會向發送服務請求的客戶端發送訪問指令,該訪問指令用于告知客戶端可以訪問目標服務器。
[0049]104、若資源被占用,則不響應服務請求。
[0050]若管理服務器判斷服務請求中對應的資源被占用,則不會響應客戶端發送的服務請求,使發送服務請求的客戶端處于等待狀態。
[0051]本實施例提供的對請求進行加解鎖的方法,能夠通過管理服務器接受客戶端用于訪問目標服務器的服務請