一種數(shù)據(jù)更新的方法和系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)更新領域,更具體地涉及一種數(shù)據(jù)更新的方法、和系統(tǒng)。
【背景技術】
[0002]對線上服務來說,經(jīng)常需要更新在線配置和數(shù)據(jù)。例如,索引詞典是搜索引擎非常重要的數(shù)據(jù)文件,其主要特點是:1)數(shù)據(jù)規(guī)模非常龐大;2)訪問和更新都非常頻繁。一般來說,對搜索引擎的數(shù)據(jù)更新就是指對索引詞典的更新。隨著現(xiàn)代搜索技術的發(fā)展,所需要處理的數(shù)據(jù)量越來越大,而且數(shù)據(jù)更新的次數(shù)也更加頻繁。但是,對數(shù)據(jù)的更新,例如對索引詞典的更新往往需要模塊的重啟才能生效,而且需要較多的人工參與。因此,這種數(shù)據(jù)更新方式給線上的數(shù)據(jù)處理的運行和運維都帶來了較大的壓力。
[0003]因此,在本領域中,需要一種能夠在不停掉線上服務的情況下更新數(shù)據(jù)的方式,本發(fā)明提出利用一種創(chuàng)新的方式來實現(xiàn)對數(shù)據(jù)的更新,從而大大降低線上數(shù)據(jù)處理的運維難度,并且提高了線上數(shù)據(jù)處理的穩(wěn)健性。
【發(fā)明內(nèi)容】
[0004]鑒于上述問題,本發(fā)明提供一種數(shù)據(jù)更新技術,以在不停掉線上服務的情況下更新數(shù)據(jù)。
[0005]為了解決上述技術問題,本發(fā)明的目的是通過以下技術方案實現(xiàn):
[0006]本發(fā)明提供了一種數(shù)據(jù)更新方法,其包括:將數(shù)據(jù)文件的數(shù)據(jù)劃分成數(shù)據(jù)分塊并分別存儲到一個或多個分片服務器集群中;在每一個分片服務器集群中,將數(shù)據(jù)分塊復制并存儲至一個以上分片復本服務器;匯總服務器對分片服務器集群的數(shù)據(jù)處理結果進行匯總,并通過訪問所述一個或多個分片服務器集群獲取正在提供數(shù)據(jù)處理服務的分片復本服務器,該方法包括:步驟110:接收數(shù)據(jù)更新請求;步驟120:確定分片服務器集群中是否有可以更新數(shù)據(jù)的分片復本服務器;步驟130:當確定分片服務器集群中有可以更新數(shù)據(jù)的分片復本服務器時,對分片服務器集群中的至少一個可以更新數(shù)據(jù)的分片復本服務器的數(shù)據(jù)進行更新;以及步驟140:當所述至少一個可以更新數(shù)據(jù)的分片復本服務器更新數(shù)據(jù)完畢后,針對剩余的未更新的分片復本服務器,執(zhí)行步驟110至130,直至所有未更新的分片復本服務器更新數(shù)據(jù)完畢。
[0007]其中,還包括:步驟150:當確定沒有可以更新數(shù)據(jù)的分片復本服務器時,返回步驟 110。
[0008]其中,所述步驟140進一步包括:當所述至少一個可以更新數(shù)據(jù)的分片復本服務器更新數(shù)據(jù)完畢后,將所更新的分片復本服務器的狀態(tài)定義為服務狀態(tài)并將所述服務狀態(tài)通知匯總服務器;并且更新完畢的分片復本服務器恢復提供數(shù)據(jù)處理服務。
[0009]其中,所述步驟130進一步包括:將所更新的分片復本服務器的狀態(tài)定義為更新狀態(tài)并將其所述更新狀態(tài)通知匯總服務器。
[0010]其中,屬于不同分片服務器集群的可以更新數(shù)據(jù)的分片復本服務器并行更新數(shù)據(jù)。
[0011]其中,在分片服務器集群的數(shù)據(jù)更新過程中,每個分片服務器集群中至少有一個分片復本服務器提供數(shù)據(jù)處理服務。
[0012]其中,在分片服務器集群的數(shù)據(jù)更新過程中,每個分片服務器集群中有小于或等于預先設定的閾值的分片復本服務器并行更新數(shù)據(jù)。
[0013]其中,在分片服務器集群的數(shù)據(jù)更新過程中,每個分片服務器集群中僅有一個分片復本服務器正在更新數(shù)據(jù)。
[0014]其中,所述分片服務器集群是基礎信息服務器集群或展示信息服務器集群。
[0015]本發(fā)明還提供了一種數(shù)據(jù)更新系統(tǒng),其包括:一個或多個分片服務器集群、一個以上分片復本服務器以及匯總服務器;每一個分片服務器集群包括一個或多個分片復本服務器;所述分片復本服務器包括:接收模塊,用于接收數(shù)據(jù)更新請求;確定模塊,用于確定分片服務器集群中是否有可以更新數(shù)據(jù)的分片復本服務器;以及更新模塊,用于當確定分片服務器集群中有可以更新數(shù)據(jù)的分片復本服務器時,對分片服務器集群中的所述至少一個可以更新的分片復本服務器的數(shù)據(jù)進行更新。
[0016]其中,所述更新模塊進一步包括:服務狀態(tài)通知子模塊,用于當所述至少一個可以更新數(shù)據(jù)的分片復本服務器更新數(shù)據(jù)完畢后,將所更新的分片復本服務器的狀態(tài)定義為服務狀態(tài)并將所述服務狀態(tài)通知匯總服務器;并且更新完畢的分片復本服務器恢復提供數(shù)據(jù)處理服務。
[0017]其中,所述更新模塊進一步包括:更新狀態(tài)通知子模塊,用于將所更新的分片復本服務器的狀態(tài)定義為更新狀態(tài)并將其所述更新狀態(tài)通知匯總服務器。
[0018]其中,屬于不同分片服務器集群的可以更新數(shù)據(jù)的分片復本服務器被配置為并行更新數(shù)據(jù)。
[0019]其中,在分片服務器集群的數(shù)據(jù)更新過程中,每個分片服務器集群被配置為至少有一個分片復本服務器提供數(shù)據(jù)處理服務。
[0020]其中,在分片服務器集群的數(shù)據(jù)更新過程中,每個分片服務器集群被配置為有小于或等于預先設定的閾值的分片復本服務器并行更新數(shù)據(jù)。
[0021]其中,在分片服務器集群的數(shù)據(jù)更新過程中,每個分片服務器集群被配置為僅有一個分片復本服務器正在更新數(shù)據(jù)。
[0022]其中,所述分片服務器集群是基礎信息服務器集或展示信息服務器集群。
[0023]上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【附圖說明】
[0024]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0025]圖1是根據(jù)本發(fā)明一個實施例的數(shù)據(jù)更新方法的流程圖;
[0026]圖2a和圖2b是根據(jù)本發(fā)明一個實施例的數(shù)據(jù)更新方法的Zookeeper文件系統(tǒng)圖;
[0027]圖3根據(jù)本發(fā)明另一個實施例的數(shù)據(jù)更新方法的Zookeeper文件系統(tǒng)圖;
[0028]圖4是根據(jù)本發(fā)明一個實施例的數(shù)據(jù)更新系統(tǒng)的示意圖;以及
[0029]圖5是根據(jù)本發(fā)明一個實施例的一個分片復本服務器的框圖。
【具體實施方式】
[0030]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0031]本發(fā)明的主要思想在于,通過采用分布式多機協(xié)作熱切換的方案,使數(shù)據(jù)更新完全由程序自動化完成,即,在不停掉線上服務的情況下,進行配置文件和檢索詞典等數(shù)據(jù)文件的自動切換并生效。
[0032]為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明具體實施例及相應的附圖對本發(fā)明技術方案進行清楚、完整地描述。顯然,所描述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0033]在一個實現(xiàn)方式中,通過專業(yè)的系統(tǒng)運維人員進行數(shù)據(jù)更新切換,具體做法:1)為線上服務提供一個備用集群,這個備用集群相當于線上服務集群的一個鏡像;2)每次數(shù)據(jù)更新時,先在線上更新好備用集群,待備用集群更新完畢準備好之后,將線上訪問請求流量轉移到備用集群上,這樣備用集群就成了線上服務集群;3)將原來的線上服務集群變成備用集群。這種實現(xiàn)方式的缺點:1)需要較多的人工參與,更新速度緩慢,而且容易造成線上故障頻發(fā),系統(tǒng)的穩(wěn)定性難以保障;2)由于需要提供備用集群,導致需要更多的機器來滿足日常的線上服務,但是大部分情況下備用集群都處于閑置狀態(tài),資源浪費嚴重。
[0034]在另一個實現(xiàn)方式中,通過采用雙buffer (內(nèi)存)進行數(shù)據(jù)更新切換,具體做法:I)數(shù)據(jù)處理系統(tǒng)在內(nèi)存中把數(shù)據(jù)加載為兩份,將兩份數(shù)據(jù)的序號分別設定為O和I ;2)其中一份數(shù)據(jù)表用于提供線上服務,例如,cur_idx對應當前提供線上服務的數(shù)據(jù),其當前序號為0,即表示當前O號數(shù)據(jù)提供線上服務;3)當系統(tǒng)發(fā)現(xiàn)有新的數(shù)據(jù)更新生成推送時,利用內(nèi)存中的l_cur_idx號數(shù)據(jù)來加載該更新數(shù)據(jù),待數(shù)據(jù)更新完畢后令cur_idx=l-cur_idx,從而使cur_idX數(shù)據(jù)提供線上服務。這種實現(xiàn)方式的缺點在于,由于系統(tǒng)需要把數(shù)據(jù)加載為兩份,其中一份用于更新,另一份用于當前提供線上服務,更新時在兩份數(shù)據(jù)之間進行切換,因此系統(tǒng)需要占用較多內(nèi)存。
[0035]為了方便下文描述,首先