數(shù)據(jù)操作方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)操作方法和裝置,主要涉及互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,主要目的在于實現(xiàn)服務(wù)器的合理分配。方法包括:接收終端發(fā)送的進行數(shù)據(jù)操作的請求;為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù);檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從服務(wù)器集群中選擇服務(wù)器;調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。根據(jù)本發(fā)明,在將操作請求分配給服務(wù)器集群后,能夠根據(jù)服務(wù)器集群中每個服務(wù)器的狀態(tài),合理地選擇處理操作請求的服務(wù)器,從而避免將不適當(dāng)?shù)姆?wù)器用來處理操作請求,以保證可以正常完成數(shù)據(jù)操作。
【專利說明】數(shù)據(jù)操作方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,具體而言,涉及一種數(shù)據(jù)操作方法和裝置。
【背景技術(shù)】
[0002]目前,隨著互聯(lián)網(wǎng)業(yè)務(wù)的迅速發(fā)展,在帶來大量業(yè)務(wù)的同時,也對相應(yīng)的服務(wù)器造成了負擔(dān)。目前的應(yīng)對策略是采用多個服務(wù)器組成的服務(wù)器集群來處理較多的負擔(dān),但仍存在著一定的缺陷:部分服務(wù)器過于繁忙,而另外部分服務(wù)器過于空閑,難以合理地分配服務(wù)器資源來處理業(yè)務(wù)。
[0003]例如,對于游戲公司而言,其對用戶玩家開放了多個服務(wù)器,容易出現(xiàn)玩家大量擁擠在一個服務(wù)器上的情況,而有些服務(wù)器則很少有玩家使用。如何解決服務(wù)器的合理分配,就成一個需要克服的課題。
【發(fā)明內(nèi)容】
[0004]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的數(shù)據(jù)操作方法和裝置。
[0005]依據(jù)本發(fā)明的一個方面,提供了一種數(shù)據(jù)操作方法,其包括:接收終端發(fā)送的進行數(shù)據(jù)操作的請求;為所述操作請求選擇服務(wù)器集群,所述服務(wù)器集群中每個服務(wù)器上均具有適于進行所述數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù);檢測所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從所述服務(wù)器集群中選擇服務(wù)器;調(diào)用所選服務(wù)器的服務(wù)對所述所選服務(wù)器上的數(shù)據(jù)存儲裝置進行所述數(shù)據(jù)操作。
[0006]依據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)操作裝置,其包括:請求接收模塊,用于接收終端發(fā)送的進行數(shù)據(jù)操作的請求;服務(wù)器集群選擇模塊,用于為所述操作請求選擇服務(wù)器集群,所述服務(wù)器集群中每個服務(wù)器上均具有適于進行所述數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù);服務(wù)器選擇模塊,用于檢測所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從所述服務(wù)器集群中選擇服務(wù)器;數(shù)據(jù)操作執(zhí)行模塊,用于調(diào)用所選服務(wù)器的服務(wù)對所述所選服務(wù)器上的數(shù)據(jù)存儲裝置進行所述數(shù)據(jù)操作。
[0007]根據(jù)以上技術(shù)方案,可知本發(fā)明的數(shù)據(jù)操作方法和裝置至少具有以下優(yōu)點:
[0008]在將操作請求分配給服務(wù)器集群后,能夠根據(jù)服務(wù)器集群中每個服務(wù)器的狀態(tài),合理地選擇處理操作請求的服務(wù)器,從而避免將不適當(dāng)?shù)姆?wù)器用來處理操作請求,以保證可以正常完成數(shù)據(jù)操作。
[0009]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【專利附圖】
【附圖說明】
[0010]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0011]圖1示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作方法的流程圖;
[0012]圖2示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作方法的流程圖;
[0013]圖3示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作方法的流程圖;
[0014]圖4示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作方法的流程圖;
[0015]圖5示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作方法的流程圖;
[0016]圖6示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作方法的流程圖;
[0017]圖7示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作方法的流程圖;
[0018]圖8示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作方法的流程圖;
[0019]圖9示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作方法的流程圖;
[0020]圖10示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作方法的流程圖;
[0021]圖11示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作裝置的框圖;
[0022]圖12示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作裝置的框圖;
[0023]圖13示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作裝置的框圖;
[0024]圖14示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作裝置的框圖;
[0025]圖15示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作裝置的框圖;
[0026]圖16示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作裝置的框圖;
[0027]圖17示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作裝置的框圖;
[0028]圖18示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作裝置的框圖;
[0029]圖19示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作裝置的框圖;
[0030]圖20示出了根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)操作裝置的框圖。
【具體實施方式】
[0031]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
[0032]如圖1所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作方法,其包括:
[0033]步驟110,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0034]步驟120,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0035]步驟130,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從服務(wù)器集群中選擇服務(wù)器。在本實施例中,可以通過Haproxy (—種工具)來檢測服務(wù)器中服務(wù)的狀態(tài);服務(wù)的狀態(tài)主要考慮服務(wù)是否可用,例如可以是服務(wù)是否被占用,或服務(wù)是否存在故障。
[0036]步驟140,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。根據(jù)本實施例的技術(shù)方案,在將操作請求分配給服務(wù)器集群后,能夠根據(jù)服務(wù)器集群中每個服務(wù)器的狀態(tài),合理地選擇處理操作請求的服務(wù)器,從而避免將不適當(dāng)?shù)姆?wù)器用來處理操作請求,以保證可以正常完成數(shù)據(jù)操作。
[0037]根據(jù)圖1,假設(shè)某電商網(wǎng)站吸引了大量的用戶,用戶通過在網(wǎng)站網(wǎng)頁上的一系列操作來請求購買商品。服務(wù)端獲取購買商品的請求后,檢測用于處理購買商品業(yè)務(wù)的4個服務(wù)器組成的服務(wù)器集群中每個服務(wù)器的服務(wù)狀態(tài),發(fā)現(xiàn)其中I個服務(wù)器的服務(wù)存在問題,所以從剩余3個服務(wù)器中選擇I個服務(wù)器來處理購買請求,具體服務(wù)為在數(shù)據(jù)庫中寫入用戶的資料以及要購買的商品。
[0038]如圖2所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作方法,其包括:
[0039]步驟210,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0040]步驟220,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0041]步驟230,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)的地址。
[0042]步驟240,獲取請求的來源的地址。
[0043]步驟250,根據(jù)請求的來源的地址以及服務(wù)器集群中每個服務(wù)器的服務(wù)的地址,計算請求的來源與服務(wù)器集群中每個服務(wù)器之間的距離。
[0044]步驟260,根據(jù)距離大小,來從服務(wù)器集群中選擇服務(wù)器。在本實施例中,實際上是就近選擇服務(wù)器來執(zhí)行數(shù)據(jù)操作,這樣可以避免距離過遠造成的網(wǎng)絡(luò)延遲和數(shù)據(jù)丟失的情況。
[0045]步驟270,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0046]根據(jù)圖2,某考試網(wǎng)站在某日公布考試成績,則當(dāng)日有大量考生通過該網(wǎng)站頁面提交查詢成績的請求。存儲有考試成績的服務(wù)器集群中,包括位于北京、上海兩處的服務(wù)器。對于某內(nèi)蒙古考生提交的查詢成績的請求,可根據(jù)其IP地址判斷其身處內(nèi)蒙古,距離北京更近,所以由北京的服務(wù)器來對考試成績數(shù)據(jù)庫進行查詢。
[0047]如圖3所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作方法,其包括:
[0048]步驟310,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0049]步驟320,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0050]步驟330,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。[0051 ] 步驟340,判斷數(shù)據(jù)操作是否包含寫操作。在本實施例中,寫操作可以是對數(shù)據(jù)庫進行的增刪改等操作。
[0052]步驟350,在數(shù)據(jù)操作包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0053]步驟360,在數(shù)據(jù)操作不包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0054]步驟370,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。在本實施例中,從服務(wù)器中的數(shù)據(jù)通常為主服務(wù)器數(shù)據(jù)的備份,所以從服務(wù)器不進行寫操作以免影響數(shù)據(jù)的準(zhǔn)確性,服務(wù)器可以進行讀操作以分擔(dān)主服務(wù)器的壓力。
[0055]如圖3所示,某考試網(wǎng)站在某日公布考試成績,則當(dāng)日有大量考生通過該網(wǎng)站頁面提交查詢成績的請求。對某考生的查詢考試成績的請求,經(jīng)分析可知僅涉及對考試成績數(shù)據(jù)庫的讀操作,因此可以由預(yù)設(shè)的一從服務(wù)器來處理該請求,從其中的成績數(shù)據(jù)庫中查詢到考生的成績并發(fā)送給考生。
[0056]如圖4所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作方法,其包括:
[0057]步驟410,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0058]步驟420,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0059]步驟430,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。
[0060]步驟440,在數(shù)據(jù)操作為讀寫操作時,對所述讀寫操作進行讀寫分離。因此后續(xù)可以針對分離后的操作來選擇相應(yīng)的服務(wù)器來執(zhí)行操作。
[0061]步驟450,對讀寫分離后的多個數(shù)據(jù)操作分別進行判斷。
[0062]步驟460,在數(shù)據(jù)操作包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0063]步驟470,在數(shù)據(jù)操作不包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0064]步驟480,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。在本實施例中,通過讀寫分離,可以由不同服務(wù)器來分別處理讀寫操作,有利于合理穩(wěn)定利用服務(wù)器集群的資源。
[0065]如圖4所示,某網(wǎng)站進行抽獎活動,用戶進行抽獎操作后能夠得到自己是否抽中的結(jié)果,以及當(dāng)前有哪些用戶中獎的結(jié)果。用戶提交抽獎?wù)埱蠛?,分析抽獎?wù)埱髮?yīng)的數(shù)據(jù)操作包含寫操作和只讀操作:寫操作一一執(zhí)行抽獎策略并在數(shù)據(jù)庫中寫入抽獎結(jié)果,只讀操作——讀取數(shù)據(jù)庫中的中獎人記錄。由此可知,執(zhí)行抽獎策略并在數(shù)據(jù)庫中寫入抽獎結(jié)果可以選擇主服務(wù)器來執(zhí)行,讀取數(shù)據(jù)庫中的中獎人記錄可以由從服務(wù)器來執(zhí)行。
[0066]如圖5所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作方法,其包括:
[0067]步驟510,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0068]步驟520,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0069]步驟530,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。
[0070]步驟540,判斷數(shù)據(jù)操作是否包含寫操作。在本實施例中,寫操作可以是對數(shù)據(jù)庫進行的增刪改等操作。
[0071]步驟550,在數(shù)據(jù)操作包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0072]步驟560,在數(shù)據(jù)操作不包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0073]步驟570,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0074]步驟580,根據(jù)主服務(wù)器中數(shù)據(jù)存儲裝置的數(shù)據(jù),同步從服務(wù)器中數(shù)據(jù)存儲裝置中的數(shù)據(jù)。在本實施例中,通過主動同步的方式可以及時更新從服務(wù)器中的數(shù)據(jù),從而保證從服務(wù)器中數(shù)據(jù)等正確性。
[0075]根據(jù)圖5,假設(shè)某公司配了一個主服務(wù)器和一個從服務(wù)器,在主服務(wù)器中數(shù)據(jù)庫中進行寫操作,導(dǎo)致主服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時進行主從同步,從而保證從服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)與主服務(wù)器數(shù)據(jù)庫的數(shù)據(jù)一致。
[0076]如圖6所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作方法,其包括:
[0077]步驟610,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0078]步驟620,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0079]步驟630,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。
[0080]步驟640,判斷數(shù)據(jù)操作是否包含寫操作。在本實施例中,寫操作可以是對數(shù)據(jù)庫進行的增刪改等操作。
[0081]步驟650,在數(shù)據(jù)操作包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0082]步驟660,在數(shù)據(jù)操作不包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0083]步驟670,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0084]步驟680,在從服務(wù)器有多個時,計算從服務(wù)器的負載。在本實施例中,服務(wù)器的負載可以由服務(wù)器中服務(wù)的被使用數(shù)量體現(xiàn)。
[0085]步驟690,根據(jù)負載由低到高的順序,確定對從服務(wù)器的同步順序。在本實施例中,由于進行數(shù)據(jù)同步也會對從服務(wù)器造成一定的壓力,所以可以由負載較低的從服務(wù)器首先進行同步,負載較高的從服務(wù)器需要延遲進行同步,則同時其負載有可能已經(jīng)降低。
[0086]步驟6100,根據(jù)主服務(wù)器中數(shù)據(jù)存儲裝置的數(shù)據(jù),同步從服務(wù)器中數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
[0087]根據(jù)圖6,假設(shè)某公司配了一個主服務(wù)器和A、B兩個從服務(wù)器,在主服務(wù)器數(shù)據(jù)庫中進行寫操作,導(dǎo)致主服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時進行主從同步。此時監(jiān)控兩個從服務(wù)器中服務(wù)的被使用情況,得到從服務(wù)器A的負載程度較低的結(jié)果,則首先進行主服務(wù)器與從服務(wù)器A的同步,之后進行主服務(wù)器與從服務(wù)器B的同步。
[0088]如圖7所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作方法,其包括:
[0089]步驟710,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0090]步驟720,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0091]步驟730,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。
[0092]步驟740,判斷數(shù)據(jù)操作是否包含寫操作。在本實施例中,寫操作可以是對數(shù)據(jù)庫進行的增刪改等操作。
[0093]步驟750,在數(shù)據(jù)操作包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0094]步驟760,在數(shù)據(jù)操作不包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0095]步驟770,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0096]步驟780,在主服務(wù)器具有多個時,根據(jù)一個主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù),同步另一主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù)。在本實施例的技術(shù)方案中,通過實現(xiàn)雙主同步,可以保證某臺主服務(wù)器上的數(shù)據(jù)一致,避免出現(xiàn)數(shù)據(jù)錯誤。
[0097]如圖7所示,某網(wǎng)站在北京機房、上海機房分別設(shè)置有主服務(wù)器,則對于上海機房的主服務(wù)器完成寫入操作后,其數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生了變更。則可以根據(jù)上海機房的主服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù),對北京機房的主服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)進行同步。
[0098]如圖8所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作方法,其包括:
[0099]步驟810,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0100]步驟820,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0101]步驟830,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。
[0102]步驟840,判斷數(shù)據(jù)操作是否包含寫操作。在本實施例中,寫操作可以是對數(shù)據(jù)庫進行的增刪改等操作。
[0103]步驟850,在數(shù)據(jù)操作包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0104]步驟860,在數(shù)據(jù)操作不包含寫操作時,從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0105]步驟870,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0106]步驟880,在待同步的主服務(wù)器有多個時,計算待同步的主服務(wù)器的負載。在本實施例中,服務(wù)器的負載可以由服務(wù)器中服務(wù)的被使用數(shù)量體現(xiàn)。
[0107]步驟890,根據(jù)負載由低到高的順序,確定對待同步的主服務(wù)器的同步順序。在本實施例中,由于進行數(shù)據(jù)同步也會對主服務(wù)器造成一定的壓力,所以可以由負載較低的主服務(wù)器首先進行同步,負載較高的主服務(wù)器需要延遲進行同步,則同時其負載有可能已經(jīng)降低。
[0108]步驟8100,在主服務(wù)器具有多個時,根據(jù)一個主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù),同步另一主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
[0109]根據(jù)圖8,某網(wǎng)站在北京機房、上海機房、成都機房分別設(shè)置有主服務(wù)器,則對于上海機房的主服務(wù)器完成寫入操作后,其數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生了變更。此時監(jiān)控北京機房和成都機房兩個主服務(wù)器中服務(wù)的被使用情況,得到北京機房的主服務(wù)器的負載程度較低的結(jié)果,對北京機房的主服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)進行同步。
[0110]如圖9所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作方法,其包括:
[0111]步驟910,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0112]步驟920,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0113]步驟930,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從服務(wù)器集群中選擇服務(wù)器。在本實施例中,可以通過Haproxy (—種工具)來檢測服務(wù)器中服務(wù)的狀態(tài);服務(wù)的狀態(tài)主要考慮服務(wù)是否可用,例如可以是服務(wù)是否被占用,或服務(wù)是否存在故障。
[0114]步驟940,判斷數(shù)據(jù)操作對應(yīng)的數(shù)據(jù)是否存儲在預(yù)設(shè)的與所選服務(wù)器對應(yīng)的緩存中。
[0115]步驟950,在判斷結(jié)果為是時,對緩存中的數(shù)據(jù)進行數(shù)據(jù)操作。
[0116]步驟960,在判斷結(jié)果為否時,執(zhí)行對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。在本實施例中,合理利用緩存中的數(shù)據(jù),可以避免對服務(wù)器中數(shù)據(jù)庫進行頻繁地操作。
[0117]根據(jù)圖9,某電商網(wǎng)站公布了優(yōu)惠清單,則當(dāng)日有大量用戶通過該網(wǎng)站頁面提交查看優(yōu)惠商品的請求。對某用戶上午發(fā)送的查看請求,已經(jīng)通過商品清單數(shù)據(jù)庫查詢到優(yōu)惠商品,返回給用戶同時也存儲到緩存中,該用戶下午再次進行了查詢,則直接從緩存中獲取優(yōu)惠商品數(shù)據(jù)提供給用戶。
[0118]如圖10所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作方法,其包括:
[0119]步驟1010,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0120]步驟1020,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0121]步驟1030,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從服務(wù)器集群中選擇服務(wù)器。在本實施例中,可以通過Haproxy (—種工具)來檢測服務(wù)器中服務(wù)的狀態(tài);服務(wù)的狀態(tài)主要考慮服務(wù)是否可用,例如可以是服務(wù)是否被占用,或服務(wù)是否存在故障。
[0122]步驟1040,判斷數(shù)據(jù)操作對應(yīng)的數(shù)據(jù)是否存儲在預(yù)設(shè)的與所選服務(wù)器對應(yīng)的緩存中。
[0123]步驟1050,在判斷結(jié)果為是時,對緩存中的數(shù)據(jù)進行數(shù)據(jù)操作。
[0124]步驟1060,在判斷結(jié)果為否時,執(zhí)行對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0125]步驟1070,如果緩存中的數(shù)據(jù)發(fā)生變化,根據(jù)緩存中的數(shù)據(jù)同步所選服務(wù)器中數(shù)據(jù)庫的數(shù)據(jù)。在本實施例中,及時根據(jù)緩存中的數(shù)據(jù)對服務(wù)器數(shù)據(jù)庫進行同步,可以保證數(shù)據(jù)庫中數(shù)據(jù)的準(zhǔn)確性。
[0126]根據(jù)圖10,某網(wǎng)站收集用戶的手機號,以進行手機號抽獎活動。其從服務(wù)器的數(shù)據(jù)庫中取得記錄手機號的表單并保存在緩存中,收集到用戶提交的手機號后對緩存中的表單進行寫操作,增加用戶的手機號。然后可以根據(jù)緩存中的表單,對服務(wù)器數(shù)據(jù)庫中的表單進行更新。
[0127]如圖11所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作裝置,其包括:
[0128]請求接收模塊1110,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0129]服務(wù)器集群選擇模塊1120,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0130]服務(wù)器選擇模塊1130,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從服務(wù)器集群中選擇服務(wù)器。在本實施例中,可以通過Haproxy(—種工具)來檢測服務(wù)器中服務(wù)的狀態(tài);服務(wù)的狀態(tài)主要考慮服務(wù)是否可用,例如可以是服務(wù)是否被占用,或服務(wù)是否存在故障。
[0131]數(shù)據(jù)操作執(zhí)行模塊1140,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。根據(jù)本實施例的技術(shù)方案,在將操作請求分配給服務(wù)器集群后,能夠根據(jù)服務(wù)器集群中每個服務(wù)器的狀態(tài),合理地選擇處理操作請求的服務(wù)器,從而避免將不適當(dāng)?shù)姆?wù)器用來處理操作請求,以保證可以正常完成數(shù)據(jù)操作。
[0132]根據(jù)圖11,假設(shè)某電商網(wǎng)站吸引了大量的用戶,用戶通過在網(wǎng)站網(wǎng)頁上的一系列操作來請求購買商品。服務(wù)端獲取購買商品的請求后,檢測用于處理購買商品業(yè)務(wù)的4個服務(wù)器組成的服務(wù)器集群中每個服務(wù)器的服務(wù)狀態(tài),發(fā)現(xiàn)其中I個服務(wù)器的服務(wù)存在問題,所以從剩余3個服務(wù)器中選擇I個服務(wù)器來處理購買請求,具體服務(wù)為在數(shù)據(jù)庫中寫入用戶的資料以及要購買的商品。
[0133]如圖12所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作裝置,其包括:
[0134]請求接收模塊1210,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0135]服務(wù)器集群選擇模塊1220,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0136]服務(wù)器選擇模塊1230,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)的地址。
[0137]來源地址獲取模塊1240,獲取請求的來源的地址。
[0138]距離計算模塊1250,根據(jù)請求的來源的地址以及服務(wù)器集群中每個服務(wù)器的服務(wù)的地址,計算請求的來源與服務(wù)器集群中每個服務(wù)器之間的距離。
[0139]服務(wù)器選擇模塊1230根據(jù)距離大小,來從服務(wù)器集群中選擇服務(wù)器。在本實施例中,實際上是就近選擇服務(wù)器來執(zhí)行數(shù)據(jù)操作,這樣可以避免距離過遠造成的網(wǎng)絡(luò)延遲和數(shù)據(jù)丟失的情況。
[0140]數(shù)據(jù)操作執(zhí)行模塊1260,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0141]根據(jù)圖12,某考試網(wǎng)站在某日公布考試成績,則當(dāng)日有大量考生通過該網(wǎng)站頁面提交查詢成績的請求。存儲有考試成績的服務(wù)器集群中,包括位于北京、上海兩處的服務(wù)器。對于某內(nèi)蒙古考生提交的查詢成績的請求,可根據(jù)其IP地址判斷其身處內(nèi)蒙古,距離北京更近,所以由北京的服務(wù)器來對考試成績數(shù)據(jù)庫進行查詢。
[0142]如圖13所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作裝置,其包括:
[0143]請求接收模塊1310,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0144]服務(wù)器集群選擇模塊1320,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0145]服務(wù)器選擇模塊1330,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),月艮務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。
[0146]操作判斷模塊1340,判斷數(shù)據(jù)操作是否包含寫操作。在本實施例中,寫操作可以是對數(shù)據(jù)庫進行的增刪改等操作。
[0147]在數(shù)據(jù)操作包含寫操作時,服務(wù)器選擇模塊1330從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0148]在數(shù)據(jù)操作不包含寫操作時,服務(wù)器選擇模塊1330從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0149]數(shù)據(jù)操作執(zhí)行模塊1350,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。在本實施例中,從服務(wù)器中的數(shù)據(jù)通常為主服務(wù)器數(shù)據(jù)的備份,所以從服務(wù)器不進行寫操作以免影響數(shù)據(jù)的準(zhǔn)確性,服務(wù)器可以進行讀操作以分擔(dān)主服務(wù)器的壓力。
[0150]如圖13所示,某考試網(wǎng)站在某日公布考試成績,則當(dāng)日有大量考生通過該網(wǎng)站頁面提交查詢成績的請求。對某考生的查詢考試成績的請求,經(jīng)分析可知僅涉及對考試成績數(shù)據(jù)庫的讀操作,因此可以由預(yù)設(shè)的一從服務(wù)器來處理該請求,從其中的成績數(shù)據(jù)庫中查詢到考生的成績并發(fā)送給考生。
[0151]如圖14所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作裝置,其包括:
[0152]請求接收模塊1410,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0153]服務(wù)器集群選擇模塊1420,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0154]服務(wù)器選擇模塊1430,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),月艮務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。
[0155]讀寫分離模塊1440,在數(shù)據(jù)操作為讀寫操作時,對所述讀寫操作進行讀寫分離。因此后續(xù)可以針對分離后的操作來選擇相應(yīng)的服務(wù)器來執(zhí)行操作。
[0156]操作判斷模塊1450,對讀寫分離后的多個數(shù)據(jù)操作分別進行判斷。
[0157]在數(shù)據(jù)操作包含寫操作時,服務(wù)器選擇模塊1430從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0158]在數(shù)據(jù)操作不包含寫操作時,服務(wù)器選擇模塊1430從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0159]數(shù)據(jù)操作執(zhí)行模塊1460,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。在本實施例中,通過讀寫分離,可以由不同服務(wù)器來分別處理讀寫操作,有利于合理穩(wěn)定利用服務(wù)器集群的資源。
[0160]如圖14所示,某網(wǎng)站進行抽獎活動,用戶進行抽獎操作后能夠得到自己是否抽中的結(jié)果,以及當(dāng)前有哪些用戶中獎的結(jié)果。用戶提交抽獎?wù)埱蠛?,分析抽獎?wù)埱髮?yīng)的數(shù)據(jù)操作包含寫操作和只讀操作:寫操作一一執(zhí)行抽獎策略并在數(shù)據(jù)庫中寫入抽獎結(jié)果,只讀操作——讀取數(shù)據(jù)庫中的中獎人記錄。由此可知,執(zhí)行抽獎策略并在數(shù)據(jù)庫中寫入抽獎結(jié)果可以選擇主服務(wù)器來執(zhí)行,讀取數(shù)據(jù)庫中的中獎人記錄可以由從服務(wù)器來執(zhí)行。
[0161]如圖15所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作裝置,其包括:
[0162]請求接收模塊1510,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0163]服務(wù)器集群選擇模塊1520,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0164]服務(wù)器選擇模塊1530,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),月艮務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。
[0165]操作判斷模塊1540,判斷數(shù)據(jù)操作是否包含寫操作。在本實施例中,寫操作可以是對數(shù)據(jù)庫進行的增刪改等操作。
[0166]在數(shù)據(jù)操作包含寫操作時,服務(wù)器選擇模塊1530從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0167]在數(shù)據(jù)操作不包含寫操作時,服務(wù)器選擇模塊1530從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0168]數(shù)據(jù)操作執(zhí)行模塊1550,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0169]第一同步模塊1560,根據(jù)主服務(wù)器中數(shù)據(jù)存儲裝置的數(shù)據(jù),同步從服務(wù)器中數(shù)據(jù)存儲裝置中的數(shù)據(jù)。在本實施例中,通過主動同步的方式可以及時更新從服務(wù)器中的數(shù)據(jù),從而保證從服務(wù)器中數(shù)據(jù)等正確性。
[0170]根據(jù)圖15,假設(shè)某公司配了一個主服務(wù)器和一個從服務(wù)器,在主服務(wù)器中數(shù)據(jù)庫中進行寫操作,導(dǎo)致主服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時進行主從同步,從而保證從服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)與主服務(wù)器數(shù)據(jù)庫的數(shù)據(jù)一致。
[0171]如圖16所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作裝置,其包括:
[0172]請求接收模塊1610,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0173]服務(wù)器集群選擇模塊1620,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0174]服務(wù)器選擇模塊1630,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),月艮務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。
[0175]操作判斷模塊1640,判斷數(shù)據(jù)操作是否包含寫操作。在本實施例中,寫操作可以是對數(shù)據(jù)庫進行的增刪改等操作。
[0176]在數(shù)據(jù)操作包含寫操作時,服務(wù)器選擇模塊1630從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0177]在數(shù)據(jù)操作不包含寫操作時,服務(wù)器選擇模塊1630從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0178]數(shù)據(jù)操作執(zhí)行模塊1650,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0179]第一負載計算模塊1660,在從服務(wù)器有多個時,計算從服務(wù)器的負載。在本實施例中,服務(wù)器的負載可以由服務(wù)器中服務(wù)的被使用數(shù)量體現(xiàn)。
[0180]第一同步順序確定模塊1670,根據(jù)負載由低到高的順序,確定對從服務(wù)器的同步順序。在本實施例中,由于進行數(shù)據(jù)同步也會對從服務(wù)器造成一定的壓力,所以可以由負載較低的從服務(wù)器首先進行同步,負載較高的從服務(wù)器需要延遲進行同步,則同時其負載有可能已經(jīng)降低。
[0181]第一同步模塊1680,根據(jù)主服務(wù)器中數(shù)據(jù)存儲裝置的數(shù)據(jù),同步從服務(wù)器中數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
[0182]根據(jù)圖16,假設(shè)某公司配了一個主服務(wù)器和A、B兩個從服務(wù)器,在主服務(wù)器數(shù)據(jù)庫中進行寫操作,導(dǎo)致主服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生變化時進行主從同步。此時監(jiān)控兩個從服務(wù)器中服務(wù)的被使用情況,得到從服務(wù)器A的負載程度較低的結(jié)果,則首先進行主服務(wù)器與從服務(wù)器A的同步,之后進行主服務(wù)器與從服務(wù)器B的同步。
[0183]如圖17所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作裝置,其包括:
[0184]請求接收模塊1710,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0185]服務(wù)器集群選擇模塊1720,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0186]服務(wù)器選擇模塊1730,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),月艮務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。
[0187]操作判斷模塊1740,判斷數(shù)據(jù)操作是否包含寫操作。在本實施例中,寫操作可以是對數(shù)據(jù)庫進行的增刪改等操作。
[0188]在數(shù)據(jù)操作包含寫操作時,服務(wù)器選擇模塊1730從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0189]在數(shù)據(jù)操作不包含寫操作時,服務(wù)器選擇模塊1740從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0190]數(shù)據(jù)操作執(zhí)行模塊1750,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0191]第二同步模塊1760,在主服務(wù)器具有多個時,根據(jù)一個主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù),同步另一主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù)。在本實施例的技術(shù)方案中,通過實現(xiàn)雙主同步,可以保證某臺主服務(wù)器上的數(shù)據(jù)一致,避免出現(xiàn)數(shù)據(jù)錯誤。
[0192]如圖17所示,某網(wǎng)站在北京機房、上海機房分別設(shè)置有主服務(wù)器,則對于上海機房的主服務(wù)器完成寫入操作后,其數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生了變更。則可以根據(jù)上海機房的主服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù),對北京機房的主服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)進行同步。
[0193]如圖18所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作裝置,其包括:
[0194]請求接收模塊1810,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0195]服務(wù)器集群選擇模塊1820,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0196]服務(wù)器選擇模塊1830,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)。服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,主服務(wù)器的服務(wù)為讀寫服務(wù),從服務(wù)器的服務(wù)為只讀服務(wù),月艮務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù)。
[0197]操作判斷模塊1840,判斷數(shù)據(jù)操作是否包含寫操作。在本實施例中,寫操作可以是對數(shù)據(jù)庫進行的增刪改等操作。
[0198]在數(shù)據(jù)操作包含寫操作時,服務(wù)器選擇模塊1830從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器。
[0199]在數(shù)據(jù)操作不包含寫操作時,服務(wù)器選擇模塊1840從主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0200]數(shù)據(jù)操作執(zhí)行模塊1850,調(diào)用所選服務(wù)器的服務(wù)對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0201]第二負載計算模塊1860,在待同步的主服務(wù)器有多個時,計算待同步的主服務(wù)器的負載。在本實施例中,服務(wù)器的負載可以由服務(wù)器中服務(wù)的被使用數(shù)量體現(xiàn)。
[0202]第二同步順序確定模塊1870,根據(jù)負載由低到高的順序,確定對待同步的主服務(wù)器的同步順序。在本實施例中,由于進行數(shù)據(jù)同步也會對主服務(wù)器造成一定的壓力,所以可以由負載較低的主服務(wù)器首先進行同步,負載較高的主服務(wù)器需要延遲進行同步,則同時其負載有可能已經(jīng)降低。
[0203]第二同步模塊1880,在主服務(wù)器具有多個時,根據(jù)一個主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù),同步另一主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
[0204]根據(jù)圖18,某網(wǎng)站在北京機房、上海機房、成都機房分別設(shè)置有主服務(wù)器,則對于上海機房的主服務(wù)器完成寫入操作后,其數(shù)據(jù)庫中的數(shù)據(jù)發(fā)生了變更。此時監(jiān)控北京機房和成都機房兩個主服務(wù)器中服務(wù)的被使用情況,得到北京機房的主服務(wù)器的負載程度較低的結(jié)果,對北京機房的主服務(wù)器數(shù)據(jù)庫中的數(shù)據(jù)進行同步。
[0205]如圖19所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作裝置,其包括:
[0206]請求接收模塊1910,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0207]服務(wù)器集群選擇模塊1920,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0208]服務(wù)器選擇模塊1930,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從服務(wù)器集群中選擇服務(wù)器。在本實施例中,可以通過Haproxy(—種工具)來檢測服務(wù)器中服務(wù)的狀態(tài);服務(wù)的狀態(tài)主要考慮服務(wù)是否可用,例如可以是服務(wù)是否被占用,或服務(wù)是否存在故障。
[0209]緩存判斷模塊1940,判斷數(shù)據(jù)操作對應(yīng)的數(shù)據(jù)是否存儲在預(yù)設(shè)的與所選服務(wù)器對應(yīng)的緩存中。
[0210]數(shù)據(jù)操作執(zhí)行模塊1950,在判斷結(jié)果為是時,對緩存中的數(shù)據(jù)進行數(shù)據(jù)操作;在判斷結(jié)果為否時,執(zhí)行對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。在本實施例中,合理利用緩存中的數(shù)據(jù),可以避免對服務(wù)器中數(shù)據(jù)庫進行頻繁地操作。
[0211]根據(jù)圖19,某電商網(wǎng)站公布了優(yōu)惠清單,則當(dāng)日有大量用戶通過該網(wǎng)站頁面提交查看優(yōu)惠商品的請求。對某用戶上午發(fā)送的查看請求,已經(jīng)通過商品清單數(shù)據(jù)庫查詢到優(yōu)惠商品,返回給用戶同時也存儲到緩存中,該用戶下午再次進行了查詢,則直接從緩存中獲取優(yōu)惠商品數(shù)據(jù)提供給用戶。
[0212]如圖20所示,本發(fā)明的一個實施例中提供給了一種數(shù)據(jù)操作裝置,其包括:
[0213]請求接收模塊2010,接收終端發(fā)送的進行數(shù)據(jù)操作的請求。在本實施例中,數(shù)據(jù)操作可以是任何類型的數(shù)據(jù)操作。
[0214]服務(wù)器集群模塊2020,為操作請求選擇服務(wù)器集群,服務(wù)器集群中每個服務(wù)器上均具有適于進行數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù)。在本實施例中,數(shù)據(jù)存儲裝置包括但不限于數(shù)據(jù)庫,數(shù)據(jù)庫可以基于Mysql (關(guān)系型數(shù)據(jù)庫管理系統(tǒng))等來實現(xiàn);服務(wù)可以是能夠完成數(shù)據(jù)操作的任何服務(wù)。在本實施例中,可以基于LVS (Linux虛擬服務(wù)器)為服務(wù)器集群提供一個對應(yīng)整個服務(wù)器集群的虛擬IP地址,來響應(yīng)操作請求。
[0215]服務(wù)器選擇模塊2030,檢測服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從服務(wù)器集群中選擇服務(wù)器。在本實施例中,可以通過Haproxy(—種工具)來檢測服務(wù)器中服務(wù)的狀態(tài);服務(wù)的狀態(tài)主要考慮服務(wù)是否可用,例如可以是服務(wù)是否被占用,或服務(wù)是否存在故障。
[0216]緩存判斷模塊2040,判斷數(shù)據(jù)操作對應(yīng)的數(shù)據(jù)是否存儲在預(yù)設(shè)的與所選服務(wù)器對應(yīng)的緩存中。
[0217]數(shù)據(jù)操作執(zhí)行模塊2050,在判斷結(jié)果為是時,對緩存中的數(shù)據(jù)進行數(shù)據(jù)操作;在判斷結(jié)果為否時,執(zhí)行對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行數(shù)據(jù)操作。
[0218]第三同步模塊2060,如果緩存中的數(shù)據(jù)發(fā)生變化,根據(jù)緩存中的數(shù)據(jù)同步所選服務(wù)器中數(shù)據(jù)庫的數(shù)據(jù)。在本實施例中,及時根據(jù)緩存中的數(shù)據(jù)對服務(wù)器數(shù)據(jù)庫進行同步,可以保證數(shù)據(jù)庫中數(shù)據(jù)的準(zhǔn)確性。
[0219]根據(jù)圖20,某網(wǎng)站收集用戶的手機號,以進行手機號抽獎活動。其從服務(wù)器的數(shù)據(jù)庫中取得記錄手機號的表單并保存在緩存中,收集到用戶提交的手機號后對緩存中的表單進行寫操作,增加用戶的手機號。然后可以根據(jù)緩存中的表單,對服務(wù)器數(shù)據(jù)庫中的表單進行更新。
[0220]在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
[0221]在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0222]類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權(quán)利要求書由此明確地并入該【具體實施方式】,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
[0223]本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
[0224]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
[0225]本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的數(shù)據(jù)操作裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0226]應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0227]Al、一種數(shù)據(jù)操作方法,其包括:
[0228]接收終端發(fā)送的進行數(shù)據(jù)操作的請求;
[0229]為所述操作請求選擇服務(wù)器集群,所述服務(wù)器集群中每個服務(wù)器上均具有適于進行所述數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù);
[0230]檢測所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從所述服務(wù)器集群中選擇服務(wù)器;
[0231]調(diào)用所選服務(wù)器的服務(wù)對所述所選服務(wù)器上的數(shù)據(jù)存儲裝置進行所述數(shù)據(jù)操作。
[0232]A2、根據(jù)Al所述的方法,其中,所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括所述服務(wù)器集群中每個服務(wù)器的服務(wù)的地址;
[0233]根據(jù)檢測結(jié)果從所述服務(wù)器集群中選擇服務(wù)器,具體包括:
[0234]獲取所述請求的來源的地址;
[0235]根據(jù)所述請求的來源的地址以及所述服務(wù)器集群中每個服務(wù)器的服務(wù)的地址,計算所述請求的來源與所述服務(wù)器集群中每個服務(wù)器之間的距離;
[0236]根據(jù)距離大小,來從所述服務(wù)器集群中選擇服務(wù)器。
[0237]A3、根據(jù)Al所述的方法,其中,所述服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,所述主服務(wù)器的服務(wù)為讀寫服務(wù),所述從服務(wù)器的服務(wù)為只讀服務(wù),所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括所述服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù);
[0238]根據(jù)檢測結(jié)果從所述服務(wù)器集群中選擇服務(wù)器,具體包括:
[0239]判斷所述數(shù)據(jù)操作是否包含寫操作;
[0240]在所述數(shù)據(jù)操作包含寫操作時,從所述主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器;
[0241]在所述數(shù)據(jù)操作不包含寫操作時,從所述主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從所述從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0242]A4、根據(jù)A3所述的方法,其中,在判斷所述數(shù)據(jù)操作是否包含寫操作之前,還包括:
[0243]在所述數(shù)據(jù)操作為讀寫操作時,對所述讀寫操作進行讀寫分離;
[0244]判斷所述數(shù)據(jù)操作是否包含寫操作,具體包括:
[0245]對讀寫分離后的多個數(shù)據(jù)操作分別進行判斷。
[0246]A5、根據(jù)A3所述的方法,其中,還包括:
[0247]根據(jù)所述主服務(wù)器中數(shù)據(jù)存儲裝置的數(shù)據(jù),同步所述從服務(wù)器中數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
[0248]A6、根據(jù)A5所述的方法,其中,在根據(jù)所述主服務(wù)器中數(shù)據(jù)存儲裝置的數(shù)據(jù),同步所述從服務(wù)器中數(shù)據(jù)存儲裝置中的數(shù)據(jù)之前,還包括:
[0249]在所述從服務(wù)器有多個時,計算所述從服務(wù)器的負載;
[0250]根據(jù)所述負載由低到高的順序,確定對所述從服務(wù)器的同步順序。
[0251]A7、根據(jù)A3所述的方法,其中,所述主服務(wù)器的數(shù)量為多個,所述方法還包括:
[0252]根據(jù)一個主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù),同步另一主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
[0253]AS、根據(jù)A7所述的方法,其中,在根據(jù)一個主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù),同步另一主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù)之前,還包括:
[0254]在待同步的主服務(wù)器有多個時,計算所述待同步的主服務(wù)器的負載;
[0255]根據(jù)所述負載由低到高的順序,確定對所述待同步的主服務(wù)器的同步順序。
[0256]A9、根據(jù)Al至AS中任一項所述的方法,其中,在調(diào)用所選服務(wù)器的服務(wù)對所述所選服務(wù)器上的數(shù)據(jù)存儲裝置進行所述數(shù)據(jù)操作之前,還包括:
[0257]判斷所述數(shù)據(jù)操作對應(yīng)的數(shù)據(jù)是否存儲在預(yù)設(shè)的與所述所選服務(wù)器對應(yīng)的緩存中;
[0258]在判斷結(jié)果為是時,對所述緩存中的數(shù)據(jù)進行所述數(shù)據(jù)操作;
[0259]所述方法還包括:在判斷結(jié)果為否時,執(zhí)行對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行所述數(shù)據(jù)操作。
[0260]A10、根據(jù)A9所述的方法,其中,在對所述緩存中的數(shù)據(jù)進行所述數(shù)據(jù)操作之后,還包括:
[0261 ] 如果所述緩存中的數(shù)據(jù)發(fā)生變化,根據(jù)所述緩存中的數(shù)據(jù)同步所述所選服務(wù)器中數(shù)據(jù)庫的數(shù)據(jù)。
[0262]All、一種數(shù)據(jù)操作裝置,其包括:
[0263]請求接收模塊,用于接收終端發(fā)送的進行數(shù)據(jù)操作的請求;
[0264]服務(wù)器集群選擇模塊,用于為所述操作請求選擇服務(wù)器集群,所述服務(wù)器集群中每個服務(wù)器上均具有適于進行所述數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù);
[0265]服務(wù)器選擇模塊,用于檢測所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從所述服務(wù)器集群中選擇服務(wù)器;
[0266]數(shù)據(jù)操作執(zhí)行模塊,用于調(diào)用所選服務(wù)器的服務(wù)對所述所選服務(wù)器上的數(shù)據(jù)存儲裝置進行所述數(shù)據(jù)操作。
[0267]A12、根據(jù)All所述的裝置,其中,所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括所述服務(wù)器集群中每個服務(wù)器的服務(wù)的地址;所述裝置還包括:
[0268]來源地址獲取模塊,用于獲取所述請求的來源的地址;
[0269]距離計算模塊,用于根據(jù)所述請求的來源的地址以及所述服務(wù)器集群中每個服務(wù)器的服務(wù)的地址,計算所述請求的來源與所述服務(wù)器集群中每個服務(wù)器之間的距離;
[0270]所述服務(wù)器選擇模塊根據(jù)距離大小,來從所述服務(wù)器集群中選擇服務(wù)器。
[0271]A13、根據(jù)All所述的裝置,其中,所述服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,所述主服務(wù)器的服務(wù)為讀寫服務(wù),所述從服務(wù)器的服務(wù)為只讀服務(wù),所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括所述服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù);所述裝置還包括:
[0272]操作判斷模塊,用于判斷所述數(shù)據(jù)操作是否包含寫操作;
[0273]在所述數(shù)據(jù)操作包含寫操作時,所述服務(wù)器選擇模塊從所述主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器;
[0274]在所述數(shù)據(jù)操作不包含寫操作時,所述服務(wù)器選擇模塊從所述主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從所述從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
[0275]A14、根據(jù)A13所述的裝置,其中,還包括:
[0276]讀寫分離模塊,用于在所述數(shù)據(jù)操作為讀寫操作時,對所述讀寫操作進行讀寫分離;
[0277]所述操作判斷模塊對讀寫分離后的多個數(shù)據(jù)操作分別進行判斷。
[0278]A15、根據(jù)A13所述的裝置,其中,還包括:
[0279]第一同步模塊,用于根據(jù)所述主服務(wù)器中數(shù)據(jù)存儲裝置的數(shù)據(jù),同步所述從服務(wù)器中數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
[0280]A16、根據(jù)A15所述的裝置,其中,還包括:
[0281]第一負載計算模塊,用于在所述從服務(wù)器有多個時,計算所述從服務(wù)器的負載;
[0282]第一同步順序確定模塊,用于根據(jù)所述負載由低到高的順序,確定對所述從服務(wù)器的同步順序。
[0283]A17、根據(jù)A13所述的裝置,其中,所述主服務(wù)器的數(shù)量為多個,所述裝置包括:
[0284]第二同步模塊,用于根據(jù)一個主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù),同步另一主服務(wù)器上數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
[0285]A18、根據(jù)A17所述的裝置,其中,還包括:
[0286]第二負載計算模塊,用于在待同步的主服務(wù)器有多個時,計算所述待同步的主服務(wù)器的負載;
[0287]第二同步順序確定模塊,用于根據(jù)所述負載由低到高的順序,確定對所述待同步的主服務(wù)器的同步順序。
[0288]A19、根據(jù)All至A18中任一項所述的裝置,其中,還包括:
[0289]緩存判斷模塊,用于判斷所述數(shù)據(jù)操作對應(yīng)的數(shù)據(jù)是否存儲在預(yù)設(shè)的與所述所選服務(wù)器對應(yīng)的緩存中;
[0290]在判斷結(jié)果為是時,所述緩存操作模塊對所述緩存中的數(shù)據(jù)進行所述數(shù)據(jù)操作;
[0291]在判斷結(jié)果為否時,所述操作執(zhí)行模塊執(zhí)行對所選服務(wù)器上的數(shù)據(jù)存儲裝置進行所述數(shù)據(jù)操作。
[0292]20、根據(jù)權(quán)利要求11所述的裝置,其中,還包括:
[0293]第三同步模塊,用于如果所述緩存中的數(shù)據(jù)發(fā)生變化,根據(jù)所述緩存中的數(shù)據(jù)同步所述所選服務(wù)器中數(shù)據(jù)庫的數(shù)據(jù)。
【權(quán)利要求】
1.一種數(shù)據(jù)操作方法,其包括: 接收終端發(fā)送的進行數(shù)據(jù)操作的請求; 為所述操作請求選擇服務(wù)器集群,所述服務(wù)器集群中每個服務(wù)器上均具有適于進行所述數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù); 檢測所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從所述服務(wù)器集群中選擇服務(wù)器; 調(diào)用所選服務(wù)器的服務(wù)對所述所選服務(wù)器上的數(shù)據(jù)存儲裝置進行所述數(shù)據(jù)操作。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括所述服務(wù)器集群中每個服務(wù)器的服務(wù)的地址; 根據(jù)檢測結(jié)果從所述服務(wù)器集群中選擇服務(wù)器,具體包括: 獲取所述請求的來源的地址; 根據(jù)所述請求的來源的地址以及所述服務(wù)器集群中每個服務(wù)器的服務(wù)的地址,計算所述請求的來源與所述服務(wù)器集群中每個服務(wù)器之間的距離; 根據(jù)距離大小,來從所述服務(wù)器集群中選擇服務(wù)器。
3.根據(jù)權(quán)利要求1所述的方法,其中,所述服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,所述主服務(wù)器的服務(wù)為讀寫服務(wù),所述從服務(wù)器的服務(wù)為只讀服務(wù),所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括所述服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù); 根據(jù)檢測結(jié)果從所述服務(wù)器集群中選擇服務(wù)器,具體包括: 判斷所述數(shù)據(jù)操作是否包含寫操作; 在所述數(shù)據(jù)操作包含寫操作時,從所述主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器;在所述數(shù)據(jù)操作不包含寫操作時,從所述主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從所述從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
4.根據(jù)權(quán)利要求3所述的方法,其中,在判斷所述數(shù)據(jù)操作是否包含寫操作之前,還包括: 在所述數(shù)據(jù)操作為讀寫操作時,對所述讀寫操作進行讀寫分離; 判斷所述數(shù)據(jù)操作是否包含寫操作,具體包括: 對讀寫分離后的多個數(shù)據(jù)操作分別進行判斷。
5.根據(jù)權(quán)利要求3所述的方法,其中,還包括: 根據(jù)所述主服務(wù)器中數(shù)據(jù)存儲裝置的數(shù)據(jù),同步所述從服務(wù)器中數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
6.一種數(shù)據(jù)操作裝置,其包括: 請求接收模塊,用于接收終端發(fā)送的進行數(shù)據(jù)操作的請求; 服務(wù)器集群選擇模塊,用于為所述操作請求選擇服務(wù)器集群,所述服務(wù)器集群中每個服務(wù)器上均具有適于進行所述數(shù)據(jù)操作的數(shù)據(jù)存儲裝置和服務(wù); 服務(wù)器選擇模塊,用于檢測所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài),根據(jù)檢測結(jié)果從所述服務(wù)器集群中選擇服務(wù)器; 數(shù)據(jù)操作執(zhí)行模塊,用于調(diào)用所選服務(wù)器的服務(wù)對所述所選服務(wù)器上的數(shù)據(jù)存儲裝置進行所述數(shù)據(jù)操作。
7.根據(jù)權(quán)利要求6所述的裝置,其中,所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括所述服務(wù)器集群中每個服務(wù)器的服務(wù)的地址;所述裝置還包括: 來源地址獲取模塊,用于獲取所述請求的來源的地址; 距離計算模塊,用于根據(jù)所述請求的來源的地址以及所述服務(wù)器集群中每個服務(wù)器的服務(wù)的地址,計算所述請求的來源與所述服務(wù)器集群中每個服務(wù)器之間的距離; 所述服務(wù)器選擇模塊根據(jù)距離大小,來從所述服務(wù)器集群中選擇服務(wù)器。
8.根據(jù)權(quán)利要求6所述的裝置,其中,所述服務(wù)器集群中包括主服務(wù)器和從服務(wù)器,所述主服務(wù)器的服務(wù)為讀寫服務(wù),所述從服務(wù)器的服務(wù)為只讀服務(wù),所述服務(wù)器集群中每個服務(wù)器的服務(wù)的狀態(tài)包括所述服務(wù)器集群中每個服務(wù)器的服務(wù)是讀寫服務(wù)還是只讀服務(wù);所述裝置還包括: 操作判斷模塊,用于判斷所述數(shù)據(jù)操作是否包含寫操作; 在所述數(shù)據(jù)操作包含寫操作時,所述服務(wù)器選擇模塊從所述主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器; 在所述數(shù)據(jù)操作不包含寫操作時,所述服務(wù)器選擇模塊從所述主服務(wù)器中選擇具有讀寫服務(wù)的服務(wù)器,或從所述從服務(wù)器中選擇具有只讀服務(wù)的服務(wù)器。
9.根據(jù)權(quán)利要求8所述的裝置,其中,還包括: 讀寫分離模塊,用于在所述數(shù)據(jù)操作為讀寫操作時,對所述讀寫操作進行讀寫分離; 所述操作判斷模塊對讀寫分離后的多個數(shù)據(jù)操作分別進行判斷。
10.根據(jù)權(quán)利要求8所述的裝置,其中,還包括: 第一同步模塊,用于根據(jù)所述主服務(wù)器中數(shù)據(jù)存儲裝置的數(shù)據(jù),同步所述從服務(wù)器中數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
【文檔編號】H04L29/08GK104468777SQ201410738454
【公開日】2015年3月25日 申請日期:2014年12月5日 優(yōu)先權(quán)日:2014年12月5日
【發(fā)明者】曲文慶, 劉鋒 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司