基于即時通信業務的負載均衡方法和系統的制作方法
【專利摘要】本發明公開了一種基于即時通信業務的負載均衡方法和系統,涉及即時通信領域。該方法包括:針對即時通信業務構建社交網絡圖;對社交網絡圖進行分區;調整分區使分區與業務服務器的分布和規模相適配;調換用戶的分區標識使用戶進行負載均衡散列運算后落到待遷入分區所在業務服務器;根據用戶的分區標識對用戶進行動態遷移。本發明通過對用戶間的即時通信關系進行社交化網絡分區,使關系緊密的用戶聚集到同一個分區,從而獲得最優的服務器負載分布視圖,并按照此圖把用戶遷移到新歸屬服務器上,以減少服務器跨區通信的資源消耗,使系統在全局層面達到真正負載均衡,解決了即時通信系統中由于用戶分區不合理而引起的服務器間通信不均衡問題。
【專利說明】基于即時通信業務的負載均衡方法和系統
【技術領域】
[0001]本發明涉及即時通信領域,特別涉及一種基于即時通信業務的負載均衡方法和系統。
【背景技術】
[0002]互聯網級的大型即時通信系統均通過部署多個集群來支持大規模用戶,相應的負載均衡策略采用多級方式,一般分為全局和本地兩種負載分配策略。服務器負載均衡算法包括散列算法、優先權算法、最少連接算法、響應速度算法、動態性能分配算法等。這些算法均將來自用戶的請求盡量均勻的分布到各服務器上,使系統中各服務器收到的用戶請求處理量與其計算能力的比值趨向一致。
[0003]即時通信業務屬于在線社交網絡(Online Social Networks, OSNs)的范疇,這種應用的特點是前端用戶的請求引起后端服務器間成密集網狀的相互調用,而不是過去清晰的逐層順序調用。因此,部署即時通信業務的服務器不僅需要處理直接接收到的用戶請求,還需要處理服務器間內部互相調用的請求。由此引起服務器間內部互相調用的不均衡性,造成有些服務器節點上盡管分布的用戶數也不多,但是消息流量卻極大,嚴重影響了全網流量的平衡。
[0004]現有的負載均衡方式對即時通信業務的運行特點考慮不足,需要一種適合即時通信業務的負載均衡方案。
【發明內容】
[0005]本發明實施例所要解決的一個技術問題是:提出一種適合即時通信業務的負載均衡方案。
[0006]根據本發明實施例的一個方面,提出一種基于即時通信業務的負載均衡方法,包括:針對即時通信業務構建社交網絡圖;對社交網絡圖進行分區;調整分區使分區與業務服務器的分布和規模相適配;調換用戶的分區標識使用戶進行負載均衡散列運算后落到待遷入分區所在業務服務器;根據用戶的分區標識對用戶進行動態遷移。
[0007]根據本發明實施例的另一方面,提出一種基于即時通信業務的負載均衡系統,包括:分區服務器和負載調整服務器;分區服務器用于針對即時通信業務構建社交網絡圖;對社交網絡圖進行分區;調整分區使分區與業務服務器的分布和規模相適配;調換用戶的分區標識使用戶進行負載均衡散列運算后落到待遷入分區所在業務服務器;負載調整服務器用于根據用戶的分區標識對用戶進行動態遷移。
[0008]本發明通過對用戶間的即時通信關系進行社交化網絡分區,使關系緊密的用戶聚集到同一個分區,從而獲得最優的服務器負載分布視圖,并按照此圖把用戶遷移到新歸屬服務器上,以減少服務器跨區通信的資源消耗,使系統在全局層面達到真正負載均衡,解決了即時通信系統中由于用戶分區不合理而引起的服務器間通信不均衡問題。
[0009]通過以下參照附圖對本發明的示例性實施例的詳細描述,本發明的其它特征及其優點將會變得清楚。
【專利附圖】
【附圖說明】
[0010]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0011]圖1為本發明基于即時通信業務的負載均衡方法一個實施例的流程示意圖。
[0012]圖2為本發明與現有技術之間的負載均衡對比示意圖。
[0013]圖3為本發明通過調換分區標識進行用戶遷移的示意圖。
[0014]圖4為本發明在服務不中斷情況下對用戶進行動態遷移的方法流程示意圖。
[0015]圖5為本發明基于即時通信業務的負載均衡系統一個實施例的結構示意圖。
[0016]圖6為本發明基于即時通信業務的負載均衡系統另一個實施例的結構示意圖。
【具體實施方式】
[0017]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。以下對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本發明及其應用或使用的任何限制。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0018]互聯網級的大型即時通信系統,用戶基數大、服務器數量多、分布地域廣,如果不能合理的對用戶分區使通信密集的用戶集中到同一個區域,則跨區的通信量會非常大,造成系統整體負載失衡。本發明提出了一種適合即時通信業務的負載均衡方案,下面詳細說明。
[0019]圖1為本發明基于即時通信業務的負載均衡方法一個實施例的流程示意圖。
[0020]如圖1所示,本實施例的負載均衡方法包括以下步驟:
[0021]步驟101,針對即時通信業務構建社交網絡圖;
[0022]步驟102,對社交網絡圖進行分區;
[0023]步驟103,調整分區使分區與業務服務器的分布和規模相適配;
[0024]步驟104,調換用戶的分區標識使用戶進行負載均衡散列運算后落到待遷入分區所在業務服務器;
[0025]步驟105,根據用戶的分區標識對用戶進行動態遷移。
[0026]上述實施例,通過對用戶間的即時通信關系進行社交化網絡分區,使關系緊密的用戶聚集到同一個分區,從而獲得最優的服務器負載分布視圖,并按照此圖把用戶遷移到新歸屬服務器上,以減少服務器跨區通信的資源消耗,使系統在全局層面達到真正負載均衡,解決了即時通信系統中由于用戶分區不合理而引起的服務器間通信不均衡問題。
[0027]圖2為本發明與現有技術之間的負載均衡對比示意圖。采用現有技術均衡之后,服務器A、B、C上分別有5個用戶,但由于服務器A上的用戶A和B,與服務器B上的用戶
C、D和E,以及服務器C上的用戶F關系緊密,用戶間的通信比較頻繁,造成服務器跨區通信的資源消耗比較多。采用本發明均衡之后,按照分區重新調整用戶在服務器上的分布,關系密切的用戶A、B、C、D和E集中到同一服務器A上,從而減少了服務器跨區通信的資源消耗,使系統在全局層面達到真正負載均衡。
[0028]對于步驟101,本發明提出一種示例性的建社交網絡圖的方法,包括:從數據庫服務器獲取用戶間的即時通信業務關系、關系類型、與時間相關的通信頻度,根據用戶間的即時通信業務關系、關系類型、與時間相關的通信頻度構建各種社交網絡圖。其中的關系類型例如可以是好友關系、同學關系、同事關系等。另外,在判定用戶間存在即時通信業務關系時,可以設置一個存在關系的最小閾值,例如可以設定存在關系的最小閾值為每個月30條消息,如果小于30條消息,則可以認為兩個用戶間不存在即時通信業務關系,反之,則可以認為兩個用戶間存在即時通信業務關系。
[0029]對于步驟102,如何在大型即時通信系統這張極其龐大的、而且易變的百萬個節點以上的在線社交網絡圖譜中進行多維度快速聚類和動態調整用戶分區,從工程角度是一件非常復雜而又棘手的綜合性問題。對于這個問題,本發明借鑒社會網絡分析(SNA)領域的節點聚類和子圖發現算法,提出一種示例性的社交網絡圖分區方法,包括:根據k-core算法對社交網絡圖進行分區,k-core算法是指分區中的任何一個用戶都至少與分區中的其他k個用戶建立關系,其中的k表示預設度數。需要說明的是,可以根據需要設置關系的權重,例如,一個月內聯系過10次的好友才建立一個關系,而有些用戶盡管也是好友但由于一個月內聯系少于10次,則用戶與這些好友之間并沒有建立關系。
[0030]對于步驟103,本發明提出一種示例性的調整分區的方法,包括:通過改變上述預設度數k的值來調整分區大小,使分區與業務服務器的分布和規模相適配。
[0031]對于步驟104,由于用戶進行哈希負載均衡時使用的key (關鍵字)并不是用戶標識(或稱用戶ID)而是用戶的分區標識(或稱分區ID),該分區標識與用戶標識的綁定關系是可變的,因此本發明可以通過修改用戶標識與分區標識的映射關系,使用戶在進行負載均衡的散列計算時落到待遷移的業務服務器上。
[0032]由于哈希不可逆,我們無法知道服務器對應的所有分區ID,但是通過已經落到該服務器的用戶群可以知道一部分分區ID,于是本發明提出下述的第一種方法,通過不斷互換服務器間已知的分區ID組,使用戶最終分配到目標服務器的分區ID。
[0033]第一種方法,將用戶的原分區標識替換為新分區標識,該新分區標識可以使待遷入分區所在業務服務器中的一個已知的待遷出的分區標識,以使用戶使用分區標識進行負載均衡散列運算后落到待遷入分區所在業務服務器。
[0034]例如,如圖3所示,用戶b要想從服務器A遷移到服務器B,需要從B服務器的待遷出的分區ID中選取一個替換用戶b所在原服務器A的分區ID,于是用戶b的分區ID改為4,則可以將用戶b遷入服務器B。又例如,用戶d要想從服務器B遷移到服務器C,需要從C服務器的待遷出的分區ID中選取一個替換用戶d所在原服務器B的分區ID,于是用戶d的分區ID改為7,則可以將用戶d遷入服務器C。其他用戶調換后的分區標識如圖3所示,這里不再一一贅述。
[0035]互換的方法不能確保所有用戶都得到理想分區ID,這個局限可以通過系統自行儲備空閑分區ID得到解決,即下述的第二種方法。
[0036]第二種方法,將用戶的原分區標識替換為新分區標識,該新分區標識可以使待遷入分區所在業務服務器中的一個空閑分區標識,以使用戶使用分區標識進行負載均衡散列運算后落到待遷入分區所在業務服務器。
[0037]上述兩種方法,在用戶遷移到新分區所在業務服務器后,仍然可以采用一致性哈希算法進行用戶位置尋址,不需要使用代價高昂的路由表技術,非常適合工程上實施。
[0038]對于步驟105,本發明提出一種在服務不中斷情況下對用戶進行動態遷移的方法,如圖4所示,包括以下步驟:
[0039]步驟401,負載調整服務器獲取用戶的用戶標識、原分區標識、新分區標識,根據原分區標識進行哈希運算得到用戶所在原業務服務器的地址,根據新分區標識進行哈希運算得到用戶所在新業務服務器的地址;
[0040]步驟402,負載調整服務器根據用戶所在原業務服務器的地址,通知用戶所在原業務服務器遷出該用戶;
[0041]步驟403,負載調整服務器可以從數據庫服務器獲取用戶的好友(好友可以是列表形式),通知用戶好友所在業務服務器更新該用戶的分區標識為新分區標識;
[0042]步驟404,用戶所在原業務服務器可以通過于用戶客戶端的長連接,通知用戶重定向到用戶所在新業務服務器,并指定負載調整服務器為其收發消息的代理服務器,以便處理其好友同時也在遷移的情況;轉發好友發給用戶的消息給負載調整服務器;
[0043]步驟405,用戶好友所在業務服務器記錄用戶的新分區標識,使用舊分區標識給用戶發送消息,直到收到負載調整服務器的切換新分區標識的通知后再使用新分區標識給用戶發送消息;
[0044]步驟406,負載調整服務器將發給用戶所在原業務服務器的消息轉發給用戶所在新業務服務器,將用戶所在新業務服務器發給該用戶好友的消息轉發給用戶好友所在業務服務器;
[0045]步驟407,當用戶好友所在業務服務器均完成新分區標識的更新后,負載調整服務器對用戶好友所在業務服務器統一發送切換新分區標識的通知,用戶好友所在業務服務器接到通知后使用新分區標識給用戶發送消息,并通知用戶所在新業務服務器發出消息不再經負載調整服務器中轉。
[0046]上述遷移方法,可以在服務不中斷情況下進行,并且在用戶及其好友均在遷移的情況下不會漏接消息。
[0047]圖5為本發明基于即時通信業務的負載均衡系統一個實施例的結構示意圖。
[0048]如圖5所示,本實施例的負載均衡系統包括:分區服務器501和負載調整服務器502 ;分區服務器501用于針對即時通信業務構建社交網絡圖;對社交網絡圖進行分區;調整分區使分區與業務服務器的分布和規模相適配;調換用戶的分區標識使用戶進行負載均衡散列運算后落到待遷入分區所在業務服務器;負載調整服務器502用于根據用戶的分區標識對用戶進行動態遷移。
[0049]其中,分區服務器501可以包括社交網絡圖構建模塊,用于針對即時通信業務構建社交網絡圖,具體包括:從數據庫服務器獲取用戶間的即時通信業務關系、關系類型、與時間相關的通信頻度,根據用戶間的即時通信業務關系、關系類型、與時間相關的通信頻度構建社交網絡圖。
[0050]其中,分區服務器501可以包括分區模塊,用于對社交網絡圖進行分區,具體包括:根據k-core算法對社交網絡圖進行分區,k-core算法是指分區中的任何一個用戶都至少與分區中的其他k個用戶建立關系,其中的k表示預設度數。
[0051]其中,分區服務器501可以包括分區調整模塊,用于調整分區使分區與業務服務器的分布和規模相適配,具體包括:通過改變預設度數k的值來調整分區大小,使分區與業務服務器的分布和規模相適配。
[0052]其中,分區服務器501可以包括分區標識調整模塊,用于調換用戶的分區標識使用戶進行負載均衡散列運算后落到待遷入分區所在業務服務器,具體包括:將用戶的原分區標識替換為新分區標識,該新分區標識為待遷入分區所在業務服務器中的一個空閑分區標識或一個已知的待遷出的分區標識,以使用戶使用分區標識進行負載均衡散列運算后落到待遷入分區所在業務服務器。
[0053]圖6為本發明基于即時通信業務的負載均衡系統另一個實施例的結構示意圖。如圖6所示,該系統還包括業務服務器503。則在動態遷移過程中:
[0054]負載調整服務器502,用于從分區服務器501獲取用戶的用戶標識、原分區標識、新分區標識,根據原分區標識進行哈希運算得到用戶所在原業務服務器的地址,根據新分區標識進行哈希運算得到用戶所在新業務服務器的地址,根據用戶所在原業務服務器的地址,通知用戶所在原業務服務器遷出該用戶,從數據庫服務器獲取用戶的好友,通知用戶好友所在業務服務器更新該用戶的分區標識為新分區標識;
[0055]用戶所在原業務服務器,用于通知用戶重定向到用戶所在新業務服務器,并指定負載調整服務器為其收發消息的代理服務器;
[0056]用戶好友所在業務服務器,用于記錄用戶的新分區標識,使用舊分區標識給用戶發送消息,直到收到負載調整服務器的切換新分區標識的通知后再使用新分區標識給用戶發送消息;
[0057]用戶所在原業務服務器與用戶好友所在業務服務器在圖6中均標識為503,不再區分。
[0058]負載調整服務器502,用于將發給用戶所在原業務服務器的消息轉發給用戶所在新業務服務器,將用戶所在新業務服務器發給該用戶好友的消息轉發給用戶好友所在業務服務器,當用戶好友所在業務服務器均完成新分區標識的更新后,對用戶好友所在業務服務器統一發送切換新分區標識的通知。
[0059]在具體實現時,分區服務器由于計算規模非常大、算法經常變化,可以采用oracle實現;負載調整服務器可以基于服務器框架netty改造實現;業務服務器(如openfire)需要增加restful接口供負載調整服務器發送通知指令。
[0060]上述負載均衡系統,通過對用戶間的即時通信關系進行社交化網絡分區,使關系緊密的用戶聚集到同一個分區,從而獲得最優的服務器負載分布視圖,并按照此圖把用戶遷移到新歸屬服務器上,以減少服務器跨區通信的資源消耗,使系統在全局層面達到真正負載均衡,解決了即時通信系統中由于用戶分區不合理而引起的服務器間通信不均衡問題。并且,在用戶遷移到新分區所在業務服務器后,仍然可以采用一致性哈希算法進行用戶位置尋址,不需要使用代價高昂的路由表技術,非常適合工程上實施。另外,用戶遷移可以在服務不中斷情況下進行,并且在用戶及其好友均在遷移的情況下不會漏接消息。
[0061]本領域普通技術人員可以理解實現上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。
[0062]以上所述僅為本發明的較佳實施例,并不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
【權利要求】
1.一種基于即時通信業務的負載均衡方法,包括: 針對即時通信業務構建社交網絡圖; 對社交網絡圖進行分區; 調整分區使分區與業務服務器的分布和規模相適配; 調換用戶的分區標識使用戶進行負載均衡散列運算后落到待遷入分區所在業務服務器; 根據用戶的分區標識對用戶進行動態遷移。
2.根據權利要求1所述的方法,其特征在于,所述針對即時通信業務構建社交網絡圖包括: 根據用戶間的即時通信業務關系、關系類型、與時間相關的通信頻度構建社交網絡圖。
3.根據權利要求1所述的方法,其特征在于,所述對社交網絡圖進行分區包括: 根據k-core算法對社交網絡圖進行分區,k-core算法是指分區中的任何一個用戶都至少與分區中的其他k個用戶建立關系,其中的k表示預設度數。
4.根據權利要求3所述的方法,其特征在于,所述調整分區使分區與業務服務器的分布和規模相適配包括: 通過改變預設度數k的值來調整分區大小,使分區與業務服務器的分布和規模相適配。
5.根據權利要求1所述的方法,其特征在于,所述調換用戶的分區標識使用戶進行負載均衡散列運算后落到待遷入分區所在業務服務器包括: 將用戶的原分區標識替換為新分區標識,該新分區標識為待遷入分區所在業務服務器中的一個空閑分區標識或一個已知的待遷出的分區標識,以使用戶使用分區標識進行負載均衡散列運算后落到待遷入分區所在業務服務器。
6.根據權利要求1所述的方法,其特征在于,所述根據用戶的分區標識對用戶進行動態遷移包括: 負載調整服務器獲取用戶的用戶標識、原分區標識、新分區標識,根據原分區標識進行哈希運算得到用戶所在原業務服務器的地址,根據新分區標識進行哈希運算得到用戶所在新業務服務器的地址,根據用戶所在原業務服務器的地址,通知用戶所在原業務服務器遷出該用戶,獲取用戶的好友,通知用戶好友所在業務服務器更新該用戶的分區標識為新分區標識; 用戶所在原業務服務器通知用戶重定向到用戶所在新業務服務器,并指定負載調整服務器為其收發消息的代理服務器; 用戶好友所在業務服務器記錄用戶的新分區標識,使用舊分區標識給用戶發送消息,直到收到負載調整服務器的切換新分區標識的通知后再使用新分區標識給用戶發送消息; 負載調整服務器將發給用戶所在原業務服務器的消息轉發給用戶所在新業務服務器,將用戶所在新業務服務器發給該用戶好友的消息轉發給用戶好友所在業務服務器,當用戶好友所在業務服務器均完成新分區標識的更新后,對用戶好友所在業務服務器統一發送切換新分區標識的通知。
7.一種基于即時通信業務的負載均衡系統,包括:分區服務器和負載調整服務器; 分區服務器用于針對即時通信業務構建社交網絡圖;對社交網絡圖進行分區;調整分區使分區與業務服務器的分布和規模相適配;調換用戶的分區標識使用戶進行負載均衡散列運算后落到待遷入分區所在業務服務器; 負載調整服務器用于根據用戶的分區標識對用戶進行動態遷移。
8.根據權利要求7所述的系統,其特征在于,所述分區服務器包括社交網絡圖構建模塊,用于針對即時通信業務構建社交網絡圖,具體包括:根據用戶間的即時通信業務關系、關系類型、與時間相關的通信頻度構建社交網絡圖。
9.根據權利要求7所述的系統,其特征在于,所述分區服務器包括分區模塊,用于對社交網絡圖進行分區,具體包括:根據k-core算法對社交網絡圖進行分區,k-core算法是指分區中的任何一個用戶都至少與分區中的其他k個用戶建立關系,其中的k表示預設度數。
10.根據權利要求9所述的系統,其特征在于,所述分區服務器包括分區調整模塊,用于調整分區使分區與業務服務器的分布和規模相適配,具體包括:通過改變預設度數k的值來調整分區大小,使分區與業務服務器的分布和規模相適配。
11.根據權利要求7所述的系統,其特征在于,所述分區服務器包括分區標識調整模塊,用于調換用戶的分區標識使用戶進行負載均衡散列運算后落到待遷入分區所在業務服務器,具體包括:將用戶的原分區標識替換為新分區標識,該新分區標識為待遷入分區所在業務服務器中的一個空閑分區標識或一個已知的待遷出的分區標識,以使用戶使用分區標識進行負載均衡散列運算后落到待遷入分區所在業務服務器。
12.根據權利要求7所述的系統,其特征在于,所述系統還包括業務服務器; 所述負載調整服務器,用于從分區服務器獲取用戶的用戶標識、原分區標識、新分區標識,根據原分區標識進行哈希運算得到用戶所在原業務服務器的地址,根據新分區標識進行哈希運算得到用戶所在新業務服務器的地址,根據用戶所在原業務服務器的地址,通知用戶所在原業務服務器遷出該用戶,獲取用戶的好友,通知用戶好友所在業務服務器更新該用戶的分區標識為新分區標識; 用戶所在原業務服務器,用于通知用戶重定向到用戶所在新業務服務器,并指定負載調整服務器為其收發消息的代理服務器; 用戶好友所在業務服務器,用于記錄用戶的新分區標識,使用舊分區標識給用戶發送消息,直到收到負載調整服務器的切換新分區標識的通知后再使用新分區標識給用戶發送消息; 所述負載調整服務器,用于將發給用戶所在原業務服務器的消息轉發給用戶所在新業務服務器,將用戶所在新業務服務器發給該用戶好友的消息轉發給用戶好友所在業務服務器,當用戶好友所在業務服務器均完成新分區標識的更新后,對用戶好友所在業務服務器統一發送切換新分區標識的通知。
【文檔編號】H04L12/58GK104184673SQ201310196308
【公開日】2014年12月3日 申請日期:2013年5月24日 優先權日:2013年5月24日
【發明者】趙繼壯 申請人:中國電信股份有限公司