分片調度方法、裝置及分布式服務器系統(tǒng)的制作方法
【技術領域】
[0001]本公開涉及通信技術領域,尤其涉及一種分片調度方法、裝置及分布式服務器系統(tǒng)。
【背景技術】
[0002]隨著計算機技術和互聯(lián)網(wǎng)技術的飛速發(fā)展,基于互聯(lián)網(wǎng)的社交應用軟件應運而生,例如,微博、微信等。社交應用軟件可以為用戶提供一種即時交互的平臺,例如,兩個用戶可以通過兩臺安裝了相同的應用軟件的通信終端進行信息的分享和交流等。
[0003]由于社交應用軟件通常具有海量使用用戶且遍布全國各地,因此,需要服務器具有極大的處理能力,于是出現(xiàn)了分布式服務器系統(tǒng)。
[0004]目前的分布式服務器系統(tǒng)包括位于不同地區(qū)的服務器,并且為每個地區(qū)服務器設置相同的負載能力,但是,當某個地區(qū)出現(xiàn)爆炸性消息時,該地區(qū)的服務器需要處理的信息量會陡增,然而目前該地區(qū)的服務器無法有效地提供服務,甚至會出現(xiàn)宕機的情況。
【發(fā)明內容】
[0005]本公開實施例提供一種分片調度方法、裝置及分布式服務器系統(tǒng),用以解決目前分布式服務器系統(tǒng)無法靈活滿足線上負載能力的問題。
[0006]根據(jù)本公開實施例的第一方面,提供一種分片調度方法,包括:
[0007]獲得當前分布式服務器系統(tǒng)中每個服務器的權重;
[0008]根據(jù)所述權重為每個服務器分配對應的分片數(shù)量,并將對應的分片數(shù)量通知對應的服務器,以使所述服務器保持對應的分片數(shù)量。
[0009]在一實施例中,所述每個服務器均包含主節(jié)點和從節(jié)點;所述每個服務器通過自己的主節(jié)點保存對應數(shù)量的分片,通過從節(jié)點備份其他服務器主節(jié)點保存的分片。
[0010]在一實施例中,當所述每個服務器包含三個節(jié)點時,第一個節(jié)點為所述主節(jié)點,第二個節(jié)點為所述從節(jié)點,第三個節(jié)點為所述第二個節(jié)點的從節(jié)點。
[0011 ] 在一實施例中,所述方法還包括:
[0012]基于預設原則為所述從節(jié)點分配分片,以使所述從節(jié)點保存對應的分片;所述預設原則包括與當前服務器主節(jié)點分配到的分片保持互斥的原則以及與當前服務器主節(jié)點分配到的分片數(shù)量接近的原則。
[0013]在一實施例中,所述基于預設原則為所述從節(jié)點分配分片,包括:
[0014]基于所述預設原則獲得所述從節(jié)點的所有分片分配方式,并計算所有分片分配方式對應的平衡量估計值;
[0015]從所有的平衡量估計值中找到最小平衡量估計值,并記錄對應的分片分配方式,根據(jù)所述分片分配方式為所述從節(jié)點分配對應的分片。
[0016]在一實施例中,所述平衡量估計值等于所有服務器的主節(jié)點和從節(jié)點的分片數(shù)量差的平方和。
[0017]在一實施例中,所述方法還包括:
[0018]檢測所述每個服務器的權重是否發(fā)生改變,若發(fā)生改變,則根據(jù)改變前后的權重獲得當前每個服務器主節(jié)點的分片迀移信息;
[0019]根據(jù)計算出的當前每個服務器主節(jié)點的分片迀移信息向對應服務器主節(jié)點發(fā)送迀入或迀出指令,以使對應服務器主節(jié)點迀入或迀出對應數(shù)量的分片。
[0020]在一實施例中,所述方法還包括:
[0021]在所述向對應服務器主節(jié)點發(fā)送迀入或迀出指令之后,獲得所有服務器的主節(jié)點和從節(jié)點間相同分片的數(shù)量和,并將所述數(shù)量和作為互斥量進行保存;
[0022]計算每個服務器的主節(jié)點和從節(jié)點的分片數(shù)量差,并根據(jù)所述分片數(shù)量差和所述互斥量獲得每個服務器從節(jié)點的分片迀移信息;
[0023]根據(jù)每個服務器從節(jié)點的分片迀移信息向對應從節(jié)點發(fā)送迀入或迀出指令,以使所述對應從節(jié)點迀入或迀出對應的分片。
[0024]在一實施例中,所述根據(jù)改變前后的權重獲得當前每個服務器主節(jié)點的分片迀移信息,包括:
[0025]根據(jù)改變前后的權重獲得當前每個服務器主節(jié)點的分片迀移值;
[0026]對所述分片迀移值的整數(shù)部分按照由小到大的順序進行排序,并基于排序后的整數(shù)部分和預設迀移方式獲得主節(jié)點分片的第一迀移信息,所述預設迀移方式包括首尾迀移方式或倒序迀移方式;
[0027]對所述分片迀移值的小數(shù)部分按照由小到大的順序進行排序,并基于排序后的小數(shù)部分和所述預設迀移方式獲得主節(jié)點分片的第二迀移信息;
[0028]根據(jù)所述主節(jié)點分片的第一迀移信息和所述主節(jié)點分片的第二迀移信息獲得每個服務器主節(jié)點的分片迀移信息。
[0029]在一實施例中,所述根據(jù)所述分片數(shù)量差和所述互斥量獲得每個服務器從節(jié)點的分片迀移信息,包括:
[0030]對所有服務器的所述分片數(shù)量差進行排序,根據(jù)排序結果和首尾迀移方式獲得從節(jié)點分片的第一迀移信息;
[0031]針對根據(jù)所述從節(jié)點分片的第一迀移信息進行迀移后的服務器,若仍存在分片數(shù)量差,則按照當前分片數(shù)量差由小到大的順序進行排序,并根據(jù)互斥量和順序迀移方式獲得從節(jié)點分片的第二迀移信息;
[0032]根據(jù)所述從節(jié)點分片的第一迀移信息和第二迀移信息獲得每個服務器從節(jié)點的分片迀移信息。
[0033]根據(jù)本公開實施例的第二方面,提供一種分片調度裝置,所述裝置包括:
[0034]獲得模塊,被配置為獲得當前分布式服務器系統(tǒng)中每個服務器的權重;
[0035]分配通知模塊,被配置為根據(jù)所述獲得模塊獲得的所述權重為每個服務器分配對應的分片數(shù)量,并將對應的分片數(shù)量通知對應的服務器,以使所述服務器保持對應的分片數(shù)量。
[0036]在一實施例中,所述分片調度裝置所在的分布式服務器系統(tǒng)中的每個服務器均包含主節(jié)點和從節(jié)點;所述每個服務器通過自己的主節(jié)點保存對應數(shù)量的分片,通過從節(jié)點備份其他服務器主節(jié)點保存的分片。
[0037]在一實施例中,當所述每個服務器包含三個節(jié)點時,第一個節(jié)點為所述主節(jié)點,第二個節(jié)點為所述從節(jié)點,第三個節(jié)點為所述第二個節(jié)點的從節(jié)點。
[0038]在一實施例中,所述裝置還包括:
[0039]從節(jié)點分片分配模塊,被配置為基于預設原則為所述從節(jié)點分配分片,以使所述從節(jié)點保存對應的分片;所述預設原則包括與當前服務器主節(jié)點分配到的分片保持互斥的原則以及與當前服務器主節(jié)點分配到的分片數(shù)量接近的原則。
[0040]在一實施例中,所述從節(jié)點分片分配模塊包括:
[0041]計算子模塊,被配置為基于所述預設原則獲得所述從節(jié)點的所有分片分配方式,并計算所有分片分配方式對應的平衡量估計值;
[0042]記錄分配子模塊,被配置為從所有的平衡量估計值中找到最小平衡量估計值,并記錄對應的分片分配方式,根據(jù)所述分片分配方式為所述從節(jié)點分配對應的分片。
[0043]在一實施例中,所述平衡量估計值等于所有服務器的主節(jié)點和從節(jié)點的分片數(shù)量差的平方和。
[0044]在一實施例中,所述裝置還包括:
[0045]檢測獲得模塊,被配置為檢測所述每個服務器的權重是否發(fā)生改變,若發(fā)生改變,則根據(jù)改變前后的權重獲得當前每個服務器主節(jié)點的分片迀移信息;
[0046]第一發(fā)送模塊,被配置為根據(jù)計算出的當前每個服務器主節(jié)點的分片迀移信息向對應服務器主節(jié)點發(fā)送迀入或迀出指令,以使對應服務器主節(jié)點迀入或迀出對應數(shù)量的分片。
[0047]在一實施例中,所述裝置還包括:
[0048]獲得保存模塊,被配置為在所述第一發(fā)送模塊向對應服務器主節(jié)點發(fā)送迀入或迀出指令之后,獲得所有服務器的主節(jié)點和從節(jié)點間相同分片的數(shù)量和,并將所述數(shù)量和作為互斥量進行保存;
[0049]迀移信息獲得模塊,被配置為計算每個服務器的主節(jié)點和從節(jié)點的分片數(shù)量差,并根據(jù)所述分片數(shù)量差和所述互斥量獲得每個服務器從節(jié)點的分片迀移信息;
[0050]第二發(fā)送模塊,被配置為根據(jù)每個服務器從節(jié)點的分片迀移信息向對應從節(jié)點發(fā)送迀入或迀出指令,以使所述對應從節(jié)點迀入或迀出對應的分片。
[0051 ] 在一實施例中,所述檢測獲得模塊包括:
[0052]迀移值獲得子模塊,被配置為根據(jù)改變前后的權重獲得當前每個服務器主節(jié)點的分片迀移值;
[0053]第一迀移信息獲得子模塊,被配置為對所述分片迀移值的整數(shù)部分按照由小到大的順序進行排序,并基于排序后的整數(shù)部分和預設迀移方式獲得主節(jié)點分片的第一迀移信息,所述預設迀移方式包括首尾迀移方式或倒序迀移方式;
[0054]第二迀移信息獲得子模塊,被配置為對所述分片迀移值的小數(shù)部分按照由小到大的順序進行排序,并基于排序后的小數(shù)部分和所述預設迀移方式獲得主節(jié)點分片的第二迀移?目息;
[0055]迀移信息獲得子模塊,被配置為根據(jù)所述主節(jié)點分片的第一迀移信息和所述主節(jié)點分片的第二迀移信息獲得每個服務器主節(jié)點的分片迀移信息。
[0056]在一實施例中,所述迀移信息獲得模塊包括:
[0057]第一迀移信息獲得子模塊,被配置為對所有服務器的所述分片數(shù)量差進行排序,根據(jù)排序結果和首尾迀移方式獲得從節(jié)點分片的第一迀移信息;
[0058]第二迀移信息獲得子模塊,被配置為針對根據(jù)所述從節(jié)點分片的第一迀移信息進行迀移后的服務器,若仍存在分片數(shù)量差,則按照當前分片數(shù)量差由小到大的順序進行排序,并根據(jù)互斥量和順序迀移方式獲得從節(jié)點分片的第二迀移信息;
[0059]迀移信息獲得子模塊,被配置為根據(jù)所述從節(jié)點分片的第一迀移信息和第二迀移信息獲得每個服務器從節(jié)點的分片迀移信息。
[0060]根據(jù)本公開實施例的第三方面,提供一種分布式服務器系統(tǒng),所述系統(tǒng)包括控制器和多個服務器,其中:
[0061 ] 所述控制器包括上述分片調度裝置;
[0062]所述多個服務器,被配置為對應保持所述控制器分配的分片數(shù)量。
[0063]根據(jù)本公開實施例的第四方面,提供一種分片調度裝置,包括:
[0064]處理器;
[0065]用于存儲處理器可執(zhí)行指令的存儲器;
[0066]其中,所述處理器被配置為:
[0067]獲得當前分布式服務器系統(tǒng)中每個服務器的權重;
[0068]根據(jù)所述權重為每個服務器分配對應的分片數(shù)量,并將對應的分片數(shù)量通知對應的服務器,以使所述服務器保持對應的分片數(shù)量。
[0069]本公開的實施例提供的技術方案可以包括以下有益效果:通過獲得每個服務器的權重,并根據(jù)權重為每個服務器分配對應的分片數(shù)