本申請涉及分布式計算機
技術(shù)領域:
,特別是涉及一種分布式存儲系統(tǒng)升級方法和一種分布式存儲系統(tǒng)升級裝置。
背景技術(shù):
:高可用的分布式存儲系統(tǒng)是構(gòu)建高可用服務的基石,分布式存儲系統(tǒng)由分布式的數(shù)據(jù)服務器組成,它提供數(shù)據(jù)的高可靠性和訪問的高可用性。其中高可靠性通過數(shù)據(jù)冗余多備份或糾刪碼實現(xiàn);高可用性通過快速的異常處理和故障切換實現(xiàn)。對分布式存儲系統(tǒng)進行版本升級,需要重啟系統(tǒng)的每個數(shù)據(jù)服務器完成版本更新。在先技術(shù)中,對于分布式存儲系統(tǒng)的升級,存在如下幾種方案:其一,關閉上層服務,并停止整個分布式存儲系統(tǒng),對分布式存儲系統(tǒng)所有的數(shù)據(jù)服務器進行重啟升級,所有數(shù)據(jù)服務器升級完畢后,再恢復上層服務。但是,該種方案導致上層服務整體不可用,其服務的不可用時間很長,對于一些需要高可用的服務是不可接受的。其二,不停上層服務,以輪轉(zhuǎn)的方式重啟每個數(shù)據(jù)服務器,客戶端向多個(該多個為默認需要備份的個數(shù))數(shù)據(jù)服務器發(fā)送寫入請求,以向數(shù)據(jù)服務器寫入待寫數(shù)據(jù),如果請求失敗,則客戶端向上述數(shù)據(jù)服務器進行重試,以保證客戶端的訪問繼續(xù)進行。但是,該種方案中,如果客戶端等待該數(shù)據(jù)服務器恢復并重試,而由于數(shù)據(jù)服務器一般重啟恢復的時間在秒級,而高實時的數(shù)據(jù)訪問延時在10-100ms級,該種重試策略將極大影響服務器的響應時間。其三,不停上層服務,以輪轉(zhuǎn)的方式重啟每個數(shù)據(jù)服務器,客戶端向多個(該多個為默認需要備份的個數(shù))數(shù)據(jù)服務器發(fā)送寫入請求,以向數(shù)據(jù)服務器寫入待寫數(shù)據(jù)如果請求失敗,則客戶端忽略這些數(shù)據(jù)服務器進行重試,以保證客戶端的訪問繼續(xù)進行。但是,該種方案中,客戶端暫時忽略請求失敗的數(shù)據(jù)服務器,分布式存儲系統(tǒng)而對這些數(shù)據(jù)服務器的輪轉(zhuǎn)升級繼續(xù)進行。如果分布式存儲系統(tǒng)中各個數(shù)據(jù)服務器輪轉(zhuǎn)重啟過快,而如果客戶端只對一個數(shù)據(jù)服務器寫入成功,從而只有一個數(shù)據(jù)服務器寫入成功,假使恰巧輪轉(zhuǎn)時這個數(shù)據(jù)服務器的磁盤或者機器損壞,由于該客戶端的待寫數(shù)據(jù)沒有寫入到其他數(shù)據(jù)服務器中,則會造成用戶數(shù)據(jù)的丟失。即使延長輪轉(zhuǎn)重啟時間,但是分布式存儲系統(tǒng)的大集群在長時間內(nèi)輪轉(zhuǎn)時也會有非預期的磁盤和機器異常,還是會產(chǎn)生對客戶端的數(shù)據(jù)只有一個數(shù)據(jù)服務器寫入成功的情況,使用戶數(shù)據(jù)處于極大的丟失風險中。因此該種方案的雖然解決了延遲問題,但是數(shù)據(jù)的可靠性不足。技術(shù)實現(xiàn)要素:鑒于上述問題,提出了本申請實施例以便提供一種克服上述問題或者至少部分地解決上述問題的一種分布式存儲系統(tǒng)升級方法和相應的一種分布式存儲系統(tǒng)升級裝置。為了解決上述問題,本申請公開了一種分布式存儲系統(tǒng)升級方法,應用于客戶端,包括:對同一份待寫數(shù)據(jù),向多個數(shù)據(jù)服務器發(fā)送寫入請求;接收各數(shù)據(jù)服務器返回的響應,并根據(jù)所述響應判斷寫入成功的個數(shù)是否大于指定個數(shù);如果寫入成功的個數(shù)大于指定個數(shù),則向各寫入成功的數(shù)據(jù)服務器發(fā)送第一反饋信息;如果寫入成功的個數(shù)不大于指定個數(shù),則向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息;其中,所述第一反饋信息或第二反饋信息供所述數(shù)據(jù)服務器確定自身的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài);所述數(shù)據(jù)服務器的狀態(tài)供升級控制服務器以輪轉(zhuǎn)的方式通知所述數(shù)據(jù)服務器進行升級操作。本申請還公開了一種分布式存儲系統(tǒng)升級方法,應用于數(shù)據(jù)服務器,包括:接收客戶端發(fā)送的第一反饋信息或者第二反饋信息;所述第一反饋信息或第二反饋信息根據(jù)客戶端對同一份待寫數(shù)據(jù)向多個數(shù)據(jù)服務器發(fā)送寫入請求后,寫入成功的個數(shù)與指定個數(shù)的比較結(jié)果獲得;在自身處于未升級的情況下,根據(jù)所述第一反饋信息或者第二反饋信息,確定數(shù)據(jù)服務器自身的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài);所述狀態(tài)供升級控制服務器以輪轉(zhuǎn)的方式選擇通知所述數(shù)據(jù)服務器進行升級操作。本申請還公開了一種分布式存儲系統(tǒng)升級方法,應用于升級控制服務器,包括:獲取各數(shù)據(jù)服務器的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài),每個數(shù)據(jù)服務器有一個狀態(tài);所述數(shù)據(jù)服務器的狀態(tài)根據(jù)所述第一反饋信息或者第二反饋信息確定;所述第一反饋信息或第二反饋信息根據(jù)客戶端對同一份待寫數(shù)據(jù)向多個數(shù)據(jù)服務器發(fā)送寫入請求后,寫入成功的個數(shù)與指定個數(shù)的比較結(jié)果獲得;以輪轉(zhuǎn)的方式通知至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器進行升級操作;所述數(shù)據(jù)服務器根據(jù)所述通知進行升級操作。本申請還公開了一種分布式存儲系統(tǒng)升級裝置,應用于客戶端,包括:請求發(fā)送模塊,用于對同一份待寫數(shù)據(jù),向多個數(shù)據(jù)服務器發(fā)送寫入請求;判斷模塊,用于接收各數(shù)據(jù)服務器返回的響應,并根據(jù)所述響應判斷寫入成功的個數(shù)是否大于指定個數(shù);第一反饋模塊,用于如果寫入成功的個數(shù)大于指定個數(shù),則向各寫入成功的數(shù)據(jù)服務器發(fā)送第一反饋信息;第二反饋模塊,用于如果寫入成功的個數(shù)不大于指定個數(shù),則向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息;其中,所述第一反饋信息或第二反饋信息供所述數(shù)據(jù)服務器確定自身的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài);所述數(shù)據(jù)服務器的狀態(tài)供升級控制服務器以輪轉(zhuǎn)的方式通知所述數(shù)據(jù)服務器進行升級操作。本申請還公開了一種分布式存儲系統(tǒng)升級裝置,應用于數(shù)據(jù)服務器,包括:反饋信息接收模塊,用于接收客戶端發(fā)送的第一反饋信息或者第二反饋信息;所述第一反饋信息或第二反饋信息根據(jù)客戶端對同一份待寫數(shù)據(jù)向多個數(shù)據(jù)服務器發(fā)送寫入請求后,寫入成功的個數(shù)與指定個數(shù)的比較結(jié)果獲得;狀態(tài)確定模塊,用于在自身處于未升級的情況下,根據(jù)所述第一反饋信息或者第二反饋信息,確定數(shù)據(jù)服務器自身的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài);所述狀態(tài)供升級控制服務器以輪轉(zhuǎn)的方式選擇通知所述數(shù)據(jù)服務器進行升級操作。本申請還公開了一種分布式存儲系統(tǒng)升級裝置,應用于升級控制服務器,包括:狀態(tài)獲取模塊,用于獲取各數(shù)據(jù)服務器的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài),每個數(shù)據(jù)服務器有一個狀態(tài);所述數(shù)據(jù)服務器的狀態(tài)根據(jù)所述第一反饋信息或者第二反饋信息確定;所述第一反饋信息或第二反饋信息根據(jù)客戶端對同一份待寫數(shù)據(jù)向多個數(shù)據(jù)服務器發(fā)送寫入請求后,寫入成功的個數(shù)與指定個數(shù)的比較結(jié)果獲得;升級通知模塊,用于以輪轉(zhuǎn)的方式通知至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器進行升級操作;所述數(shù)據(jù)服務器根據(jù)所述通知進行升級操作。本申請實施例包括以下優(yōu)點:本申請實施例,在分布式存儲系統(tǒng)啟動升級流程后,對于訪問該分布式存儲系統(tǒng)的客戶端,讓各個客戶端對于同一個待寫數(shù)據(jù),同時向多個數(shù)據(jù)服務器發(fā)送該針對該待寫數(shù)據(jù)的寫入請求,然后分析在多少個數(shù)據(jù)服務器中寫入成功該待寫數(shù)據(jù),判斷寫入成功的個數(shù)是否大于指定個數(shù),根據(jù)該判斷結(jié)果向各寫入成功的數(shù)據(jù)服務器發(fā)送第一反饋信息或者第二反饋信息。對于數(shù)據(jù)服務器,根據(jù)接收到的第一反饋信息或者第二反饋信息,確定自身是處于可升級狀態(tài)還是處于不可升級狀態(tài)。對于升級控制服務器,則可以根據(jù)數(shù)據(jù)服務器的狀態(tài)以輪轉(zhuǎn)的方式選擇通知所述 數(shù)據(jù)服務器進行升級操作。通過上述過程,本申請實施例中,在升級控制服務器在以輪轉(zhuǎn)的方式控制各數(shù)據(jù)服務器進行升級時,由于由客戶端控制數(shù)據(jù)服務器的狀態(tài),并且保證任一客戶端的待寫數(shù)據(jù)最少寫入指定個數(shù)的數(shù)據(jù)服務器中以進行備份,因此在不用停止上層服務的情況下,既可以保證分布式存儲系統(tǒng)對客戶端的響應時間較低,也提高了數(shù)據(jù)的可靠性,大大降低了用戶數(shù)據(jù)丟失的風險。附圖說明圖1是本申請的客戶端側(cè)的一種分布式存儲系統(tǒng)升級方法實施例的步驟流程圖;圖2是本申請的數(shù)據(jù)服務器側(cè)的一種分布式存儲系統(tǒng)升級方法實施例的步驟流程圖;圖3是本申請的升級控制服務器側(cè)的一種分布式存儲系統(tǒng)升級方法實施例的步驟流程圖;圖4是本申請的一種分布式存儲系統(tǒng)升級系統(tǒng)實施例的步驟流程圖;圖5是本申請的客戶端側(cè)的一種分布式存儲系統(tǒng)升級裝置實施例的結(jié)構(gòu)框圖;圖6是本申請的客戶端側(cè)的一種分布式存儲系統(tǒng)升級裝置實施例的結(jié)構(gòu)框圖;圖7是本申請的數(shù)據(jù)服務器側(cè)的一種分布式存儲系統(tǒng)升級裝置實施例的結(jié)構(gòu)框圖;圖8是本申請的升級控制服務器側(cè)的一種分布式存儲系統(tǒng)升級裝置實施例的結(jié)構(gòu)框圖;圖8a是本申請實施例的分布式存儲系統(tǒng)的架構(gòu)示例。具體實施方式為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式對本申請作進一步詳細的說明。本申請實施例的核心構(gòu)思之一在于,對于分布式存儲系統(tǒng)的數(shù)據(jù)服務器、升級控制服務器進行了創(chuàng)造性的更改,并且對訪問數(shù)據(jù)服務器的客戶端,也提供了新的執(zhí)行邏輯。在分布式存儲系統(tǒng)啟動升級流程后,對于訪問該分布式存儲系統(tǒng)的客戶端,對于訪問該分布式存儲系統(tǒng)的客戶端,每個客戶端對于同一個待寫數(shù)據(jù),同時向多個數(shù)據(jù)服務器發(fā)送針對該待寫數(shù)據(jù)的寫入請求,然后分析在多少個數(shù)據(jù)服務器中寫入成功該待寫數(shù)據(jù),判斷寫入成功的個數(shù)是否大于指定個數(shù),根據(jù)該判斷結(jié)果向各寫入成功的數(shù)據(jù)服務器發(fā)送第一反饋信息或者第二反饋信息。對于數(shù)據(jù)服務器,根據(jù)接收到的第一反饋信息或者第二反饋信息,確定自身是處于可升級狀態(tài)還是處于不可升級狀態(tài)。對于升級控制服務器,則可以根據(jù)數(shù)據(jù)服務器的狀態(tài)以輪轉(zhuǎn)的方式選擇通知所述數(shù)據(jù)服務器進行升級操作。通過上述過程,在升級控制服務器在以輪轉(zhuǎn)的方式控制可升級狀態(tài)的數(shù)據(jù)服務器進行升級時,由于由客戶端控制數(shù)據(jù)服務器的狀態(tài),并且保證任一客戶端的待寫數(shù)據(jù)最少寫入指定個數(shù)的數(shù)據(jù)服務器中以進行備份,因此在不用停止上層服務的情況下,既可以保證分布式存儲系統(tǒng)對客戶端的響應時間較低,也提高了數(shù)據(jù)的可靠性,大大降低了用戶數(shù)據(jù)丟失的風險;并且可容忍升級過程中非預期的機器異常,保證服務不受影響。實施例一本申請實施例應用于客戶端側(cè)。參照圖1,示出了本申請的一種分布式存儲系統(tǒng)升級方法實施例的步驟流程圖,具體可以包括如下步驟:步驟110,對同一份待寫數(shù)據(jù),向多個數(shù)據(jù)服務器發(fā)送寫入請求。在本申請實施例中,對于一客戶端a,在分布式存儲系統(tǒng)的升級過程中,當該客戶端要向數(shù)據(jù)服務器寫入待寫數(shù)據(jù)a1時,該客戶端a會向多個數(shù)據(jù)服務器發(fā)送針對該待寫數(shù)據(jù)a的寫入請求。在本申請實施例中,可以預先設置多個數(shù)據(jù)服務器的個數(shù)r,比如10個。具體的個數(shù)r本申請實施例不對其加以限制。那么對于該待寫數(shù)據(jù),其可以向r數(shù)據(jù)服務器發(fā)送寫入請求,然后進入步驟120??梢岳斫猓趯嶋H應用中,該客戶端a可先向分布式存儲系統(tǒng)的調(diào)度服務器發(fā)送r個寫入請求,然后由該調(diào)度服務器控制該r個寫入請求分配給哪r個數(shù)據(jù)服務器。需要說明的是,不同客戶端針對其待寫數(shù)據(jù),向r個數(shù)據(jù)服務器發(fā)送寫入請求,各自的r個數(shù)據(jù)服務器可以相同也可以不同。在本申請另一優(yōu)選的實施例中,在步驟110之前,還包括步驟101-102:步驟101,在訪問一數(shù)據(jù)服務器時,接收由數(shù)據(jù)服務器發(fā)送的第二升級通知。步驟102,根據(jù)所述第二升級通知進入升級準備狀態(tài)。在本申請實施例中,分布式存儲系統(tǒng)的升級控制服務器首先通知各個數(shù)據(jù)服務器進入升級準備狀態(tài)。那么各個數(shù)據(jù)服務器則可以向訪問該數(shù)據(jù)服務器的客戶端發(fā)送第二升級通知,以使客戶端進入升級準備狀態(tài)。相應的,對于客戶端a來說,其訪問進入了升級準備狀態(tài)的一數(shù)據(jù)服務器后,該數(shù)據(jù)服務器則返回第二升級通知給該客戶端。該客戶端接收到該第二升級準備通知后,則根據(jù)該第二升級準備通知進入升級準備狀態(tài)。在本申請實施例中,如果客戶端是通過瀏覽器的網(wǎng)頁的方式訪問數(shù)據(jù)服務器,本申請可以通過瀏覽器打開的網(wǎng)頁,給瀏覽器傳輸一個升級腳本,瀏覽器接收到該腳本后,則可以執(zhí)行該腳本,使客戶端進入升級準備狀態(tài)。如果客戶端是通過支付寶app等方式訪問數(shù)據(jù)服務器,本申請可以預先在上述app中添加升級處理邏輯,該app在接收到第二升級通知后,則啟用升級處理邏輯,使客戶端進入升級準備狀態(tài)。當然,具體方式本申請實施例不對其加以限制。當客戶端進入升級準備狀態(tài),則可以進入本申請實施例的步驟110、120、130、140等由客戶端側(cè)執(zhí)行的步驟。步驟120,接收各數(shù)據(jù)服務器返回的響應,并根據(jù)所述響應判斷寫入成功的個數(shù)是否大于指定個數(shù);如果寫入成功的個數(shù)大于指定個數(shù),則進入步 驟130;如果寫入成功的個數(shù)不大于指定個數(shù),則進入步驟140。在本申請實施例中,在正常情況下,各數(shù)據(jù)服務器接收到客戶端發(fā)送的針對同一份待寫數(shù)據(jù)的寫入請求后,會相應地返回響應給客戶端。當然,如果某個數(shù)據(jù)服務器正在升級,或者宕掉,則不會返回響應給客戶端。在本申請實施例中,客戶端針對待寫數(shù)據(jù)a1,在向r個數(shù)據(jù)服務器發(fā)送寫入請求后,則可以周期性的檢查接收到的響應。如周期性的檢查是否接收到該某個或某些個數(shù)據(jù)服務器的響應。如果在指定時間周期內(nèi)未接收到某或者某幾個數(shù)據(jù)服務器的響應,則說明該待寫數(shù)據(jù)a1沒能成功寫入該某個或者某幾個數(shù)據(jù)服務器中。如果在指定時間周期內(nèi)接收到某個或某幾個數(shù)據(jù)服務器的響應,則可以分析該響應是寫入成功響應,還是寫入失敗響應;如果是寫入成功響應,則說明該寫入成功響應對應的數(shù)據(jù)服務器對待寫數(shù)據(jù)a1的備份成功,也即寫入成功;如果是寫入失敗響應,則說明該寫入失敗響應對應的數(shù)據(jù)服務器對待寫數(shù)據(jù)a1的備份失敗,也即寫入失敗。需要說明的是,對于r個數(shù)據(jù)服務器的響應,客戶端a是周期性的檢查m是否大于n。該周期如1ms(微秒),當然,該周期可以根據(jù)需要設定,本申請不對其加以限制。那么,本申請可以基于上述判斷,統(tǒng)計待寫數(shù)據(jù)a1向數(shù)據(jù)服務器寫入成功的個數(shù)。在本申請實施例中,可以預設一個寫入成功的指定個數(shù),該指定個數(shù)為寫入成功的最低個數(shù),也可以理解為一個客戶端的待寫數(shù)據(jù)備份成功的數(shù)據(jù)服務器的個數(shù),該指定個數(shù)比如n個,該n<r,n、r均為正整數(shù)。在實際中可以默認n=3,r=10,當然,n和r的值可以根據(jù)實際需求設置,本申請不對其加以限制。那么客戶端a將其當前的待寫數(shù)據(jù)a1向r個數(shù)據(jù)服務器發(fā)送寫入請求后,如果有m個數(shù)據(jù)服務器返回寫入成功響應,那么則判斷是否m>n。如果m>n,則進入步驟130;如果m≤n,則進入步驟140。其中,m≥0,且為整數(shù)。當然,在實際應用中,由于數(shù)據(jù)服務器是按照機架放置的,那么這r個 數(shù)據(jù)服務器可以分布在不同的機架上,進一步提高容災備份效果。最優(yōu)的情況是,該r個數(shù)據(jù)服務器完全分布在不同的機架上。步驟130,向各寫入成功的數(shù)據(jù)服務器發(fā)送第一反饋信息。由于可以成功接收客戶端的寫入請求,并將其中的待寫數(shù)據(jù)進行備份,則表示這m個數(shù)據(jù)服務器是可用的。那么客戶端可以向該m個數(shù)據(jù)服務器發(fā)送第一反饋消息。該第一反饋消息可以如ok消息,該ok消息告訴數(shù)據(jù)服務器可以將自身的狀態(tài)設置為可升級狀態(tài)。當然,實際中數(shù)據(jù)服務器如何根據(jù)該第一反饋消息設置自身的狀態(tài)為可升級狀態(tài),本申請在實施例二中進行詳細描述。步驟140,向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息。其中,所述第一反饋信息或第二反饋信息供所述數(shù)據(jù)服務器確定自身的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài);所述數(shù)據(jù)服務器的狀態(tài)供升級控制服務器以輪轉(zhuǎn)的方式通知所述數(shù)據(jù)服務器進行升級操作。如果m≤n,由于這m個數(shù)據(jù)服務器是可用的,那么客戶端可以向該m個數(shù)據(jù)服務器發(fā)送第二反饋消息。該第二反饋消息可以如hold心跳消息,該hold消息告訴數(shù)據(jù)服務器可以將自身的狀態(tài)設置為不可升級狀態(tài)。當然,實際中數(shù)據(jù)服務器如何根據(jù)該第二反饋消息設置自身的狀態(tài)為不可升級狀態(tài),本申請在實施例二中進行詳細描述。需要說明的是,對于m<n的情況,客戶端重新向新的數(shù)據(jù)服務器發(fā)送寫入請求,直到保證m至少等于n。對于分布式存儲系統(tǒng)中的各個未升級的數(shù)據(jù)服務來說,當其接收到第一反饋信息或第二反饋信息后,則可以根據(jù)第一反饋信息或第二反饋信息確定自身是處于可升級狀態(tài)還是處于不可升級狀態(tài)。其中可升級狀態(tài)比如ok,不可升級狀態(tài)比如hold。比如,如果某個數(shù)據(jù)服務器收到了第二反饋信息,則該數(shù)據(jù)服務器則可將自身的狀態(tài)設置為不可升級狀態(tài)。如果某個數(shù)據(jù)服務器收到的了第一反饋信息,則可將自身的狀態(tài)設置為可升級狀態(tài)。當然,在實際應用中,由于上層服務不停止,而數(shù)據(jù)服務器又在不斷升 級,所以上述r個數(shù)據(jù)服務器中也可能存在升級完畢的數(shù)據(jù)服務器。那么對于已升級的數(shù)據(jù)服務器,其收到的任何上述反饋信息,不會再做進一步處理,其狀態(tài)保持為已升級狀態(tài)。對于數(shù)據(jù)服務器如何根據(jù)接收到第一反饋信息或第二反饋信息確定自身的狀態(tài)的具體過程,本申請在實施例二中進行詳細描述。進一步的,各個數(shù)據(jù)服務器的狀態(tài)可以由升級控制服務器以輪轉(zhuǎn)的方式通知所述數(shù)據(jù)服務器進行升級操作。對于升級控制服務器如何以輪轉(zhuǎn)的方式通知所述數(shù)據(jù)服務器進行升級操作的具體過程,本申請在實施例三中描述。在本申請另一優(yōu)選的實施例中,步驟140,包括子步驟141-144:子步驟141,如果所述寫入成功的個數(shù)等于指定個數(shù),則向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息。如前述客戶端a對待寫數(shù)據(jù)a1,第一次發(fā)送到了r個數(shù)據(jù)服務器,那么如果監(jiān)控到寫入成功響應的個數(shù)m=n,則可以直接向該m個寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息。子步驟142,如果所述寫入成功的小于指定個數(shù),則針對所述待寫數(shù)據(jù)向所述多個數(shù)據(jù)服務器之外的至少一個數(shù)據(jù)服務器發(fā)送寫入請求。子步驟143,接收所述至少一個數(shù)據(jù)服務器返回的響應,并結(jié)合已寫入成功的個數(shù)判斷當前寫入成功的個數(shù)是否等于指定個數(shù)。如果當前寫入成功的個數(shù)等于指定個數(shù),則進入子步驟144;果當前寫入成功的個數(shù)小于指定個數(shù),則進入子步驟142;子步驟144,如果當前寫入成功的個數(shù)等于指定個數(shù),則向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息。對于子步驟142-144如前述客戶端a對待寫數(shù)據(jù)a1,第一次發(fā)送到了r個數(shù)據(jù)服務器,那么如果監(jiān)控到響應成功的個數(shù)m<n,則再次至少向n-m個數(shù)據(jù)服務器發(fā)送寫入請求。再接收該n-m個數(shù)據(jù)服務器的響應,如果該n-m個數(shù)據(jù)服務器中返回寫入成功響應的個數(shù)加上前面r各數(shù)據(jù)服務器的寫入成功響應的個數(shù)得到的m,如果此時m=n,則向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息。此時m的值變化,但是如果此時還是m<n,則再 次至少向n-m個數(shù)據(jù)服務器發(fā)送寫入請求,如此類推,直至m=n,然后向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息。進一步的,比如r=10,n=5,客戶端a對待寫數(shù)據(jù)a1,第一次發(fā)送到了10個數(shù)據(jù)服務器,那么如果監(jiān)控到寫入成功響應的個數(shù)m=3,那么再次至少向5-3=2個數(shù)據(jù)服務器次發(fā)送寫入請求,繼續(xù)監(jiān)控該2個數(shù)據(jù)服務器的寫入成功響應的個數(shù),發(fā)現(xiàn)只收到1個寫入成功響應,則加上之前記錄的3,得到m=4。那么再次至少向5-4=1個數(shù)據(jù)服務器次發(fā)送寫入請求。按上述方式繼續(xù)監(jiān)控和判斷,當m=n=5時,然后向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息。當然,實際應用中,當m<n,在上述過程中,可以對每次發(fā)送寫入請求后,寫入成功的數(shù)據(jù)服務器直接發(fā)送第二反饋消息,不用全部等到m=n后再一起發(fā)送,當然,實際應用中,由于是周期性的檢查數(shù)據(jù)服務器的響應,那么如果在指定周期t,比如3*t的情況下,還判斷m<n,則至少向n-m個數(shù)據(jù)服務器再次發(fā)送寫入請求。每次循環(huán)中,對m和n的判斷均如此。一般情況下,幾次循環(huán)即可確定m=n,響應時間總的來說也很短,不會太影響客戶端的響應時延,用戶對上述情況的響應時延感覺也比等待重啟的情況低很多。如此,可以在保證客戶端的待備份數(shù)據(jù)在多個數(shù)據(jù)庫中備份成功,同時不影響上傳服務的正常使用。在本申請另一優(yōu)選的實施例中,在步驟140之后,還包括步驟150:步驟150,當出現(xiàn)新的待寫數(shù)據(jù),以包括之前寫入成功的數(shù)據(jù)服務器的多個數(shù)據(jù)服務器為對象,進入步驟120。可以理解,對于m=n的情況,由于客戶端向各寫入成功的數(shù)據(jù)服務器返回了hold心跳信息,那么這些數(shù)據(jù)服務器設置自身為不可升級狀態(tài),如hold狀態(tài)。為了更方便的清除該客戶端對這些數(shù)據(jù)服務器的限定,本申請實施例則在客戶端后續(xù)對新的待寫數(shù)據(jù)發(fā)送寫入請求時,繼續(xù)向之前的r個數(shù)據(jù)服務器發(fā)送。比如客戶端a的待寫數(shù)據(jù)a1,之前向數(shù)據(jù)服務器u1、u2……u10這 10個數(shù)據(jù)服務器發(fā)送了寫入請求,然后判斷m=n,則對于客戶端a的待寫數(shù)據(jù)a2,則可以繼續(xù)向u1、u2……u10這10個數(shù)據(jù)服務器發(fā)送了寫入請求,繼續(xù)步驟120的判斷??梢岳斫獾氖牵瑢τ谧硬襟E142的情況,則該r個數(shù)據(jù)服務器包括寫入成功的m個,然后剩余r-m個數(shù)據(jù)服務器則從寫入失敗的各數(shù)據(jù)服務器中選擇。比如r=10,n=3,對于客戶端a的待寫數(shù)據(jù)a1,第一次向u1、u2……u10這10個數(shù)據(jù)服務器發(fā)送了寫入請求,只有u1、u2寫入成功,然后第二次向u11、u12發(fā)送了寫入請求,u11寫入成功;那么對于客戶端的待寫數(shù)據(jù)a2,則可以選擇u1、u2、u11、u4、u5……u10這10個數(shù)據(jù)服務器,向這10個數(shù)據(jù)服務器發(fā)送寫入請求,當然也可以選擇包括u1、u2、u11和另外的數(shù)據(jù)服務器組成10個數(shù)據(jù)服務器。那么當,客戶端a的待寫數(shù)據(jù)a2寫入成功的個數(shù)m>n時,可以向各寫入成功的數(shù)據(jù)服務器發(fā)送ok消息,數(shù)據(jù)服務器則可以根據(jù)該ok消息判斷是否將自身的狀態(tài)修改為可升級狀態(tài)。如此,可以通過一客戶端在m<n的情況下,再次向與上次相同的r個數(shù)據(jù)服務器寫入待寫數(shù)據(jù),以主動更新數(shù)據(jù)服務器的狀態(tài),可以降低數(shù)據(jù)服務器處于不可升級狀態(tài)的時間。在本申請另一優(yōu)選的實施例中,所述第一反饋信息和第二反饋信息包括客戶端標識。比如對于客戶端a,在向服務器發(fā)送第一反饋信息或第二反饋信息時,該第一反饋信息、第二反饋信息中都包括客戶端標識“客戶端a”。則所述第一反饋信息或第二反饋信息供所述數(shù)據(jù)服務器確定自身的狀態(tài)包括:所述第二反饋信息供所述數(shù)據(jù)服務器在接收到第二反饋信息后,將第二反饋信息中的客戶端標識寫入不可升級列表并標記自身的狀態(tài)為不可升級狀態(tài);在本申請實施例中,在數(shù)據(jù)服務器側(cè)設置了不可升級列表。以客戶端a為例,那么在數(shù)據(jù)服務器接收到客戶端a的第二反饋信息后,則將其自身的 狀態(tài)設置為不可升級狀態(tài),并將該客戶端a寫入不可升級列表。所述第一反饋信息供所述數(shù)據(jù)服務器在接收到第一反饋信息后,從不可升級列表中刪除第一反饋信息中的客戶端標識,并在確定不可升級列表為空后標記自身的狀態(tài)為可升級狀態(tài)。在本申請實施例中,由于客戶端a在向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息的步驟之后,出現(xiàn)新的待寫數(shù)據(jù),以包括之前寫入成功的數(shù)據(jù)服務器的多個數(shù)據(jù)服務器為對象。那么對于接收到客戶端a發(fā)送的第二反饋消息的數(shù)據(jù)服務器,其后續(xù)還會接收該客戶端a發(fā)送的消息。那么當數(shù)據(jù)服務器繼續(xù)接收到客戶端a的消息為第一反饋消息,則可以從不可升級列表中刪除客戶端a的記錄。當然,實際應用中,數(shù)據(jù)服務器接收到某個客戶端的第一反饋消息,可能不可升級列表中沒有記錄相應客戶端標識,則不用執(zhí)行刪除過程。然后,在數(shù)據(jù)服務器確定不可升級列表為空時,將自身的狀態(tài)設置為可升級狀態(tài)。當然,在本申請實施例中,客戶端還可以接收數(shù)據(jù)服務器發(fā)送的退出升級準備狀態(tài)的退出通知,并根據(jù)該退出通知退出升級準備狀態(tài)。然后客戶端則按照正常請求發(fā)送邏輯向數(shù)據(jù)服務器發(fā)送寫入請求。在本申請實施例中,從客戶端側(cè)介紹了本申請的一種分布式存儲系統(tǒng)升級方法,讓各個客戶端對于同一個待寫數(shù)據(jù),同時向多個數(shù)據(jù)服務器發(fā)送該針對該待寫數(shù)據(jù)的寫入請求,然后分析在多少個數(shù)據(jù)服務器中寫入成功,判斷寫入成功的個數(shù)是否大于指定個數(shù),根據(jù)該判斷結(jié)果向各寫入成功的數(shù)據(jù)服務器發(fā)送第一反饋信息或者第二反饋信息。其中所述第一反饋信息供所述數(shù)據(jù)服務器在接收到第一反饋信息后,從不可升級列表中刪除第一反饋信息中的客戶端標識,并在確定不可升級列表為空后標記自身的狀態(tài)為可升級狀態(tài)。。從而本申請實施例中,在升級控制服務器在以輪轉(zhuǎn)的方式控制各數(shù)據(jù)服務器進行升級時,由于由客戶端控制數(shù)據(jù)服務器的狀態(tài),并且保證任一客戶端的待寫數(shù)據(jù)最少寫入指定個數(shù)的數(shù)據(jù)服務器中以進行備份,因此在不用停止上層服務的情況下,既可以保證分布式存儲系統(tǒng)對客戶 端的響應時間較低,也提高了數(shù)據(jù)的可靠性,大大降低了用戶數(shù)據(jù)丟失的風險。實施例二本申請實施例應用于分布式存儲服務器的數(shù)據(jù)服務器側(cè)。參照圖2,示出了本申請的一種分布式存儲系統(tǒng)升級方法實施例的步驟流程圖,具體可以包括如下步驟:步驟210,接收客戶端發(fā)送的第一反饋信息或者第二反饋信息;所述第一反饋信息或第二反饋信息根據(jù)客戶端對同一份待寫數(shù)據(jù)向多個數(shù)據(jù)服務器發(fā)送寫入請求后,寫入成功的個數(shù)與指定個數(shù)的比較結(jié)果獲得。結(jié)合實施例一客戶端側(cè)的描述,客戶端針對待寫數(shù)據(jù)a1,向r個數(shù)據(jù)服務器發(fā)送寫入請求后,當寫入成功的個數(shù)m大于指定個數(shù)n,則會向該m個數(shù)據(jù)服務器發(fā)送第一反饋消息;當m等于n,則會向該m個數(shù)據(jù)服務器發(fā)送第二反饋消息。當m<n,則針對所述待寫數(shù)據(jù)a1向所述多個數(shù)據(jù)服務器之外的至少一個數(shù)據(jù)服務器發(fā)送寫入請求,然后接收所述至少一個數(shù)據(jù)服務器返回的響應,并結(jié)合已寫入成功的個數(shù)判斷當前全部的寫入成功的個數(shù)m是否等于指定個數(shù)n,如果m=n,則向該m個數(shù)據(jù)服務器發(fā)送第二反饋信息。當然,對于客戶端返回第一反饋信息和第二反饋信息的具體過程可以參照實施例一的描述,在此不再贅敘。相對的,對于分布式存儲系統(tǒng)的各個數(shù)據(jù)服務器,其可能接收到各個客戶端返回的第一反饋信息,如ok消息。也可能接收到各個客戶端返回的第二反饋消息,如hold消息。優(yōu)選地,在步驟210之前,還包括:步驟201,接收由升級控制服務器發(fā)送的第一升級通知。步驟202,根據(jù)所述第一升級通知進入升級準備狀態(tài),并在接收到客戶端的訪問請求后發(fā)送第二升級通知至所述客戶端,以使所述客戶端進入升級準備狀態(tài)。在本申請實施例中分布式存儲系統(tǒng)的升級控制服務器首先向各數(shù)據(jù)服務器發(fā)送第一升級通知,相應的各數(shù)據(jù)服務器則接收該第一升級通知,然后 根據(jù)該第一升級通知進入升級準備狀態(tài)。然后,對于訪問該進入升級準備狀態(tài)的數(shù)據(jù)服務器,接收到某個客戶端的訪問請求后,則返回第二升級通知至該客戶端。該客戶端則根據(jù)該第二升級通知進入升級準備狀態(tài)。當數(shù)據(jù)服務器進入升級準備狀態(tài),則可以進入本申請實施例的步驟210、220等由數(shù)據(jù)服務器側(cè)執(zhí)行的步驟。步驟220,在自身處于未升級的情況下,根據(jù)所述第一反饋信息或者第二反饋信息,確定數(shù)據(jù)服務器自身的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài)。其中,所述狀態(tài)供升級控制服務器以輪轉(zhuǎn)的方式選擇通知所述數(shù)據(jù)服務器進行升級操作。在實際應用中,除了所有數(shù)據(jù)服務器剛進入升級準備狀態(tài),各個數(shù)據(jù)服務器處于未升級的情況。而隨著某些數(shù)據(jù)服務器不斷完成升級過程,這些數(shù)據(jù)服務器則會處于已升級狀態(tài),比如已成功升級的數(shù)據(jù)服務器設置自身的狀態(tài)為done,此時,已成功升級的數(shù)據(jù)服務器也會接收到第一反饋信息或者第二反饋信息,但是其不會再對第一反饋信息或者第二反饋信息進行處理,其狀態(tài)保持為已升級狀態(tài)。而只有處于未升級狀態(tài)的數(shù)據(jù)服務器才根據(jù)所述第一反饋信息或者第二反饋信息,確定數(shù)據(jù)服務器自身的狀態(tài)。可以理解,對于分布式集群中的各個未升級的數(shù)據(jù)服務來說,當其接收到第一反饋信息或第二反饋信息后,則可以根據(jù)第一反饋信息或第二反饋信息確定自身是處于可升級狀態(tài)還是處于不可升級狀態(tài)。其中可升級狀態(tài)比如ok,不可升級狀態(tài)比如hold。比如,如果某個數(shù)據(jù)服務器收到了第二反饋信息,則該數(shù)據(jù)服務器則可將自身的狀態(tài)設置為不可升級狀態(tài)。如果某個數(shù)據(jù)服務器收到的了第一反饋信息,則可將自身的狀態(tài)設置為可升級狀態(tài)。在本申請另一優(yōu)選的實施例中,第一反饋信息和第二反饋信息包括客戶端標識。那么基于實施例一的步驟150,則優(yōu)選地,步驟220,包括子步驟221-222:子步驟221,當接收到第二反饋信息,則將所述第二反饋信息中的客戶端標識寫入不可升級列表,并標記自身的狀態(tài)為不可升級狀態(tài);在本申請實施例中,在各個數(shù)據(jù)服務中預先設置了不可升級列表,用于記錄發(fā)送了hold消息的客戶端標識等信息。比如對于客戶端a,其對于待寫數(shù)據(jù)a1,向多個數(shù)據(jù)服務器發(fā)送寫入請求,其中數(shù)據(jù)服務器u1、u2、u3寫入成功,且m=n時,其會向相應的m個數(shù)據(jù)服務器發(fā)送hold消息。該hodl消息包括了hold指令、客戶端標識。那么這m個數(shù)據(jù)服務器接收到hold消息,則在不可升級列表中記錄客戶端a。當然,還可以相應記錄當前時間。比如客戶端b對其待寫數(shù)據(jù)b1,向多個數(shù)據(jù)服務器發(fā)送寫入請求,該多個數(shù)據(jù)服務器中也包括了數(shù)據(jù)服務器u1,且m=n。那么數(shù)據(jù)服務器u1的不可升級列表中還記錄客戶端b。當然也可記錄當前時間。數(shù)據(jù)服務器u1的不可升級列表記錄示例如表一:客戶端標識時間客戶端a2015.10.01,10:00:00:00客戶端b2015.10.01,12:01:00:00表一當然,對于同一客戶端再次發(fā)送的hold消息,則不可升級列表中可以只記錄一條該對應該客戶端的客戶端標識,也可以記錄多條對應客戶端的客戶端標識。在實際應用中,優(yōu)選的,對于同一客戶端多吃發(fā)送的hold消息,可以只記錄一條客戶端標識,然后在時間字段,記錄各次的時間。在接收到hold消息后,還將數(shù)據(jù)服務器自身的狀態(tài)修改為hold狀態(tài),表示該數(shù)據(jù)服務不可升級。優(yōu)選地,在子步驟221之后,還包括子步驟b21:子步驟b21,對于不可升級列表中的客戶端標識,判斷是否在指定個數(shù)的時間周期內(nèi)未接收到相應客戶端的第二反饋消息,如果未在指定個數(shù)的時間周期內(nèi)未接收到相應客戶端的第二反饋消息,則將所述客戶端標識從不可 升級列表中刪除。本申請實施例可以預先設置一個時間周期t1,對于不可升級列表中的客戶端標識所對應的客戶端,如果數(shù)據(jù)服務器在指定未接收到該客戶端再次發(fā)送的hold消息,則將不可升級列表中該客戶端標識記錄刪除。比如前述數(shù)據(jù)服務器u1的表一,如果在3*t1的時間內(nèi),未接收到客戶端a的hold消息,則將表一中客戶端a的記錄刪除。該步驟可以避免數(shù)據(jù)服務器處于不可升級狀態(tài)之后,一直處于不可升級狀態(tài)。子步驟222,接收到第一反饋信息,從不可升級列表中刪除第一反饋信息中的客戶端標識,并在確定不可升級列表為空后標記自身的狀態(tài)為可升級狀態(tài)。比如前述數(shù)據(jù)服務器u1,其接受到客戶端a再次發(fā)送的ok消息,則從表一中將客戶端a的記錄刪除。當數(shù)據(jù)服務器將表一的所有記錄都刪除后,表一為空時,則將自身的狀態(tài)設置為可升級狀態(tài),在本申請另一優(yōu)選的實施例中,子步驟222,包括子步驟b11-b14:子步驟b11,判斷所述不可升級列表是否有所述第一反饋信息中的客戶端標識;如果所述不可升級列表有所述第一反饋信息中的客戶端標識,則進入子步驟b12。子步驟b12,將所述客戶端標識從不可升級列表中刪除。由于一個數(shù)據(jù)服務器可能被分配給不同的客戶端使用,因此,可能接收到不同客戶端的第一反饋信息,那么對于接收到的某個客戶端的第一反饋信息,則判斷所述不可升級列表是否有所述第一反饋信息的客戶端標識,所述不可升級列表有所述第一反饋信息的客戶端標識,則將所述客戶端標識從不可升級列表中刪除;所述不可升級列表沒有所述第一反饋信息的客戶端標識,則可以不進行后續(xù)操作。比如對于前述數(shù)據(jù)服務器u1,如果接收到客戶端a再次發(fā)送的ok消息,該ok消息中包括客戶端標識,則可以利用客戶端標識與表一的客戶端標識進行匹配,發(fā)現(xiàn)存在客戶端a,則清除客戶端a的記錄。如果接收到客戶端c發(fā) 送的ok消息,發(fā)現(xiàn)表一中沒有記錄,則不進行任何操作。上述步驟方便數(shù)據(jù)服務器對自身的升級狀態(tài)進行管理,邏輯簡單。子步驟b13,判斷不可升級列表是否為空;如果所述不可升級列表為空時,則進入子步驟b14。如果所述不可升級列表不為空,則保持自身的狀態(tài)為不可升級狀態(tài)。子步驟b14,標記自身的狀態(tài)為可升級狀態(tài)。如果所述不可升級列表不為空時,則保持自身的不可升級狀態(tài)。如前述例子,對于數(shù)據(jù)服務器u1,先接收到客戶端a發(fā)送的ok消息,清除了客戶端a的記錄,判斷表一還是不為空,則繼續(xù)保持hold狀態(tài)。如果再接收到客戶端b的ok消息,則在子步驟221中將表一中的客戶端b的記錄刪除,此時判斷表一為空,則數(shù)據(jù)服務器u1修改自身的hodl狀態(tài)為ok狀態(tài),表示數(shù)據(jù)服務器u1可以升級。然后,升級控制服務器可以根據(jù)各數(shù)據(jù)服務器的狀態(tài)以輪轉(zhuǎn)的方式選擇通知所述數(shù)據(jù)服務器進行升級操作。當然升級控制服務器具體控制各數(shù)據(jù)服務升級的過程可以參照實施例三的描述。當然,在本申請實施例中,數(shù)據(jù)服務器還可以升級控制服務器發(fā)送的退出升級準備狀態(tài)的退出通知,并根據(jù)該退出通知退出升級準備狀態(tài),同時根據(jù)該退出通知向客戶端發(fā)送退出通知,使客戶端退出升級準備狀態(tài)。然后數(shù)據(jù)服務器則按照正常處理邏輯對客戶端的寫入請求進行處理。在本申請實施例中,從數(shù)據(jù)服務器側(cè)介紹了本申請的一種分布式存儲系統(tǒng)升級方法,對于數(shù)據(jù)服務器,根據(jù)接收到的客戶端發(fā)送的第一反饋信息或者第二反饋信息,確定自身是處于可升級狀態(tài)還是處于不可升級狀態(tài)。其中所述第一反饋信息或第二反饋信息根據(jù)客戶端對同一份待寫數(shù)據(jù)向多個數(shù)據(jù)服務器發(fā)送寫入請求后,寫入成功的個數(shù)與指定個數(shù)的比較結(jié)果獲得;所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài);所述狀態(tài)供升級控制服務器以輪轉(zhuǎn)的方式選擇通知所述數(shù)據(jù)服務器進行升級操作。從而是由客戶端控制數(shù)據(jù)服務器的狀態(tài),保證任一客戶端的待寫數(shù)據(jù)最少寫入指定個數(shù)的數(shù)據(jù)服務器中以進行備份,在升級控制服務器以輪轉(zhuǎn)的方式控制各數(shù)據(jù)服務器進 行升級時,因此在不用停止上層服務的情況下,既可以保證分布式存儲系統(tǒng)對客戶端的響應時間較低,也提高了數(shù)據(jù)的可靠性,大大降低了用戶數(shù)據(jù)丟失的風險。實施例三參照圖3,示出了本申請的一種分布式存儲系統(tǒng)升級方法實施例的步驟流程圖,具體可以包括如下步驟:步驟310,獲取各數(shù)據(jù)服務器的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài),每個數(shù)據(jù)服務器有一個狀態(tài);所述數(shù)據(jù)服務器的狀態(tài)根據(jù)所述第一反饋信息或者第二反饋信息確定;所述第一反饋信息或第二反饋信息根據(jù)客戶端對同一份待寫數(shù)據(jù)向多個數(shù)據(jù)服務器發(fā)送寫入請求后,寫入成功的個數(shù)與指定個數(shù)的比較結(jié)果獲得。結(jié)合實施例一和實施例二的描述,分布式存儲系統(tǒng)中各個數(shù)據(jù)服務器可以根據(jù)客戶端反饋的第一反饋消息和/或第二反饋消息,確定其狀態(tài),該狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài)。由于每個數(shù)據(jù)服務器同時只能有一個狀態(tài)。比如某個數(shù)據(jù)服務器如果處于可升級狀態(tài),則其不可能有其他狀態(tài)。其他情況類似,在此不再贅敘。那么,本申請實施例的升級控制服務器則可以獲取各個數(shù)據(jù)服務的狀態(tài)。升級控制服務器獲取數(shù)據(jù)服務的狀態(tài)的具體獲取方式可以有多種,本申請實施例不對其加以限制。步驟320,以輪轉(zhuǎn)的方式通知至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器進行升級操作;所述數(shù)據(jù)服務器根據(jù)所述通知進行升級操作。在本申請實施例中,由于各個數(shù)據(jù)服務器根據(jù)客戶端的反饋信息設定了自身狀態(tài),那么升級控制服務器可以采用輪轉(zhuǎn)的方式控制處于可升級狀態(tài)的數(shù)據(jù)服務器進行升級操作。比如,每次選擇一批可升級的數(shù)據(jù)服務器,通知這批數(shù)據(jù)服務器進行升級操作。該批數(shù)據(jù)服務器收到升級通知后,則可以重啟升級。在本申請另一優(yōu)選的實施例中,步驟320包括子步驟321-322:子步驟321,每次選擇至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器,通知所述至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器執(zhí)行升級操作;比如處于可升級狀態(tài)的數(shù)據(jù)服務器有u1、u2、u3,u10、u11、……u20等,則升級控制服務器每次可以從中選擇k個數(shù)據(jù)服務器,通知其進行升級操作,比如選擇3個。其中k為大于0的整數(shù)。當然,k可以根據(jù)實際需求設置,本申請不對其加以限制。子步驟322,監(jiān)控所述至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器是否全部執(zhí)行完升級操作;如果所述至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器全部執(zhí)行完升級操作,則進入子步驟321;比如升級控制服務器通知了前述數(shù)據(jù)服務器u1、u2、u3進行升級操作,那么數(shù)據(jù)服務器u1、u2、u3則重啟升級。當數(shù)據(jù)服務器升級成功之后,則可以修改自身的狀態(tài)為已升級狀態(tài),比如done。那么升級控制服務器則可以監(jiān)控這些數(shù)據(jù)服務器的狀態(tài)是否為done,如果未done,則升級成功。當然,實際應用中,可能該批數(shù)據(jù)服務器升級過程中,某個或者某幾個可能升級失敗,升級控制服務器則監(jiān)控該數(shù)據(jù)服務器升級成功或者失敗。在實際應用中,升級失敗可以通過如機器重啟失敗,重啟后系統(tǒng)版本未變更等情況確定。需要說明的是,上述執(zhí)行完升級操作包括升級成功和升級失敗。全部執(zhí)行完升級操作包括:所有數(shù)據(jù)服務器全部升級成功;如果部分數(shù)據(jù)服務器升級成功,則剩余的數(shù)據(jù)服務器升級失敗。如果u1、u2、u3的狀態(tài)全部為done,則進入下一次選擇至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器,通知所述至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器執(zhí)行升級操作的步驟。當升級控制服務器監(jiān)控到其通知升級的數(shù)據(jù)服務器全部執(zhí)行完升級操作,則可以從處于可升級狀態(tài)的數(shù)據(jù)服務器中輪轉(zhuǎn)選擇下一批升級的數(shù)據(jù)服務器。如此,可以避免輪轉(zhuǎn)的頻率過快,降低數(shù)據(jù)丟失的風險。在本申請另一優(yōu)選的實施例中,在數(shù)據(jù)服務器執(zhí)行升級操作后,還包括:子步驟323,如果監(jiān)控到任一數(shù)據(jù)服務器的升級操作的結(jié)果為升級失敗,則將所述數(shù)據(jù)服務器加入升級黑名單,暫停對該數(shù)據(jù)服務器的升級。如果某個數(shù)據(jù)服務器升級失敗,則升級控制服務器將該數(shù)據(jù)服務器加入升級黑名單,暫停對該數(shù)據(jù)服務器的升級。使這些數(shù)據(jù)服務器等待下線或者人工修復。優(yōu)選的,本申請實施例的多個數(shù)據(jù)服務器可分布于至少兩個機架上,當然實際應用中,分布式存儲系統(tǒng)的各個數(shù)據(jù)服務器分布在多個機架上,一個機架為一個數(shù)據(jù)服務器子集群。進一步的,則步驟320,包括子步驟c11:子步驟c11,每次選擇處于可升級狀態(tài)的數(shù)據(jù)服務器最多的機架,通知所述機架中的數(shù)據(jù)服務器進行升級操作;所述機架中的各數(shù)據(jù)服務器根據(jù)所述通知檢查自身的狀態(tài),如果處于可升級狀態(tài),則重啟升級,如果處于不可升級狀態(tài)或者升級完畢狀態(tài),則拒絕重啟升級。在本申請實施例中,由于數(shù)據(jù)服務器以機架的形式放置,一個機架放置了一批數(shù)據(jù)服務器。而對于大量的客戶端來說,其可能訪問不同機架的不同的數(shù)據(jù)服務器,從而使各個機架都可能存在可升級狀態(tài)的數(shù)據(jù)服務器,也可能存在不可升級狀態(tài)的數(shù)據(jù)服務器,也可能存在升級完畢的數(shù)據(jù)服務器。而為了方便升級控制服務器發(fā)送升級的通知,本申請實施例以機架為單位發(fā)送升級通知,比如一機架的ip段為200.200.200.***,本申請實施例的升級控制服務器至需要生成一條針對200.200.200.***的通知,廣播到該機架中,該機架的各個數(shù)據(jù)服務器即可接收到該通知。那么對于該機架中的數(shù)據(jù)服務器,接收到上述升級的通知后,則先判斷自身的狀態(tài)是否為ok,如果是ok,則重啟升級;如果不是ok,而是hold或者done,則拒絕重啟升級。本申請實施例中,為了更快的完成升級,則選擇狀態(tài)為ok的數(shù)據(jù)服務器最多的機架,向該機架發(fā)送升級的通知。比如處于可升級狀態(tài)的數(shù)據(jù)服務器有u1、u2、u3,u10、u11、…… u20等,則每次可以從中選擇k個數(shù)據(jù)服務器,通知其進行升級操作,比如選擇3個。優(yōu)選地,在子步驟c11之后,還包括子步驟c12:子步驟c12,監(jiān)控所述機架中的數(shù)據(jù)服務器是否全部執(zhí)行完升級操作;如果所述機架中的數(shù)據(jù)服務器全部執(zhí)行完升級操作,則進入子步驟c11。那么,當監(jiān)控到該機架中處于可升級狀態(tài)的數(shù)據(jù)服務器的升級操作全部執(zhí)行完畢之后,則可以選擇下一個機架,向下一個機架的數(shù)據(jù)服務器發(fā)送升級的通知。如此循環(huán),直到所有的數(shù)據(jù)服務器升級完畢。通過上述過程,當升級控制服務器監(jiān)控到除了升級失敗的數(shù)據(jù)服務器之外,所有數(shù)據(jù)服務器升級完畢之后,則可以通知各個數(shù)據(jù)服務器退出升級準備狀態(tài),返回正常的處理邏輯,各個數(shù)據(jù)服務器則通知訪問該數(shù)據(jù)服務器的客戶端退出升級準備狀態(tài),客戶端返回正常的處理邏輯,不再執(zhí)行步驟310、320。在本申請實施例中,從升級控制服務器側(cè)介紹了本申請的一種分布式存儲系統(tǒng)升級方法,升級控制服務器在以輪轉(zhuǎn)的方式控制可升級狀態(tài)的數(shù)據(jù)服務器進行升級時,由于由客戶端控制數(shù)據(jù)服務器的狀態(tài),并且保證任一客戶端的待寫數(shù)據(jù)最少寫入指定個數(shù)的數(shù)據(jù)服務器中以進行備份,因此在不用停止上層服務的情況下,既可以保證分布式存儲系統(tǒng)對客戶端的響應時間較低,也提高了數(shù)據(jù)的可靠性,大大降低了用戶數(shù)據(jù)丟失的風險;并且可容忍升級過程中非預期的機器異常,保證服務不受影響。再者升級時間快,避免大量的數(shù)據(jù)遷移。實施例四參照圖4,示出了本申請的一種分布式存儲系統(tǒng)升級方法實施例的步驟流程圖,具體可以包括如下步驟:步驟410,由客戶端對同一份待寫數(shù)據(jù),向多個數(shù)據(jù)服務器發(fā)送寫入請求。步驟412,由客戶端接收各數(shù)據(jù)服務器返回的響應,并根據(jù)所述響應判斷寫入成功的個數(shù)是否大于指定個數(shù);如果寫入成功的個數(shù)大于指定個數(shù), 則進入步驟414;如果寫入成功的個數(shù)不大于指定個數(shù),則進入步驟416。步驟414,由客戶端向各寫入成功的數(shù)據(jù)服務器發(fā)送第一反饋信息。步驟416,由客戶端向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息;在本申請另一優(yōu)選的實施例中,所述第一反饋信息和第二反饋信息包括客戶端標識。在向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息的步驟之后,還包括:步驟417,當出現(xiàn)新的待寫數(shù)據(jù),以包括之前寫入成功的數(shù)據(jù)服務器的多個數(shù)據(jù)服務器為對象,進入對同一份待寫數(shù)據(jù),向多個數(shù)據(jù)服務器發(fā)送寫入請求的步驟。步驟418,由數(shù)據(jù)服務器接收客戶端發(fā)送的第一反饋信息或者第二反饋信息;步驟420,由數(shù)據(jù)服務器在自身處于未升級的情況下,根據(jù)所述第一反饋信息或者第二反饋信息,確定數(shù)據(jù)服務器自身的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài);優(yōu)選的在步驟417的基礎上,所述步驟420包括子步驟d11-d16:子步驟d11,當接收到第二反饋信息,則將所述第二反饋信息中的客戶端標識寫入不可升級列表,并標記自身的狀態(tài)為不可升級狀態(tài);子步驟d12,對于不可升級列表中的客戶端標識,判斷是否在指定個數(shù)的時間周期內(nèi)未接收到相應客戶端的第二反饋消息;如果未在指定個數(shù)的時間周期內(nèi)未接收到相應客戶端的第二反饋消息,則進入子步驟d13。如果在在指定個數(shù)的時間周期內(nèi)未接收到相應客戶端的第二反饋消息,則維持不可升級狀態(tài)。子步驟d13,將所述客戶端標識從不可升級列表中刪除。進入子步驟d15。子步驟d14,判斷所述不可升級列表是否有所述第一反饋信息中的客戶端標識;如果所述不可升級列表有所述第一反饋信息中的客戶端標識,則進入子步驟d13。如果所述不可升級列表沒有所述第一反饋信息中的客戶端標識,則進入子步驟d15子步驟d15,判斷不可升級列表是否為空;如果所述不可升級列表為空 時,則進入子步驟d16。子步驟d16,標記自身的狀態(tài)為可升級狀態(tài)。步驟422,由升級控制服務器獲取各數(shù)據(jù)服務器的狀態(tài);步驟424,由升級控制服務器以輪轉(zhuǎn)的方式通知至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器進行升級操作;步驟426,由數(shù)據(jù)服務器根據(jù)所述通知進行升級操作。當然本發(fā)明實施例的客戶端側(cè)的步驟的原理可以參照實施例一的描述、數(shù)據(jù)服務器側(cè)的步驟的原理可以參照實施例二的描述,升級控制服務器側(cè)的步驟的原理可以參照實施例三的描述。在此不再贅敘。在本申請實施例中,從客戶端、數(shù)據(jù)服務器和升級控制服務器三個方面介紹了本申請的一種分布式存儲系統(tǒng)升級方法。對于訪問該分布式存儲系統(tǒng)的客戶端,讓各個客戶端對于同一個待寫數(shù)據(jù)的寫入請求,同時向多個數(shù)據(jù)服務器發(fā)送該寫入請求,然后分析在多少個數(shù)據(jù)服務器中寫入成功,判斷寫入成功的個數(shù)是否大于指定個數(shù),根據(jù)該判斷結(jié)果向各寫入成功的數(shù)據(jù)服務器發(fā)送第一反饋信息或者第二反饋信息。對于數(shù)據(jù)服務器,根據(jù)接收到的第一反饋信息或者第二反饋信息,確定自身是處于可升級狀態(tài)還是處于不可升級狀態(tài)。對于升級控制服務器,則可以輪轉(zhuǎn)控制處于可升級狀態(tài)的數(shù)據(jù)服務器進行升級操作。通過上述過程,在升級控制服務器在以輪轉(zhuǎn)的方式控制可升級狀態(tài)的數(shù)據(jù)服務器進行升級時,由于由客戶端控制數(shù)據(jù)服務器的狀態(tài),并且保證任一客戶端的待寫數(shù)據(jù)最少寫入指定個數(shù)的數(shù)據(jù)服務器中以進行備份,因此在不用停止上層服務的情況下,既可以保證分布式存儲系統(tǒng)對客戶端的響應時間較低,也提高了數(shù)據(jù)的可靠性,大大降低了用戶數(shù)據(jù)丟失的風險;并且可容忍升級過程中非預期的機器異常,保證服務不受影響。實施例五參照圖5,示出了本申請的一種分布式存儲系統(tǒng)升級裝置實施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:請求發(fā)送模塊510,用于對同一份待寫數(shù)據(jù),向多個數(shù)據(jù)服務器發(fā)送寫 入請求。在本申請另一優(yōu)選的實施例中,在步驟510之前,還包括:第二升級通知接收模塊,用于在訪問一數(shù)據(jù)服務器時,接收由數(shù)據(jù)服務器發(fā)送的第二升級通知。第二升級準備模塊,用于根據(jù)所述第二升級通知進入升級準備狀態(tài)。判斷模塊520,用于接收各數(shù)據(jù)服務器返回的響應,并根據(jù)所述響應判斷寫入成功的個數(shù)是否大于指定個數(shù)。第一反饋模塊530,用于如果寫入成功的個數(shù)大于指定個數(shù),則向各寫入成功的數(shù)據(jù)服務器發(fā)送第一反饋信息。第二反饋模塊540,用于如果寫入成功的個數(shù)不大于指定個數(shù),則向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息;其中,所述第一反饋信息或第二反饋信息供所述數(shù)據(jù)服務器確定自身的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài);所述數(shù)據(jù)服務器的狀態(tài)供升級控制服務器以輪轉(zhuǎn)的方式通知所述數(shù)據(jù)服務器進行升級操作。在本申請另一優(yōu)選的實施例中,第二反饋模塊540,包括:第二反饋信息發(fā)送子模塊,用于如果所述寫入成功的個數(shù)等于指定個數(shù),則向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息。寫入請求發(fā)送子模塊,用于如果所述寫入成功的小于指定個數(shù),則針對所述待寫數(shù)據(jù)向所述多個數(shù)據(jù)服務器之外的至少一個數(shù)據(jù)服務器發(fā)送寫入請求。判斷子模塊,用于接收所述至少一個數(shù)據(jù)服務器返回的響應,并結(jié)合已寫入成功的個數(shù)判斷當前寫入成功的個數(shù)是否等于指定個數(shù);如果當前寫入成功的個數(shù)等于指定個數(shù),則進入第二反饋信息發(fā)送子模塊。在本申請另一優(yōu)選的實施例中,在第二反饋信息發(fā)送子模塊之后,還包括:新待寫數(shù)據(jù)發(fā)送子模塊,用于當出現(xiàn)新的待寫數(shù)據(jù),以包括之前寫入成功的數(shù)據(jù)服務器的多個數(shù)據(jù)服務器為對象,進入請求發(fā)送模塊。在本申請另一優(yōu)選的實施例中,所述第一反饋信息和第二反饋信息包括 客戶端標識,則所述第一反饋信息或第二反饋信息供所述數(shù)據(jù)服務器確定自身的狀態(tài)包括:所述第二反饋信息供所述數(shù)據(jù)服務器在接收到第二反饋信息后,將第二反饋信息中的客戶端標識寫入不可升級列表并標記自身的狀態(tài)為不可升級狀態(tài);所述第一反饋信息供所述數(shù)據(jù)服務器在接收到第一反饋信息后,從不可升級列表中刪除第一反饋信息中的客戶端標識,并在確定不可升級列表為空后標記自身的狀態(tài)為可升級狀態(tài)。實施例六參照圖6,示出了本申請的一種分布式存儲系統(tǒng)升級裝置實施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:反饋信息接收模塊610,用于接收客戶端發(fā)送的第一反饋信息或者第二反饋信息;所述第一反饋信息或第二反饋信息根據(jù)客戶端對同一份待寫數(shù)據(jù)向多個數(shù)據(jù)服務器發(fā)送寫入請求后,寫入成功的個數(shù)與指定個數(shù)的比較結(jié)果獲得。在本申請另一優(yōu)選的實施例中,在反饋信息接收模塊610之前,還包括:第一升級通知接收模塊,用于接收由升級控制服務器發(fā)送的第一升級通知。第一升級準備模塊,用于根據(jù)所述第一升級通知進入升級準備狀態(tài),并在接收到客戶端的訪問請求后發(fā)送第二升級通知至所述客戶端,以使所述客戶端進入升級準備狀態(tài)。狀態(tài)確定模塊620,用于在自身處于未升級的情況下,根據(jù)所述第一反饋信息或者第二反饋信息,確定數(shù)據(jù)服務器自身的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài);所述狀態(tài)供升級控制服務器以輪轉(zhuǎn)的方式選擇通知所述數(shù)據(jù)服務器進行升級操作。在本申請另一優(yōu)選的實施例中,狀態(tài)確定模塊620,包括:可升級狀態(tài)確定子模塊,用于當接收到第一反饋信息,從不可升級列表中刪除第一反饋信息中的客戶端標識,并在確定不可升級列表為空后標記自 身的狀態(tài)為可升級狀態(tài)。優(yōu)選地,可升級狀態(tài)確定子模塊,包括:客戶端標識判斷子模塊,用于判斷所述不可升級列表是否有所述第一反饋信息中的客戶端標識;如果所述不可升級列表有所述第一反饋信息中的客戶端標識,則進入第一刪除子模塊。第一刪除子模塊,用于將所述客戶端標識從不可升級列表中刪除。不可升級列表判斷子模塊,用于判斷不可升級列表是否為空;如果所述不可升級列表為空時,則進入可升級狀態(tài)標記子模塊。可升級狀態(tài)標記子模塊,用于標記自身的狀態(tài)為可升級狀態(tài)。不可升級狀態(tài)確定子模塊,用于當接收到第二反饋信息,則將所述第二反饋信息中的客戶端標識寫入不可升級列表,并標記自身的狀態(tài)為不可升級狀態(tài)。在本申請另一優(yōu)選的實施例中,在不可升級狀態(tài)確定子模塊之后,還包括:時間判斷子模塊,用于對于不可升級列表中的客戶端標識,判斷是否在指定個數(shù)的時間周期內(nèi)未接收到相應客戶端的第二反饋消息,如果未在指定個數(shù)的時間周期內(nèi)未接收到相應客戶端的第二反饋消息,則進入第二刪除子模塊;第二刪除子模塊,用于將所述客戶端標識從不可升級列表中刪除。實施例七參照圖7,示出了本申請的一種分布式存儲系統(tǒng)升級裝置實施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:狀態(tài)獲取模塊710,用于獲取各數(shù)據(jù)服務器的狀態(tài);所述狀態(tài)包括可升級狀態(tài)和不可升級狀態(tài),每個數(shù)據(jù)服務器有一個狀態(tài);所述數(shù)據(jù)服務器的狀態(tài)根據(jù)所述第一反饋信息或者第二反饋信息確定;所述第一反饋信息或第二反饋信息根據(jù)客戶端對同一份待寫數(shù)據(jù)向多個數(shù)據(jù)服務器發(fā)送寫入請求后,寫入成功的個數(shù)與指定個數(shù)的比較結(jié)果獲得。在本申請另一優(yōu)選的實施例中,在狀態(tài)獲取模塊710之前,還包括:升級通知發(fā)送模塊,用于向各數(shù)據(jù)服務器發(fā)送第一升級通知,使各數(shù)據(jù)服務器進入升級準備狀態(tài),并使各數(shù)據(jù)服務器在接收到客戶端的訪問請求后發(fā)送第二升級通知至所述客戶端,以使所述客戶端進入升級準備狀態(tài)。升級通知模塊720,用于以輪轉(zhuǎn)的方式通知至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器進行升級操作;所述數(shù)據(jù)服務器根據(jù)所述通知進行升級操作。在本申請另一優(yōu)選的實施例中,所述升級通知模塊包括:第一選擇子模塊,用于每次選擇至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器,通知所述至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器執(zhí)行升級操作;第一監(jiān)控子模塊,用于監(jiān)控所述至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器是否全部執(zhí)行完升級操作;如果所述至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器全部執(zhí)行完升級操作,則進入第一選擇子模塊。在本申請另一優(yōu)選的實施例中,在監(jiān)控子模塊之后,還包括:暫停子模塊,適于如果監(jiān)控到任一數(shù)據(jù)服務器的升級操作的結(jié)果為升級失敗,則將所述數(shù)據(jù)服務器加入升級黑名單,暫停對該數(shù)據(jù)服務器的升級。在本申請另一優(yōu)選的實施例中,各數(shù)據(jù)服務器分布于至少兩個機架上;則升級通知模塊720,包括:升級通知子模塊,用于每次選擇處于可升級狀態(tài)的數(shù)據(jù)服務器最多的機架,通知所述機架中的數(shù)據(jù)服務器進行升級操作;所述機架中的各數(shù)據(jù)服務器根據(jù)所述通知檢查自身的狀態(tài),如果處于可升級狀態(tài),則重啟升級,如果處于不可升級狀態(tài)或者升級完畢狀態(tài),則拒絕重啟升級。在本申請另一優(yōu)選的實施例中,在升級通知子模塊之后,還包括:監(jiān)控子模塊,用于監(jiān)控所述機架中的數(shù)據(jù)服務器是否全部執(zhí)行完升級操作;如果所述機架中的數(shù)據(jù)服務器全部執(zhí)行完升級操作,則進入升級通知子模塊。實施例八參照圖8和圖8a,其示出了本申請的一種分布式存儲系統(tǒng)升級系統(tǒng)實施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:多個客戶端810、多個數(shù)據(jù)服務器820和升級控制服務器830。其中,圖8a其示出本發(fā)明實施例的分布式存儲系統(tǒng)的架構(gòu)示意圖。本申請實施例中每個客戶端可以向分布式存儲系統(tǒng)中的r個發(fā)送寫入請求,升級控制服務器控制所有數(shù)據(jù)服務器的升級過程。圖8示出了客戶端810、數(shù)據(jù)服務器820、升級控制服務器830之間的連接關系。所述客戶端810包括:請求發(fā)送模塊811,用于對同一份待寫數(shù)據(jù),向多個數(shù)據(jù)服務器發(fā)送寫入請求;判斷模塊812,用于接收各數(shù)據(jù)服務器返回的響應,并根據(jù)所述響應判斷寫入成功的個數(shù)是否大于指定個數(shù);第一反饋模塊813,用于如果寫入成功的個數(shù)大于指定個數(shù),則向各寫入成功的數(shù)據(jù)服務器發(fā)送第一反饋信息;第二反饋模塊814,用于如果寫入成功的個數(shù)不大于指定個數(shù),則向各寫入成功的數(shù)據(jù)服務器發(fā)送第二反饋信息;所述數(shù)據(jù)服務器820包括:數(shù)據(jù)存儲模塊821,用于接收客戶端的寫入請求,并返回響應給客戶端。反饋信息接收模塊822,用于接收客戶端發(fā)送的第一反饋信息或者第二反饋信息;狀態(tài)確定模塊823,用于在自身處于未升級的情況下,根據(jù)所述第一反饋信息或者第二反饋信息,確定數(shù)據(jù)服務器自身的狀態(tài)。升級模塊824,用于根據(jù)升級控制服務器的通知進行升級操作。所述升級控制服務器830包括:狀態(tài)獲取模塊831,用于獲取各數(shù)據(jù)服務器的狀態(tài);升級通知模塊832,用于以輪轉(zhuǎn)的方式通知至少一個處于可升級狀態(tài)的數(shù)據(jù)服務器進行升級操作。本申請實施例的客戶端的模塊可參照實施例五的描述,數(shù)據(jù)服務器的模塊可參照實施例六的描述,升級控制器的模塊可參照實施例七的描述。其原理基本類似,在此不再贅敘。在本申請實施例中,從客戶端、數(shù)據(jù)服務器和升級控制服務器三個方面介紹了本申請的一種分布式存儲系統(tǒng)升級方法。對于訪問該分布式存儲系統(tǒng)的客戶端,讓各個客戶端對于同一個待寫數(shù)據(jù)的寫入請求,同時向多個數(shù)據(jù)服務器發(fā)送該寫入請求,然后分析在多少個數(shù)據(jù)服務器中寫入成功,判斷寫入成功的個數(shù)是否大于指定個數(shù),根據(jù)該判斷結(jié)果向各寫入成功的數(shù)據(jù)服務器發(fā)送第一反饋信息或者第二反饋信息。對于數(shù)據(jù)服務器,根據(jù)接收到的第一反饋信息或者第二反饋信息,確定自身是處于可升級狀態(tài)還是處于不可升級狀態(tài)。對于升級控制服務器,則可以輪轉(zhuǎn)控制處于可升級狀態(tài)的數(shù)據(jù)服務器進行升級操作。通過上述過程,在升級控制服務器在以輪轉(zhuǎn)的方式控制可升級狀態(tài)的數(shù)據(jù)服務器進行升級時,由于由客戶端控制數(shù)據(jù)服務器的狀態(tài),并且保證任一客戶端的待寫數(shù)據(jù)最少寫入指定個數(shù)的數(shù)據(jù)服務器中以進行備份,因此在不用停止上層服務的情況下,既可以保證分布式存儲系統(tǒng)對客戶端的響應時間較低,也提高了數(shù)據(jù)的可靠性,大大降低了用戶數(shù)據(jù)丟失的風險;并且可容忍升級過程中非預期的機器異常,保證服務不受影響。對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。本領域內(nèi)的技術(shù)人員應明白,本申請實施例的實施例可提供為方法、裝置、或計算機程序產(chǎn)品。因此,本申請實施例可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。在一個典型的配置中,所述計算機設備包括一個或多個處理器 (cpu)、輸入/輸出接口、網(wǎng)絡接口和內(nèi)存。內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非持續(xù)性的電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。本申請實施例是參照根據(jù)本申請實施例的方法、終端設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理終端設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理終端設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理終端設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理終端設備上,使得在計算機或其他可編程終端設備上執(zhí)行一系列操作步驟以產(chǎn)生計 算機實現(xiàn)的處理,從而在計算機或其他可編程終端設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。盡管已描述了本申請實施例的優(yōu)選實施例,但本領域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請實施例范圍的所有變更和修改。最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。以上對本申請所提供的一種分布式存儲系統(tǒng)升級方法、一種分布式存儲升級裝置和一種分布式存儲升級系統(tǒng),進行了詳細介紹,本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本申請的限制。當前第1頁12