一種用於伺服器集群的路由伺服器及路由服務方法與流程
2023-05-11 10:17:51

本發明涉及伺服器技術領域,尤其涉及一種用於伺服器集群的路由伺服器及路由服務方法。
背景技術:
在現在很多系統或者APP中,都存在使用消息推送的功能。通過在雲端和客戶端之間建立一條穩定、可靠的長連接,為開發者提供向客戶端應用推送實時消息的服務,幫助開發者有效地拉動用戶活躍。而所有的消息推送都需要有後臺伺服器進行相關的支持才能夠實現,保持長連結,才能夠實現消息發送以及接收的實時性。
由於客戶端和服務端之間需要保持一個長連接,因此,如果客戶端的數量很多的話,就需要服務端保持很多數目的長連接。而實際情況是,一般APP系統的客戶端數量會達到幾十上百萬之多,如果這麼多的連接都連到同一臺伺服器上,會給該臺伺服器造成很大的壓力,導致伺服器不可使用,宕機或者其他問題。
目前,APP系統通常採用伺服器集群提供服務。通常在伺服器集群前端提供一個路由伺服器,路由伺服器由提供接口給客戶端訪問,獲取可訪問的路由列表。而後客戶端再從中選擇一個路由地址,進行真正的數據訪問。然而目前的路由伺服器通常採用預先配置路由信息,因此當訪問量增大時,難以保證服務訪問的均衡,同時致使客戶端請求響應的速度慢,用戶體驗非常差。
技術實現要素:
本發明的主要目的在於提出一種用於伺服器集群的路由伺服器及路由服務方法,用以解決技術中路由伺服器難以保證伺服器集群負載均衡的問題。
為實現上述發明目的,本發明採用下述的技術方案:
依據本發明的一個方面,提供一種用於伺服器集群的路由伺服器,包括:
獲取單元,用於當接收到客戶端的連接請求後,獲取所述連接請求所攜帶的信息;
選取單元,用於根據所述連接請求中所攜帶的信息選取所述伺服器集群中的伺服器;
反饋單元,用於生成所述伺服器的路由列表,並將所述路由列表發送至所述客戶端,以便所述客戶端連接相應的伺服器。
進一步地,所述獲取單元,還用於獲取所述連接請求中所攜帶的校驗信息,並判斷所述校驗信息是否符合預設要求;
當判斷符合時,則根據所述連接請求中所攜帶的信息選取所述伺服器集群中的伺服器。
進一步地,所述選取單元,具體用於:
根據所述連接請求中所攜帶的應用標識確定可提供服務的伺服器;
獲取所述可提供服務的伺服器的運行參數;
根據所述運行參數計算所述伺服器的負載情況,並選取負載情況滿足預設條件的伺服器。
進一步地,所述選取單元,還用於:
獲取所述可提供服務的伺服器的運行參數前,判斷所述連接請求中所攜帶的應用版本是否為新版本;
當所述應用版本為舊版本時,獲取所述可提供服務的伺服器的運行參數;
當所述應用版本為新版本時,則從所述可提供服務的伺服器中直接選取提供新版本服務的伺服器。
進一步地,所述選取單元,還用於根據所述連接請求中所攜帶的應用標識確定可提供服務的伺服器前,獲取所述連接請求中所攜帶的唯一標識碼;
根據所述唯一標識碼判斷所述設備是否需要升級;
當判斷所述設備需要升級時,從所述伺服器集群中選取提供設備升級的伺服器;否則,根據所述應用標識確定可提供服務的伺服器。
依據本發明的一個方面,提供一種用於伺服器集群的路由服務方法,包括:
當接收到客戶端的連接請求後,獲取所述連接請求所攜帶的信息;
根據所述連接請求中所攜帶的信息選取所述伺服器集群中的伺服器;
生成所述伺服器的路由列表,並將所述路由列表發送至所述客戶端,以便所述客戶端連接相應的伺服器。
進一步地,所述獲取所述連接請求所攜帶的信息,包括:
獲取所述連接請求中所攜帶的校驗信息,並判斷所述校驗信息是否符合預設要求;
當判斷符合時,則根據所述連接請求中所攜帶的信息選取所述伺服器集群中的伺服器。
進一步地,所述根據所述連接請求中所攜帶的信息選取所述伺服器集群中的伺服器,具體包括:
根據所述連接請求中所攜帶的應用標識確定可提供服務的伺服器;
獲取所述可提供服務的伺服器的運行參數;
根據所述運行參數計算所述伺服器的負載情況,並選取負載情況滿足預設條件的伺服器。
進一步地,所述獲取所述可提供服務的伺服器的運行參數前,所述方法還包括:
判斷所述連接請求中所攜帶的應用版本是否為新版本;
當所述應用版本為舊版本時,獲取所述可提供服務的伺服器的運行參數;
當所述應用版本為新版本時,則從所述可提供服務的伺服器中直接選取提供新版本服務的伺服器。
進一步地,所述根據所述連接請求中所攜帶的應用標識確定可提供服務的伺服器前,所述方法還包括;
獲取所述連接請求中所攜帶的唯一標識碼;
根據所述唯一標識碼判斷所述設備是否需要升級;
當判斷所述設備需要升級時,從所述伺服器集群中選取提供設備升級的伺服器;否則,根據所述應用標識確定可提供服務的伺服器。
本發明提出的用於伺服器集群的路由伺服器及路由服務方法,通過獲取請求中所攜帶的信息選擇相應的路由策略;並根據相應的路由策略選擇所對應的伺服器,可有效減輕伺服器的負擔,確保伺服器能夠更有效地進行消息傳輸;通過在連接請求中配置版本信息以及設備的唯一標識碼信息,及時獲取使用灰度版本的客戶端信息,第一時間將相應的請求進行分流,提高了客戶端請求的響應速度,提升了用戶的體驗。
附圖說明
圖1為本發明實施例中用於伺服器集群的路由伺服器的原理框圖;
圖2為本發明實施例中路由伺服器及伺服器集群的部署架構圖;
圖3為本發明實施例中用於伺服器集群的路由服務方法的流程圖;
圖4為本發明實施例中客戶端與路由伺服器的交互流程圖;
圖5為本發明實施例中路由伺服器處理連接請求的序列圖。
本發明目的的實現、功能特點及優點將結合實施例,參照附圖做進一步說明。
具體實施方式
應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。
現在將參考附圖描述實現本發明各個實施例的移動終端。在後續的描述中,使用用於表示元件的諸如「模塊」、「部件」或「單元」的後綴僅為了有利於本發明的說明,其本身並沒有特定的意義。因此,"模塊"與"部件"可以混合地使用。
本發明實施例提供一種用於伺服器集群的路由伺服器。該路由伺服器作為伺服器集群的前置服務,可以智能的控制客戶端要連接的接入伺服器,提高伺服器的處理效率,實現長連接的負載均衡,同時還可以隔離app防止相互影響以及實現更高級別的灰度引流。
如圖1所示,本發明實施例中所提供的用於接入伺服器集群的路由伺服器,具體包括:
獲取單元11,用於當接收到客戶端的連接請求後,獲取連接請求所攜帶的信息;
選取單元12,用於根據連接請求中所攜帶的信息選取伺服器集群中的伺服器;
反饋單元13,用於生成伺服器的路由列表,並將路由列表發送至客戶端,以便客戶端連接相應的伺服器。
本發明實施例所提供的用於伺服器集群的路由伺服器,通過獲取請求中所攜帶的信息選擇相應的路由策略;並根據相應的路由策略選擇所對應的伺服器。本發明根據請求中的請求信息選擇相應的路由策略,減輕了伺服器的負擔,確保伺服器能夠更有效地進行消息傳輸,提高了伺服器的處理效率;同時使得客戶端的請求快速得到響應,提升了用戶的體驗。
如圖1所示,本發明實施例所提供的路由伺服器的應用架構圖。本發明實施例中路由伺服器可以採用集群的形式,便於及時處理的客戶端高並發請求。具體地,可以採用多個的tomcat等應用伺服器組成集群。該實施例中伺服器集群包括Push中控接入服務集群和獨立APP接入服務集群。終端的某些應用(例如系統自帶應用)採用的是集中控制和管理,針對該類應用的請求,由Push中控接入服務集群為終端提供服務。而針對一些獨立的應用,例如QQ等,通過獨立APP接入服務集群提供服務。客戶端(Client SDK)與路由伺服器集群之間採用Http通信協議進行通信,與Push中控接入服務集群與獨立APP接入服務集群之間採用SSL通信協議進行通信。
下面結合圖1對本發明中路由伺服器的各個單元進行詳細介紹。
獲取單元11,用於當接收到客戶端的連接請求後,獲取連接請求中所攜帶的信息。
其中,獲取單元11具體用於在接收到客戶端的連接請求後,首先獲取連接請求中攜帶的校驗信息;判斷校驗信息是否符合本地設置的預設要求;當符合,再進一步獲取連接請求中攜帶的請求信息;當判斷不符合時,則拒絕客戶端的請求,並向客戶端發送拒絕響應。
其中,在客戶端發送連接請求時,向路由伺服器發送Https請求。在該請求中攜帶的校驗信息,包括用戶參數、籤名、APP狀態中的一種或多種。
具體地,獲取單元11對連接請求中攜帶的校驗信息進行校驗時,包括:
當獲取客戶端的用戶參數後,判斷用戶參數是否存在本地預存的設備參數一致,若一致時,在繼續後續處理;這裡,用戶參數包括用戶名以及密碼;和/或,利用籤名對客戶端進行認證,當認證通過後,在進行後續處理。對於利用籤名的驗證過程已屬於領域技術人員所熟知的技術,這裡不再進行贅述。和/或,驗證APP的狀態信息,當APP處理離線狀態時,不需要對該連接請求進行處理,只有APP處於在線時,再進行後續處理。
進一步地,獲取單元11獲取連接請求中所攜帶的信息包括應用標識、應用版本以及設備的唯一標識碼(IMEI碼)。其中,應用標識即APP的ID,根據該應用標識可以將APP相互隔離開,同時根據APP ID可以區分服務是否Push中控接入服務集群或是獨立APP接入服務集群提供服務。而應用版本信息是指APP的版本信息,APP系統中兩份不同的版本APP,一部分用戶使用新版本,一部分用戶採用舊版本。兩個版本同時提供服務。
選取單元12,用於根據連接請求中攜帶的信息選擇伺服器集群中的伺服器。
上述提及,獲取單元11獲取連接請求中所攜帶的信息包括應用標識、應用版本、設備的唯一標識碼,這裡選取單元12根據不同的信息選擇不同的路由策略,進而獲取所要提供服務的伺服器。
本發明一實施例中,選取單元12首先根據設備的唯一標識碼篩選,接著再根據應用標識、應用版本進行篩選。
具體地,選取單元12根據連接請求中攜帶的設備的唯一標識碼判斷所述設備是否需要升級;當判斷設備需要升級時,從伺服器集群中選取提供設備升級的伺服器即可;當判斷設備不需升級時,再根據應用情況進一步篩選。
其中,選取單元12隻根據應用標識進一步篩選時,根據應用標識確定可提供服務的伺服器。具體地,可以根據應用標識確定是由Push中控接入服務集群還是接入獨立APP接入服務集群提供服務。
獲取可提供服務的伺服器的運行參數;
根據運行參數計算所述伺服器的負載情況,並選取負載情況滿足預設條件的伺服器。
這裡,一實施例中,運行參數信息包括當前在線用戶數和/或伺服器的CPU利用率、內存利用率、帶寬利用率或磁碟利用率等性能參數。根據伺服器的性能參數和所承擔的用戶數確定。具體地,例如,首先確定性能參數是否滿足預設閾值,當滿足時,不做分配。當不滿足時,則獲取伺服器的在線用戶數,當用戶數大於預設閾值時,則不做分配處理。需要說明的是,這裡對於判斷負載的情況僅作解釋和說明,不用於對本發明的限定。
其中,選取單元12根據應用標識以及應用版本進一步篩選時,根據應用標識確定可提供服務的伺服器;
判斷連接請求中所攜帶的應用版本是否為新版本;
當應用版本為舊版本時,獲取可提供服務的伺服器的運行參數;獲取可提供服務的伺服器的運行參數;根據運行參數計算伺服器的負載情況,並選取負載情況滿足預設條件的伺服器;
當應用版本為新版本時,則從可提供服務的伺服器中直接選取提供新版本服務的伺服器。
可知,通過選取單元12可以選擇對應的路由策略,並根據具體的路由策略智能的控制客戶端要連接的接入伺服器,實現APP的隔離,避免相互產生影響。同時,通過對版本信息進行驗證,實現灰度引流,有利於APP新版本的發布和維護。
反饋單元13,用於生成伺服器的路由列表,並將路由列表發送至所述客戶端,以便所述客戶端連接相應的伺服器。
具體地,反饋單元13在生成伺服器的路由列表時,列表中包括一條或者多條路由列表信息。該路由列表信息以域名的方式生成,每個域名相當於一個接入服務的集群。其中,返回的路由列表中,存在主備兩種類型的路由列表,便於實現線路故障後,實現冗餘,提高接通的成功率。
進一步地,本發明的一個實施例中,獲取單元11,還用於在選取單元12選取伺服器的同時,從緩存中獲取一條令牌token信息。該令牌信息中限定了客戶端訪問伺服器的時間信息。根據該令牌信息,客戶端實現與指定伺服器的信息交互。而反饋單元13,在反饋伺服器的路由列表時,將令牌信息與路由列表一併發送至客戶端中。
進一步地,本發明的一個實施例中,獲取單元11,還用於選取單元12選取伺服器的同時,從本地獲取預先存儲的訪問策略。該訪問策略用於客戶端訪問路由列表信息的策略。具體地,包括,每次每個地址的輪詢次數是多少;和/或每次所有路由地址訪問失敗後,間隔多久再次進行接口的訪問;和/或接口間隔訪問的最大次數是多少,之後均按照一定時間間隔進行訪問(比如一天);還可採用非固定間隔的形式。該訪問策略可以由用戶自行設定。而反饋單元13,在反饋伺服器的路由列表時,將訪問策略與路由列表一併發送至客戶端中。
具體地,一實施例中,客戶端在本地執行輪詢機制,逐個從本地路由列表中拼裝請求地址,進行請求操作。每個路由地址進行3次的請求操作,如請求失敗後,則進行下一個路由地址的請求操作。當所有的本地路由地址均輪詢過後,都不能訪問時,客戶端進行等待,超過3小時左右,再次請求路由伺服器,進行路由列表的獲取操作。如再次獲取到的路由列表,按照上述方式訪問同樣失敗,且失敗次數超過5次時,均按照每隔1天的時間段進行路由列表的請求操作。
基於上述可知,通過在路由伺服器配置客戶端的訪問策略,能夠實現更多樣化的客戶端訪問方式,做到服務端可控客戶端的訪問請求。此外,通過設置訪問策略在一定程度上減少客戶端對路由伺服器的請求,提高路由伺服器集群的吞吐量。
如圖3所示,本發明實施例中所提供的用於接入伺服器集群的路由服務方法,具體包括:
步驟301,當接收到客戶端的連接請求後,獲取連接請求所攜帶的信息;
步驟302,根據連接請求中所攜帶的信息選取伺服器集群中的伺服器;
步驟303,生成伺服器的路由列表,並將路由列表發送至客戶端,以便客戶端連接相應的伺服器。
本發明實施例所提供的用於伺服器集群的路由服務方法,通過獲取請求中所攜帶的信息選擇相應的路由策略;並根據相應的路由策略選擇所對應的伺服器。本發明根據請求中的請求信息選擇相應的路由策略,減輕了伺服器的負擔,確保伺服器能夠更有效地進行消息傳輸,提高了伺服器的處理效率;同時使得客戶端的請求快速得到響應,提升了用戶的體驗。
下面圖4和圖5對本發明中路由服務方法的各個步驟進行詳細說明。
步驟301,用於當接收到客戶端的連接請求後,獲取連接請求中所攜帶的信息。
在接收到客戶端的連接請求後,首先獲取連接請求中攜帶的校驗信息;由路由控制判斷校驗信息是否符合本地設置的預設要求;當符合,再進一步獲取連接請求中攜帶的請求信息;當判斷不符合時,則拒絕客戶端的請求,並向客戶端發送拒絕響應。
其中,在客戶端發送連接請求時,向路由伺服器發送Https請求。在該請求中攜帶的校驗信息,包括用戶參數、籤名、APP狀態中的一種或多種。
具體地,路由控制對連接請求中攜帶的校驗信息進行校驗時,包括:
當獲取客戶端的用戶參數後,判斷用戶參數是否存在本地預存的設備參數一致,若一致時,在繼續後續處理;用戶參數包括用戶名以及密碼;和/或,利用籤名對客戶端進行認證,當認證通過後,在進行後續處理。對於利用籤名的驗證過程已屬於領域技術人員所熟知的技術,這裡不再進行贅述。和/或,驗證APP的狀態信息,當APP處理離線狀態時,不需要對該連接請求進行處理,只有APP處於在線時,再進行後續處理。
進一步地,由路由策略服務提供路由的策略。具體的,獲取連接請求中所攜帶的信息包括應用標識、應用版本。其中,應用標識即APP的ID,根據該應用標識可以將APP相互隔離開,同時根據APP ID可以區分服務是否Push中控接入服務集群或是獨立APP接入服務集群提供服務。而應用版本信息是指APP的版本信息,APP系統中兩份不同的版本APP,一部分用戶使用新版本,一部分用戶採用舊版本。兩個版本同時提供服務。
步驟302,根據連接請求中攜帶的信息選擇伺服器集群中的伺服器。
獲取連接請求中所攜帶的信息,包括應用標識、應用版本、設備的唯一標識碼,這裡根據不同的信息選擇不同的路由策略,進而獲取所要提供服務的伺服器。
本發明一實施例中,首先根據設備的唯一標識碼篩選,接著再根據應用標識和應用版本進行篩選。
具體地,根據連接請求中攜帶的設備的唯一標識碼判斷所述設備是否需要升級;當判斷設備需要升級時,從伺服器集群中選取提供設備升級的伺服器即可;當判斷設備不需升級時,再根據應用情況進一步篩選。
其中,當只根據應用標識進一步篩選時,該方法包括:
根據應用標識確定可提供服務的伺服器。具體地,可以根據應用標識確定是由Push中控接入服務集群還是接入獨立APP接入服務集群提供服務。
獲取可提供服務的伺服器的運行參數;
根據運行參數計算所述伺服器的負載情況,並選取負載情況滿足預設條件的伺服器。
這裡,一實施例中,運行參數信息包括當前在線用戶數和/或伺服器的CPU利用率、內存利用率、帶寬利用率或磁碟利用率等性能參數。根據伺服器的性能參數和所承擔的用戶數確定。具體地,例如,首先確定性能參數是否滿足預設閾值,當滿足時,不做分配。當不滿足時,則獲取伺服器的在線用戶數,當用戶數大於預設閾值時,則不做分配處理。需要說明的是,這裡對於判斷負載的情況僅作解釋和說明,不用於對本發明的限定。
其中,當根據應用標識以及應用版本進一步篩選時,該方法包括:
根據應用標識確定可提供服務的伺服器;
判斷連接請求中所攜帶的應用版本是否為新版本;
當應用版本為舊版本時,獲取可提供服務的伺服器的運行參數;獲取可提供服務的伺服器的運行參數;根據運行參數計算伺服器的負載情況,並選取負載情況滿足預設條件的伺服器;
當應用版本為新版本時,則從可提供服務的伺服器中直接選取提供新版本服務的伺服器。
可知,本發明通過選擇對應的路由策略,根據具體的路由策略智能的控制客戶端要連接的接入伺服器,實現APP的隔離,避免相互產生影響。同時,通過對版本信息進行驗證,實現灰度引流,有利於APP新版本的發布和維護。
步驟303,生成伺服器的路由列表,並將所路由列表發送至所述客戶端,以便所述客戶端連接相應的伺服器。
由路由服務提供相應的服務。具體地,生成伺服器的路由列表時,列表中包括一條或者多條路由列表信息。該路由列表信息以域名的方式生成,每個域名相當於一個接入服務的集群。其中,返回的路由列表中,存在主備兩種類型的路由列表,便於實現線路故障後,實現冗餘,提高接通的成功率。
進一步地,一個實施例中,在選取伺服器後,從緩存中獲取一條令牌token信息。該令牌信息中限定了客戶端訪問伺服器的時間信息。根據該令牌信息,客戶端實現與指定伺服器的信息交互。在反饋伺服器的路由列表時,需要將令牌信息與路由列表一併發送至客戶端中。
進一步地,一個實施例中,在選取伺服器後,從本地獲取預先存儲的訪問策略。該訪問策略用於客戶端訪問路由列表信息的策略。具體地,包括,每次每個地址的輪詢次數是多少;和/或每次所有路由地址訪問失敗後,間隔多久再次進行接口的訪問;和/或接口間隔訪問的最大次數是多少,之後均按照一定時間間隔進行訪問(比如一天);還可採用非固定間隔的形式。該訪問策略可以由用戶自行設定。而在反饋伺服器的路由列表時,將訪問策略與路由列表一併發送至客戶端中。
基於上述可知,通過在路由伺服器配置客戶端的訪問策略,能夠實現更多樣化的客戶端訪問方式,做到服務端可控客戶端的訪問請求。此外,通過設置訪問策略在一定程度上減少客戶端對路由伺服器的請求,提高路由伺服器集群的吞吐量。
本發明實施例所提供的用於伺服器集群的路由伺服器及路由服務方法,通過獲取請求中所攜帶的信息選擇相應的路由策略;並根據相應的路由策略選擇所對應的伺服器,可有效減輕伺服器的負擔,確保伺服器能夠更有效地進行消息傳輸;通過在連接請求中配置版本信息以及設備的唯一標識碼信息,及時獲取使用灰度版本的客戶端,便於第一時間將相應的請求進行分流,提高了客戶端請求的響應速度,提升了用戶的體驗。
需要說明的是,在本文中,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句「包括一個……」限定的要素,並不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到上述實施例方法可藉助軟體加必需的通用硬體平臺的方式來實現,當然也可以通過硬體,但很多情況下前者是更佳的實施方式。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質(如ROM/RAM、磁碟、光碟)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,伺服器,空調器,或者網絡設備等)執行本發明各個實施例的方法。
以上僅為本發明的優選實施例,並非因此限制本發明的專利範圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護範圍內。