[0153]主服務(wù)器接收推送平臺發(fā)送的通知消息,所述主服務(wù)器為分布式服務(wù)器集群中通過投票選舉出的服務(wù)器;
[0154]將所述通知消息寫入到log日志中;
[0155]將所述log日志分發(fā)給集群中的從服務(wù)器,以使得所述從服務(wù)器更新自身的log日志并將所述通知消息下發(fā)給建立有連接關(guān)系的終端,所述從服務(wù)器為集群中除所述主服務(wù)器之外的其他服務(wù)器。
[0156]A2、根據(jù)Al所述的方法,其特征在于,在所述接收推送平臺發(fā)送的通知消息之前,所述方法進一步包括:
[0157]在一個投票周期內(nèi)為自身進行投票;并且,
[0158]向集群中的其他服務(wù)器發(fā)送投票請求,以獲得所述其他服務(wù)器的投票;
[0159]當(dāng)在所述投票周期內(nèi)最先獲得最多票數(shù)時,確定成為所述主服務(wù)器。
[0160]A3、根據(jù)A2所述的方法,其特征在于,每個投票周期對應(yīng)一個周期數(shù),所述周期數(shù)唯一并且隨時間推移單調(diào)遞增,每個服務(wù)器單獨維護自身的周期數(shù);
[0161 ]在確定成為所述主服務(wù)器之后,所述方法進一步包括:
[0162]與所述從服務(wù)器交換周期數(shù);
[0163]若所述從服務(wù)器的周期數(shù)小于所述主服務(wù)器的周期數(shù),則使所述從服務(wù)器根據(jù)所述主服務(wù)器的周期數(shù)進行周期數(shù)更新;
[0164]若所述從服務(wù)器的周期數(shù)大于所述主服務(wù)器的周期數(shù),則放棄主服務(wù)器地位。
[0165]A4、根據(jù)A2所述的方法,其特征在于,在確定成為所述主服務(wù)器之后,所述方法進一步包括:
[0166]定期向所述從服務(wù)器發(fā)送心跳包,以便向所述從服務(wù)器通知自身的主服務(wù)器地位。
[0167]A5、根據(jù)Al所述的方法,其特征在于,所述將所述通知消息寫入到log日志中,包括:
[0168]在所述log日志中生成log操作記錄;
[0169]將所述通知消息作為變量寫入到所述log操作記錄中。
[0170]A6、根據(jù)Al所述的方法,其特征在于,在所述將所述log日志分發(fā)給集群中的從服務(wù)器之后,所述方法進一步包括:
[0171 ]統(tǒng)計各個從服務(wù)器的更新狀態(tài);
[0172]當(dāng)成功更新log日志的從服務(wù)器數(shù)量超過預(yù)設(shè)數(shù)量時,指示成功更新log日志的從服務(wù)器向連接的終端下發(fā)所述通知消息。
[0173]A7、根據(jù)A6所述的方法,其特征在于,所述預(yù)設(shè)數(shù)量為集群服務(wù)器總數(shù)的二分之
O
[0174]AS、根據(jù)A6或7所述的方法,其特征在于,在所述統(tǒng)計各個從服務(wù)器的更新狀態(tài)之后,所述方法進一步包括:
[0175]向更新失敗的從服務(wù)器重復(fù)分發(fā)所述log日志。
[0176]B9、一種消息推送的方法,所述方法應(yīng)用于從服務(wù)器側(cè),其特征在于,所述方法包括:
[0177]從服務(wù)器接收主服務(wù)器分發(fā)的log日志,所述主服務(wù)器為分布式服務(wù)器集群中通過投票選舉出的服務(wù)器,所述從服務(wù)器為集群中除所述主服務(wù)器之外的其他服務(wù)器,所述log日志中記錄有推送平臺向所述主服務(wù)器發(fā)送的通知消息;
[0178]根據(jù)所述log日志更新自身的log日志;
[0179]將所述log日志中的所述通知消息下發(fā)給建立有連接關(guān)系的終端。
[0180]B10、根據(jù)B9所述的方法,其特征在于,在所述接收主服務(wù)器分發(fā)的log日志之前,所述方法進一步包括:
[0181 ]在一個投票周期內(nèi)接收其他服務(wù)器發(fā)送的投票請求;
[0182]為最先接收到的投票請求對應(yīng)的服務(wù)器投票。
[0183]B11、根據(jù)BlO所述的方法,其特征在于,每個投票周期對應(yīng)一個周期數(shù),所述周期數(shù)唯一并且隨時間推移單調(diào)遞增,每個服務(wù)器單獨維護自身的周期數(shù);
[0184]在投票選舉出所述主服務(wù)器之后,所述方法進一步包括:
[0185]與包括所述主服務(wù)器在內(nèi)的其他服務(wù)器交換周期數(shù);
[0186]若所述主服務(wù)器的周期數(shù)大于自身的周期數(shù),則根據(jù)所述主服務(wù)器的周期數(shù)進行周期數(shù)更新;
[0187]若所述主服務(wù)器的周期數(shù)小于自身的周期數(shù),則否定所述主服務(wù)器的主服務(wù)器地位。
[0188]B12、根據(jù)BlO所述的方法,其特征在于,在投票選舉出所述主服務(wù)器之后,所述方法進一步包括:
[0189]定期接收所述主服務(wù)器發(fā)送的心跳包,以便確定所述主服務(wù)器的主服務(wù)器地位。
[0190]B13、根據(jù)B12所述的方法,其特征在于,若在預(yù)設(shè)時長內(nèi)未接收到所述主服務(wù)器發(fā)送的心跳包,則否定所述主服務(wù)器的主服務(wù)器地位。
[0191]B14、根據(jù)B9所述的方法,其特征在于,所述方法進一步包括:
[0192]向所述主服務(wù)器上報所述log日志的更新狀態(tài);
[0193]所述將所述log日志中的所述通知消息下發(fā)給建立有連接關(guān)系的終端,包括:
[0194]若更新成功,則根據(jù)所述主服務(wù)器的指示,將所述log日志中的所述通知消息下發(fā)給建立有連接關(guān)系的終端。
[0195]B15、根據(jù)B14所述的方法,其特征在于,所述方法進一步包括:
[0196]若更新失敗,則接收所述主服務(wù)器重復(fù)分發(fā)的所述log日志;
[0197]根據(jù)重復(fù)接收的所述log日志再次更新自身的log日志。
[0198]C16、一種消息推送的裝置,所述裝置位于主服務(wù)器側(cè),其特征在于,所述裝置包括:
[0199]接收單元,用于接收推送平臺發(fā)送的通知消息,所述主服務(wù)器為分布式服務(wù)器集群中通過投票選舉出的服務(wù)器;
[0200]寫入單元,用于將所述通知消息寫入到log日志中;
[0201 ]發(fā)送單元,用于將所述log日志分發(fā)給集群中的從服務(wù)器,以使得所述從服務(wù)器更新自身的log日志并將所述通知消息下發(fā)給建立有連接關(guān)系的終端,所述從服務(wù)器為集群中除所述主服務(wù)器之外的其他服務(wù)器。
[0202]C17、根據(jù)C16所述的裝置,其特征在于,所述裝置進一步包括處理單元,用于:
[0203]在所述接收推送平臺發(fā)送的通知消息之前,在一個投票周期內(nèi)為自身進行投票;并且,
[0204]向集群中的其他服務(wù)器發(fā)送投票請求,以獲得所述其他服務(wù)器的投票;
[0205]當(dāng)在所述投票周期內(nèi)最先獲得最多票數(shù)時,確定成為所述主服務(wù)器。
[0206]C18、根據(jù)C17所述的裝置,其特征在于,所述裝置進一步包括:
[0207]交換單元,用于在確定成為所述主服務(wù)器之后,與所述從服務(wù)器交換周期數(shù),每個投票周期對應(yīng)一個周期數(shù),所述周期數(shù)唯一并且隨時間推移單調(diào)遞增,每個服務(wù)器單獨維護自身的周期數(shù);
[0208]更新單元,用于當(dāng)所述從服務(wù)器的周期數(shù)小于所述主服務(wù)器的周期數(shù)時,使所述從服務(wù)器根據(jù)所述主服務(wù)器的周期數(shù)進行周期數(shù)更新;
[0209]所述處理單元,用于當(dāng)所述從服務(wù)器的周期數(shù)大于所述主服務(wù)器的周期數(shù)時,放棄主服務(wù)器地位。
[0210]C19、根據(jù)C17所述的裝置,其特征在于,所述發(fā)送單元,用于在確定成為所述主服務(wù)器之后,定期向所述從服務(wù)器發(fā)送心跳包,以便向所述從服務(wù)器通知自身的主服務(wù)器地位。
[0211 ] C20、根據(jù)C16所述的裝置,其特征在于,所述寫入單元,包括:
[0212]生成模塊,用于在所述log日志中生成log操作記錄;
[0213]寫入模塊,用于將所述通知消息作為變量寫入到所述log操作記錄中。
[0214]C21、根據(jù)C16所述的裝置,其特征在于,所述裝置進一步包括統(tǒng)計單元,用于在將所述log日志分發(fā)給集群中的從服務(wù)器之后,統(tǒng)計各個從服務(wù)器的更新狀態(tài);
[0215]指示單元,用于當(dāng)成功更新log日志的從服務(wù)器數(shù)量超過預(yù)設(shè)數(shù)量時,指示成功更新log日志的從服務(wù)器向連接的終端下發(fā)所述通知消息。
[0216]C22、根據(jù)C21所述的裝置,其特征在于,所述指示單元使用的所述預(yù)設(shè)數(shù)量為集群服務(wù)器總數(shù)的二分之一。
[0217]C23、根據(jù)C21或22所述的裝置,其特征在于,所述發(fā)送單元,用于在統(tǒng)計各個從服務(wù)器的更新狀態(tài)之后,向更新失敗的從服務(wù)器重復(fù)分發(fā)所述log日志。
[0218]D24、一種消息推送的裝置,所述裝置位于從服務(wù)器側(cè),其特征在于,所述裝置包括:
[0219]接收單元,用于接收主服務(wù)器分發(fā)的log日志,所述主服務(wù)器為分布式服務(wù)器集群中通過投票選舉出的服務(wù)器,所述從服務(wù)器為集群中除所述主服務(wù)器之外的其他服務(wù)器,所述log日志中記錄有推送平臺向所述主服務(wù)器發(fā)送的通知消息;
[0220]更新單元,用于根據(jù)所述log日志更新自身的log日志;
[0221]發(fā)送單元,用于將所述log日志中的所述通知消息下發(fā)給建立有連接關(guān)系的終端。
[0222]D25、根據(jù)D24所述的裝置,其特征在于,所述裝置進一步包括:處理單元,用于:
[0223]在接收主服務(wù)器分發(fā)的log日志之前,在一個投票周期內(nèi)接收其他服務(wù)器發(fā)送的投票請求;
[0224]為最先接收到的投票請求對應(yīng)的服務(wù)器投票。
[0225]D26、根據(jù)D25所述的裝置,其特征在于,所述裝置進一步包括:
[0226]交換單元,用于在投票選舉出所述主服務(wù)器之后,與包括所述主服務(wù)器在內(nèi)的其他服務(wù)器交換周期數(shù),每個投票周期對應(yīng)一個周期數(shù),所述周期數(shù)唯一并且隨時間推移單調(diào)遞增,每個服務(wù)器單獨維護自身的周期數(shù);
[0227]所述更新單元,用于當(dāng)所述主服務(wù)器的周期數(shù)大于自身的周期數(shù)時,根據(jù)所述主服務(wù)器的周期數(shù)進行周期數(shù)更新;
[0228]所述處理單元,用于當(dāng)所述主服務(wù)器的周期數(shù)小于自身的周期數(shù)時,否定所述主服務(wù)器的主服務(wù)器地位。
[0229]D27、根據(jù)D25所述的裝置,其特征在于,所述接收單元,用于在投票選舉出所述主服務(wù)器之后,定期接收所述主服務(wù)器發(fā)送的心跳包,以便所述處理單元確定所述主服務(wù)器的主服務(wù)器地位。
[0230]D28、根據(jù)D27所述的裝置,其特征在于,所述處理單元,用于當(dāng)在預(yù)設(shè)時長內(nèi)未接收到所述主服務(wù)器發(fā)送的心跳包時,否定所述主服務(wù)器的主服務(wù)器地位。
[0231 ] D29、根據(jù)D24所述的裝置,其特征在于,所述發(fā)送單元,用于:
[0232]向所述主服務(wù)器上報所述log日志的更新狀態(tài);
[0233]當(dāng)更新成功時,根據(jù)所述主服務(wù)器的指示,將所述log日志中的所述通知消息下發(fā)給建立有連