數(shù)據(jù)庫的高可用解決方法、連接控制裝置和系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種數(shù)據(jù)庫的高可用解決方法、連接控制裝置和系統(tǒng),方法包括:接收客戶端向數(shù)據(jù)庫發(fā)送的針對目標服務的請求;在連接控制裝置的配置文件中獲取與目標服務對應的目標數(shù)據(jù)庫節(jié)點的地址信息;建立客戶端與目標數(shù)據(jù)庫節(jié)點的連接。通過本發(fā)明,能夠使得客戶端在對數(shù)據(jù)庫發(fā)起訪問時,可通過連接控制裝置的配置文件查找得到最新的數(shù)據(jù)庫的節(jié)點的地址信息建立連接,使得即使當數(shù)據(jù)庫發(fā)生遷移、擴容等改變時,仍然能保證客戶端可以找到對應的數(shù)據(jù)庫節(jié)點建立連接,從而使數(shù)據(jù)庫達到了高可用的目的。
【專利說明】數(shù)據(jù)庫的高可用解決方法、連接控制裝置和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,具體涉及一種數(shù)據(jù)庫的高可用解決方法、連接控制裝置和系統(tǒng)。
【背景技術(shù)】
[0002]MongoDB,是目前在IT行業(yè)非常流行的一種非關(guān)系型數(shù)據(jù)庫(NoSQL),其靈活的數(shù)據(jù)存儲方式備受當前IT從業(yè)人員的青睞。隨著互聯(lián)網(wǎng)Web2.0網(wǎng)站的興起,NoSQL在國內(nèi)掀起一陣熱潮,其中風頭最勁的莫過于MongoDB 了。越來越多的業(yè)界公司已經(jīng)將MongoDB投入實際的應用環(huán)境,很多創(chuàng)業(yè)團隊也將MongoDB作為自己的首選數(shù)據(jù)庫,創(chuàng)造出非常之多的移動互聯(lián)網(wǎng)應用。
[0003]在目前的MongoDB數(shù)據(jù)庫中,客戶端與數(shù)據(jù)庫是直接連接的,客戶端向MongoDB數(shù)據(jù)庫請求某種服務時,直接向?qū)腗ongoDB數(shù)據(jù)庫的IP地址發(fā)送連接請求,并在連接建立后獲取所需數(shù)據(jù)。
[0004]但是由于數(shù)據(jù)庫存儲量的逐漸增加等原因,經(jīng)常會發(fā)生數(shù)據(jù)庫遷移、數(shù)據(jù)庫集群服務器中某一服務器宕機等事件,需要將用戶的服務轉(zhuǎn)移其他服務器上進行,而客戶端對于服務器的變化是無法感知的,這時,客戶端就無法正確的通過原IP地址訪問數(shù)據(jù)庫的資源,有可能造成重大故障。目前尚無有效技術(shù)手段可解決這一問題。
【發(fā)明內(nèi)容】
[0005]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種數(shù)據(jù)庫的高可用解決方法、連接控制裝置和系統(tǒng)。
[0006]依據(jù)本發(fā)明的一個方面,提供了一種數(shù)據(jù)庫的高可用解決方法,應用于耦接在客戶端與數(shù)據(jù)庫之間的連接控制裝置,所述方法包括:
[0007]接收所述客戶端向所述數(shù)據(jù)庫發(fā)送的針對目標服務的請求;
[0008]在所述連接控制裝置的配置文件中獲取與所述目標服務對應的目標數(shù)據(jù)庫節(jié)點的地址信息;以及
[0009]建立所述客戶端與所述目標數(shù)據(jù)庫節(jié)點的連接;
[0010]其中,所述配置文件中記錄有所述數(shù)據(jù)庫所提供的服務,以及該服務所對應的數(shù)據(jù)庫節(jié)點的地址信息。
[0011]可選地,所述方法進一步包括:
[0012]當所述數(shù)據(jù)庫發(fā)生遷移時,在所述連接控制裝置的配置文件中配置遷移后的所述數(shù)據(jù)庫的節(jié)點的地址信息。
[0013]可選地,所述方法進一步包括:
[0014]在所述連接控制裝置的配置文件中刪除遷移前的所述數(shù)據(jù)庫的節(jié)點的地址信息。
[0015]可選地,所述方法進一步包括:
[0016]當所述數(shù)據(jù)庫的客戶端服務器異常時,重啟所述客戶端服務器中的Web服務端。
[0017]可選地,所述連接控制裝置為qconf或Linux虛擬服務器LVS。
[0018]可選地,所述地址信息包括IP地址和端口號。
[0019]可選地,所述數(shù)據(jù)庫為MongoDB數(shù)據(jù)庫。
[0020]依據(jù)本發(fā)明的一個方面,還提供了連接控制裝置,耦接于客戶端與數(shù)據(jù)庫之間以實現(xiàn)所述數(shù)據(jù)庫的高可用,所述連接控制裝置包括:
[0021]接收模塊,適于接收所述客戶端向所述數(shù)據(jù)庫發(fā)送的針對目標服務的請求;
[0022]解析模塊,適于在所述連接控制裝置的配置文件中獲取與所述目標服務對應的目標數(shù)據(jù)庫節(jié)點的地址信息;以及
[0023]建立模塊,適于建立所述客戶端與所述目標數(shù)據(jù)庫節(jié)點的連接;
[0024]其中,所述配置文件中記錄有所述數(shù)據(jù)庫所提供的服務,以及該服務所對應的數(shù)據(jù)庫節(jié)點的地址信息。
[0025]可選地,所述解析模塊進一步包括:
[0026]信息增加單元,適于當所述數(shù)據(jù)庫發(fā)生遷移時,在所述連接控制裝置的配置文件中增加遷移后的所述數(shù)據(jù)庫的節(jié)點的地址信息。
[0027]可選地,所述解析模塊進一步包括:
[0028]信息刪除單元,適于在所述連接控制裝置的配置文件中刪除遷移前的所述數(shù)據(jù)庫的節(jié)點的地址信息。
[0029]可選地,所述解析模塊進一步包括:
[0030]重啟單元,適于當所述數(shù)據(jù)庫的客戶端服務器異常時,重啟所述客戶端服務器中的Web服務端。
[0031]可選地,所述連接控制裝置為qconf或LVS。
[0032]可選地,所述地址信息包括IP地址和端口號。
[0033]可選地,所述數(shù)據(jù)庫為Mongodb數(shù)據(jù)庫。
[0034]依據(jù)本發(fā)明的一個方面,還提供了一種高可用的數(shù)據(jù)系統(tǒng),所述系統(tǒng)包括客戶端、為所述客戶端提供服務的數(shù)據(jù)庫以及上述的連接控制裝置。
[0035]可選地,所述數(shù)據(jù)庫為MongoDB數(shù)據(jù)庫。
[0036]本發(fā)明提供了一種數(shù)據(jù)庫的高可用解決方法、連接控制裝置和系統(tǒng),通過在客戶端和數(shù)據(jù)庫之間建立連接控制裝置,并在連接控制裝置的配置文件中保存數(shù)據(jù)庫所提供的服務與最新的數(shù)據(jù)庫節(jié)點的地址信息的對應關(guān)系,使得客戶端在對數(shù)據(jù)庫發(fā)起訪問時,可通過連接控制裝置的配置文件查找得到最新的數(shù)據(jù)庫的節(jié)點的地址信息建立連接,使得即使當數(shù)據(jù)庫發(fā)生遷移、擴容等改變時,仍然能保證客戶端可以找到對應的數(shù)據(jù)庫節(jié)點建立連接,從而使數(shù)據(jù)庫達到了高可用的目的。
[0037]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
[0038]根據(jù)下文結(jié)合附圖對本發(fā)明具體實施例的詳細描述,本領(lǐng)域技術(shù)人員將會更加明了本發(fā)明的上述以及其他目的、優(yōu)點和特征。
【專利附圖】
【附圖說明】
[0039]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0040]圖1是本發(fā)明一個實施例提供的一種MongoDB數(shù)據(jù)庫的高可用解決方法流程示意圖;
[0041]圖2是現(xiàn)有的MongoDB數(shù)據(jù)庫的訪問系統(tǒng)的架構(gòu)示意圖;
[0042]圖3是本發(fā)明一個實施例提供的一種MongoDB數(shù)據(jù)庫的訪問系統(tǒng)的架構(gòu)示意圖;
[0043]圖4是本發(fā)明一個實施例提供的一種MongoDB數(shù)據(jù)庫的高可用具體解決方法流程示意圖;
[0044]圖5是本發(fā)明一個實施例提供的一種客戶端訪問MongoDB數(shù)據(jù)庫時的詳細結(jié)構(gòu)示意圖;
[0045]圖6是本發(fā)明一個實施例提供的一種MongoDB數(shù)據(jù)庫的訪問系統(tǒng)的架構(gòu)示意圖;
[0046]圖7是本發(fā)明一個實施例提供的一種連接控制裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0047]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應該被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
[0048]實施例一
[0049]本發(fā)明實施例提供了一種數(shù)據(jù)庫的高可用解決方法。其可以通過在客戶端和數(shù)據(jù)庫之間建立連接控制裝置(亦可稱為中間層)來實現(xiàn)。其中,該連接控制裝置可以通過部署在客戶端與數(shù)據(jù)庫之間的服務器來實現(xiàn)。
[0050]應可理解,本發(fā)明并不限定數(shù)據(jù)庫的類型,只要可以應用本發(fā)明下述方案以達到高可用目的的數(shù)據(jù)庫都適用于此。此外,所述連接控制裝置也不限定于通過服務器來實現(xiàn),本領(lǐng)域技術(shù)人員在閱讀本發(fā)明的基礎上亦可以其他方式來實施所述的連接控制裝置,其皆應涵蓋在本發(fā)明的范圍內(nèi)。
[0051]以下,將以MongoDB數(shù)據(jù)為例說明本發(fā)明的技術(shù)方案:
[0052]圖1是本實施例提供的一種MongoDB數(shù)據(jù)庫的高可用解決方法的流程示意圖。該方法通過預先在客戶端和MongoDB數(shù)據(jù)庫之間建立的連接控制裝置實現(xiàn),并由該連接控制裝置執(zhí)行步驟S102至步驟S106。
[0053]S102:接收客戶端向MongoDB數(shù)據(jù)庫發(fā)送的針對目標服務的請求。
[0054]S104:在連接控制裝置的配置文件中獲取與目標服務對應的目標數(shù)據(jù)庫節(jié)點的地址信息。
[0055]S106:建立客戶端與目標數(shù)據(jù)庫節(jié)點的連接。
[0056]其中,上述配置文件中記錄有MongoDB數(shù)據(jù)庫所提供的服務,以及該服務所對應的最新的數(shù)據(jù)庫節(jié)點的地址信息。
[0057]本發(fā)明實施例提供了一種MongoDB數(shù)據(jù)庫的高可用解決方法,通過在客戶端和MongoDB數(shù)據(jù)庫之間建立連接控制裝置,并在連接控制裝置的配置文件中保存MongoDB數(shù)據(jù)庫所提供的服務與最新的數(shù)據(jù)庫節(jié)點的地址信息的對應關(guān)系,使得客戶端在對MongoDB數(shù)據(jù)庫發(fā)起訪問時,可通過連接控制裝置的配置文件查找得到最新的數(shù)據(jù)庫的節(jié)點的地址信息建立連接,使得即使當MongoDB數(shù)據(jù)庫發(fā)生遷移、擴容等改變時,仍然能保證客戶端可以找到對應的數(shù)據(jù)庫節(jié)點建立連接,從而使MongoDB數(shù)據(jù)庫達到了高可用的目的。
[0058]實施例二
[0059]本實施例為上述實施例一的一種具體應用場景,通過本實施例,能夠更加清楚、具體地闡述本發(fā)明所提供的方法。
[0060]為了能夠更加清楚的對本發(fā)明的改進進行說明,在對本實施例進行說明之前,首先說明一下現(xiàn)有的MongoDB數(shù)據(jù)庫的訪問系統(tǒng)的架構(gòu)。如圖2所示,即為現(xiàn)有的MongoDB數(shù)據(jù)庫的訪問系統(tǒng)的架構(gòu)圖,包括:客戶端和MongoDB數(shù)據(jù)庫。
[0061]下面分別介紹客戶端和MongoDB數(shù)據(jù)庫:
[0062]客戶端即為對MongoDB數(shù)據(jù)庫發(fā)起訪問的對象,可以是應用程序、服務器、進程坐寸ο
[0063]例如:當用戶手機中內(nèi)置的某個APP需要調(diào)取后臺數(shù)據(jù)的時候,可能會向MongoDB數(shù)據(jù)庫發(fā)起訪問請求。
[0064]或者,當用戶進行網(wǎng)絡游戲時,網(wǎng)絡游戲的服務器需要在MongoDB數(shù)據(jù)庫中調(diào)取多個用戶的數(shù)據(jù)。
[0065]MongoDB數(shù)據(jù)庫,是一種關(guān)系型數(shù)據(jù)庫,可以用于存儲較復雜的數(shù)據(jù)類型。在本實施例中,MongoDB數(shù)據(jù)庫可以部署在一臺服務器上,也可以是部署在集群服務器上,其中,每臺用于部署MongoDB數(shù)據(jù)庫的服務器均可以認為是一個數(shù)據(jù)庫節(jié)點。
[0066]由圖2所示的MongoDB數(shù)據(jù)庫的訪問系統(tǒng)的架構(gòu)可知,客戶端是直接向MongoDB數(shù)據(jù)庫的節(jié)點發(fā)起服務請求的,當負責該服務的節(jié)點被轉(zhuǎn)移時,由于客戶端對其是無法感知的,仍然會對原節(jié)點發(fā)起請求,這時就會導致訪問失敗。
[0067]為了解決上述問題,本發(fā)明實施例提供了一種解決方案,在客戶端和MongoDB數(shù)據(jù)庫之間建立一個連接控制裝置。如圖3所示,為本發(fā)明實施例提供的一種MongoDB數(shù)據(jù)庫的訪問系統(tǒng)的架構(gòu)圖。其中,本系統(tǒng)架構(gòu)中,在建立的連接控制裝置中保存配置文件,配置文件中記錄MongoDB數(shù)據(jù)庫所能提供的每個服務與該服務對應的最新的數(shù)據(jù)庫節(jié)點的地址信息。
[0068]當客戶端發(fā)起對某一服務的訪問請求時,連接控制裝置在配置文件中查找該服務對應的最新的數(shù)據(jù)庫節(jié)點的地址信息,則可建立起客戶端與該數(shù)據(jù)庫節(jié)點的連接,使得即使在數(shù)據(jù)庫節(jié)點發(fā)生變化的情況下,客戶端也可以與最新的數(shù)據(jù)庫節(jié)點建立連接,從而使MongoDB數(shù)據(jù)庫能夠達到高可用的目的。
[0069]為了更清楚的說明本發(fā)明,下面以在改進的MongoDB數(shù)據(jù)庫的訪問架構(gòu)下客戶端訪問MongoDB數(shù)據(jù)庫的方法進行詳細說明。
[0070]圖4是本發(fā)明一個實施例提供的一種MongoDB數(shù)據(jù)庫的高可用具體解決方法流程圖,該方法包括步驟S401至S403。
[0071]首先,執(zhí)行步驟S401,連接控制裝置接收客戶端發(fā)出的對目標服務的請求。
[0072]其中,上述目標服務可以是使MongoDB數(shù)據(jù)庫可提供的任意一個服務,例如,可以包括:
[0073]對于特定數(shù)據(jù)的讀取請求、對于特定數(shù)據(jù)的編輯請求、對于特定數(shù)據(jù)的刪除請求坐坐寸寸O
[0074]進一步需要說明的是,本發(fā)明所提供的連接控制裝置,可以通過LVS(LinuxVirtual Server, Linux 虛擬服務器)或 qconf 實現(xiàn)。
[0075]其中,LVS是一個虛擬的服務器集群系統(tǒng),它可以用于對于集群服務器的負載調(diào)度,通過LVS提供的IP負載均衡技術(shù),可以將一組集群服務器構(gòu)成一個高性能、高可用的虛擬服務器。
[0076]并且,LVS幾乎可以支持目前已有的常用編程語言。
[0077]Qconf為奇虎公司自主研發(fā)的用于集群服務器的調(diào)度器,其可以支持Phython、Java、C語目等。
[0078]在接收到對于目標服務的請求后,執(zhí)行步驟S402,在連接控制裝置的配置文件中獲取與上述目標服務對應的數(shù)據(jù)庫節(jié)點的地址信息。
[0079]在本實施例中,上述地址信息優(yōu)選地包括數(shù)據(jù)庫節(jié)點的地址和端口號。
[0080]為了更加清楚地介紹本實施例所提供的方法,本實施例還提供了圖5,示出了一種客戶端訪問MongoDB數(shù)據(jù)庫時的詳細結(jié)構(gòu)圖。
[0081]在一般情況下,MongoDB數(shù)據(jù)庫的集群服務器包括有多個數(shù)據(jù)庫節(jié)點,并被賦予不同的IP地址。在連接控制裝置的配置文件中,配置每一個節(jié)點的地址信息與服務的對應關(guān)系O
[0082]進一步地,若數(shù)據(jù)庫節(jié)點發(fā)生改變,例如服務器宕機、數(shù)據(jù)庫遷移等,則可以通過執(zhí)行如下步驟完成對連接控制裝置的配置,以使MongoDB數(shù)據(jù)庫高可用,不會影響客戶端對于MongoDB數(shù)據(jù)庫的訪問:
[0083](I)在連接控制裝置的配置文件中加入遷移后的數(shù)據(jù)庫節(jié)點的配置信息。
[0084]例如,當數(shù)據(jù)庫節(jié)點N損壞后,則有可能加入數(shù)據(jù)庫節(jié)點M以替代數(shù)據(jù)節(jié)點N,這時需要在連接控制裝置的配置文件中加入新的數(shù)據(jù)庫節(jié)點M的地址信息,并保存其所對應的服務。
[0085](2)刪除遷移前的數(shù)據(jù)庫節(jié)點的信息。
[0086]例如,在本實施例中,數(shù)據(jù)庫節(jié)點N損壞,并打算使用數(shù)據(jù)庫節(jié)點M代替,則在配置數(shù)據(jù)庫節(jié)點M的地址信息完成后,刪除數(shù)據(jù)庫節(jié)點N的地址信息。
[0087](3)重啟MongoDB數(shù)據(jù)庫的驅(qū)動服務器中的Web服務器(Web Server)。
[0088]其中,Web Server包括但不限于apache和php-cgi,用于客戶端對MongoDB數(shù)據(jù)庫進行訪問。
[0089]為了更加清晰地展現(xiàn)對連接控制裝置的配置的操作,本實施例還提供了圖6,示出了一種MongoDB數(shù)據(jù)庫的訪問系統(tǒng)的架構(gòu)示意圖。從圖6可見,在連接控制裝置和MongoDB數(shù)據(jù)庫之間還可以存在“MongoDB驅(qū)動”,該驅(qū)動中存在一個重要的數(shù)據(jù)結(jié)構(gòu)-連接管理器,可用于在客戶端和MongoDB數(shù)據(jù)庫建立連接后,保存這些連接關(guān)系,以供客戶端再次連接時,對已保存的連接進行復用,以提高訪問效率。
[0090]需要說明的是,由于MongoDB數(shù)據(jù)庫的節(jié)點發(fā)生了變化,客戶端和數(shù)據(jù)庫節(jié)點之間的連接關(guān)系也發(fā)生了改變,有可能導致客戶端服務器對于MongoDB數(shù)據(jù)庫的訪問異常,這時則需要重啟客戶端服務器中的Web Server,才能啟用新的連接,使客戶端和數(shù)據(jù)庫節(jié)點之間進行正確的連接。如果未發(fā)生異常,則無需重啟客戶端服務器中的Web Server0
[0091]其中,對于客戶端服務器中的Web Server的重啟操作需要在客戶端服務器上完成。當MongoDB數(shù)據(jù)庫的節(jié)點發(fā)生變化需要進行客戶端服務器上的重啟操作時,可由連接控制裝置向?qū)目蛻舳朔掌靼l(fā)送提醒消息,提示操作者對客戶端服務器進行重啟。
[0092]在步驟S402中查找得到與目標服務對應的數(shù)據(jù)庫節(jié)點的地址信息后,則執(zhí)行步驟S403,建立客戶端和目標數(shù)據(jù)庫節(jié)點的連接。
[0093]其中,由于連接控制裝置的配置文件中保存了與目標服務對應的最新的數(shù)據(jù)庫節(jié)點的地址信息,則在得到地址信息后,可建立客戶端和數(shù)據(jù)庫節(jié)點之間的連接。
[0094]本發(fā)明實施例提供了一種MongoDB數(shù)據(jù)庫的高可用解決方法,通過在客戶端和MongoDB數(shù)據(jù)庫之間建立連接控制裝置,并在連接控制裝置的配置文件中保存MongoDB數(shù)據(jù)庫所提供的服務與最新的數(shù)據(jù)庫節(jié)點的地址信息的對應關(guān)系,使得客戶端在對MongoDB數(shù)據(jù)庫發(fā)起訪問時,可通過連接控制裝置的配置文件查找得到最新的數(shù)據(jù)庫的節(jié)點的地址信息建立連接,使得即使當MongoDB數(shù)據(jù)庫發(fā)生遷移、擴容等改變時,仍然能保證客戶端可以找到對應的數(shù)據(jù)庫節(jié)點建立連接,從而使MongoDB數(shù)據(jù)庫達到了高可用的目的。
[0095]實施例三
[0096]圖7是本發(fā)明一個實施例提供的一種連接控制裝置結(jié)構(gòu)示意圖,該連接控制裝置700耦接于客戶端與數(shù)據(jù)庫之間以實現(xiàn)數(shù)據(jù)庫的高可用,且連接控制裝置700包括:
[0097]接收模塊710,適于接收客戶端向數(shù)據(jù)庫發(fā)送的針對目標服務的請求;
[0098]解析模塊720,適于在連接控制裝置700的配置文件中獲取與目標服務對應的目標數(shù)據(jù)庫節(jié)點的地址信息;以及
[0099]建立模塊730,適于建立客戶端與目標數(shù)據(jù)庫節(jié)點的連接;
[0100]其中,配置文件中記錄有上述數(shù)據(jù)庫所提供的服務,以及該服務所對應的最新的數(shù)據(jù)庫節(jié)點的地址信息。
[0101]可選地,解析模塊720進一步包括:
[0102]信息增加單元721,適于當數(shù)據(jù)庫發(fā)生遷移時,在連接控制裝置700的配置文件中增加遷移后的數(shù)據(jù)庫的節(jié)點的地址信息。
[0103]可選地,解析模塊720進一步包括:
[0104]信息刪除單元722,適于在連接控制裝置700的配置文件中刪除遷移前的數(shù)據(jù)庫的節(jié)點的地址信息。
[0105]可選地,解析模塊720,還包括:
[0106]重啟單元723,適于當數(shù)據(jù)庫的客戶端服務器異常時,重啟客戶端服務器中的Web服務端。
[0107]可選地,上述連接控制裝置700為qconf或LVS。
[0108]可選地,上述地址信息包括IP地址和端口號。
[0109]可選地,上述數(shù)據(jù)庫為MongoDB數(shù)據(jù)庫。
[0110]本發(fā)明實施例提供了一種連接控制裝置,通過在客戶端和數(shù)據(jù)庫之間建立連接控制裝置,并在連接控制裝置的配置文件中保存數(shù)據(jù)庫所提供的服務與最新的數(shù)據(jù)庫節(jié)點的地址信息的對應關(guān)系,使得客戶端在對數(shù)據(jù)庫發(fā)起訪問時,可通過連接控制裝置的配置文件查找得到最新的數(shù)據(jù)庫的節(jié)點的地址信息建立連接,使得即使當數(shù)據(jù)庫發(fā)生遷移、擴容等改變時,仍然能保證客戶端可以找到對應的數(shù)據(jù)庫節(jié)點建立連接,從而使數(shù)據(jù)庫達到了聞可用的目的。
[0111]在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0112]類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權(quán)利要求書由此明確地并入該【具體實施方式】,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
[0113]本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
[0114]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
[0115]本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的連接控制裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0116]應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設計出替換實施例。在權(quán)利要求中,不應將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0117]至此,本領(lǐng)域技術(shù)人員應認識到,雖然本文已詳盡示出和描述了本發(fā)明的多個示例性實施例,但是,在不脫離本發(fā)明精神和范圍的情況下,仍可根據(jù)本發(fā)明公開的內(nèi)容直接確定或推導出符合本發(fā)明原理的許多其他變型或修改。因此,本發(fā)明的范圍應被理解和認定為覆蓋了所有這些其他變型或修改。
[0118]本發(fā)明實施例提供了 Al.—種數(shù)據(jù)庫的高可用解決方法,應用于耦接在客戶端與數(shù)據(jù)庫之間的連接控制裝置,所述方法包括:接收所述客戶端向所述數(shù)據(jù)庫發(fā)送的針對目標服務的請求;在所述連接控制裝置的配置文件中獲取與所述目標服務對應的目標數(shù)據(jù)庫節(jié)點的地址信息;以及,建立所述客戶端與所述目標數(shù)據(jù)庫節(jié)點的連接;其中,所述配置文件中記錄有所述數(shù)據(jù)庫所提供的服務,以及該服務所對應的數(shù)據(jù)庫節(jié)點的地址信息。A2.根據(jù)Al所述的方法,其中,所述方法進一步包括:當所述數(shù)據(jù)庫發(fā)生遷移時,在所述連接控制裝置的配置文件中配置遷移后的所述數(shù)據(jù)庫的節(jié)點的地址信息。A3.根據(jù)A2所述的方法,其中,所述方法進一步包括:在所述連接控制裝置的配置文件中刪除遷移前的所述數(shù)據(jù)庫的節(jié)點的地址信息。A4.根據(jù)A3所述的方法,其中,所述方法進一步包括:當所述數(shù)據(jù)庫的客戶端服務器異常時,重啟所述客戶端服務器中的Web服務端。A5.根據(jù)Al至A4中任一項所述的方法,其中,所述連接控制裝置為qconf或Linux虛擬服務器LVS。A6.根據(jù)Al至A5中任一項所述的方法,其中,所述地址信息包括IP地址和端口號。A7.根據(jù)Al至A6中任一項所述的方法,其中,所述數(shù)據(jù)庫為MongoDB數(shù)據(jù)庫。
[0119]本發(fā)明實施例提供了 B8.—種連接控制裝置,耦接于客戶端與數(shù)據(jù)庫之間以實現(xiàn)所述數(shù)據(jù)庫的高可用,所述連接控制裝置包括:接收模塊,適于接收所述客戶端向所述數(shù)據(jù)庫發(fā)送的針對目標服務的請求;解析模塊,適于在所述連接控制裝置的配置文件中獲取與所述目標服務對應的目標數(shù)據(jù)庫節(jié)點的地址信息;以及,建立模塊,適于建立所述客戶端與所述目標數(shù)據(jù)庫節(jié)點的連接;其中,所述配置文件中記錄有所述數(shù)據(jù)庫所提供的服務,以及該服務所對應的數(shù)據(jù)庫節(jié)點的地址信息。B9.根據(jù)B8所述的裝置,其中,所述解析模塊進一步包括:信息增加單元,適于當所述數(shù)據(jù)庫發(fā)生遷移時,在所述連接控制裝置的配置文件中增加遷移后的所述數(shù)據(jù)庫的節(jié)點的地址信息。B10.根據(jù)B9所述的裝置,其中,所述解析模塊進一步包括:信息刪除單元,適于在所述連接控制裝置的配置文件中刪除遷移前的所述數(shù)據(jù)庫的節(jié)點的地址信息。Bll.根據(jù)BlO所述的裝置,其中,所述解析模塊進一步包括:重啟單元,適于當所述數(shù)據(jù)庫的客戶端服務器異常時,重啟所述客戶端服務器中的Web服務端。B12.根據(jù)B8至Bll中任一項所述的裝置,其中,所述連接控制裝置為qconf或LVS。B13.根據(jù)B8至B12中任一項所述的裝置,其中,所述地址信息包括IP地址和端口號。B14.根據(jù)B8至B13中任一項所述的裝置,其中,所述數(shù)據(jù)庫為MongoDB數(shù)據(jù)庫。
[0120]本發(fā)明實施例提供了 C15.—種高可用的數(shù)據(jù)系統(tǒng),所述系統(tǒng)包括客戶端、為所述客戶端提供服務的數(shù)據(jù)庫以及如B8至B14中任一項所述的裝置。C16.根據(jù)C15所述的系統(tǒng),其中,所述數(shù)據(jù)庫為MongoDB數(shù)據(jù)庫。
【權(quán)利要求】
1.一種數(shù)據(jù)庫的高可用解決方法,應用于耦接在客戶端與數(shù)據(jù)庫之間的連接控制裝置,所述方法包括: 接收所述客戶端向所述數(shù)據(jù)庫發(fā)送的針對目標服務的請求; 在所述連接控制裝置的配置文件中獲取與所述目標服務對應的目標數(shù)據(jù)庫節(jié)點的地址信息;以及 建立所述客戶端與所述目標數(shù)據(jù)庫節(jié)點的連接; 其中,所述配置文件中記錄有所述數(shù)據(jù)庫所提供的服務,以及該服務所對應的數(shù)據(jù)庫節(jié)點的地址信息。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述方法進一步包括: 當所述數(shù)據(jù)庫發(fā)生遷移時,在所述連接控制裝置的配置文件中配置遷移后的所述數(shù)據(jù)庫的節(jié)點的地址信息。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述方法進一步包括: 在所述連接控制裝置的配置文件中刪除遷移前的所述數(shù)據(jù)庫的節(jié)點的地址信息。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述方法進一步包括: 當所述數(shù)據(jù)庫的客戶端服務器異常時,重啟所述客戶端服務器中的Web服務端。
5.根據(jù)權(quán)利要求1至4中任一項所述的方法,其中,所述連接控制裝置為qconf或Linux虛擬服務器LVS。
6.一種連接控制裝置,耦接于客戶端與數(shù)據(jù)庫之間以實現(xiàn)所述數(shù)據(jù)庫的高可用,所述連接控制裝置包括: 接收模塊,適于接收所述客戶端向所述數(shù)據(jù)庫發(fā)送的針對目標服務的請求; 解析模塊,適于在所述連接控制裝置的配置文件中獲取與所述目標服務對應的目標數(shù)據(jù)庫節(jié)點的地址信息;以及 建立模塊,適于建立所述客戶端與所述目標數(shù)據(jù)庫節(jié)點的連接; 其中,所述配置文件中記錄有所述數(shù)據(jù)庫所提供的服務,以及該服務所對應的數(shù)據(jù)庫節(jié)點的地址信息。
7.根據(jù)權(quán)利要求6所述的裝置,其中,所述解析模塊進一步包括: 信息增加單元,適于當所述數(shù)據(jù)庫發(fā)生遷移時,在所述連接控制裝置的配置文件中增加遷移后的所述數(shù)據(jù)庫的節(jié)點的地址信息。
8.根據(jù)權(quán)利要求7所述的裝置,其中,所述解析模塊進一步包括: 信息刪除單元,適于在所述連接控制裝置的配置文件中刪除遷移前的所述數(shù)據(jù)庫的節(jié)點的地址信息。
9.根據(jù)權(quán)利要求8所述的裝置,其中,所述解析模塊進一步包括: 重啟單元,適于當所述數(shù)據(jù)庫的客戶端服務器異常時,重啟所述客戶端服務器中的Web服務端。
10.一種高可用的數(shù)據(jù)系統(tǒng),所述系統(tǒng)包括客戶端、為所述客戶端提供服務的數(shù)據(jù)庫以及如權(quán)利要求6至9中任一項所述的裝置。
【文檔編號】G06F17/30GK104462514SQ201410806547
【公開日】2015年3月25日 申請日期:2014年12月19日 優(yōu)先權(quán)日:2014年12月19日
【發(fā)明者】顧偉濤 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司