基於多層服務架構的高可用方法及系統與流程
2023-10-09 07:05:44 5
本發明涉及服務架構技術領域,具體涉及一種基於多層服務架構的高可用方法及系統。
背景技術:
將對外提供的服務分層,每一層的服務可以彼此獨立,也可以同時基於相同的基礎服務上。其中的任何一層都能提供正常的服務,同一個時間點用戶只能訪問其中的某一層服務。不同的服務層有優先級之分(優先級可以由服務管理員自定義),默認情況下給用戶提供的是最高優先級服務。同時可以根據需要手動或自動在不同層服務上進行切換。
但是現有技術具有以下缺點:
1、難以達到服務秒級切換;
2,難以做到多種不同的服務並存,並且靈活切換。
技術實現要素:
本發明解決了作為一個基礎服務的:高可用性、可擴展性、多樣性等複雜的技術問題。所謂高可用性(highavailability)通常來描述一個系統經過專門的設計,從而減少停工時間,而保持其服務的高度可用性。
本發明採用的技術方案是:
一種基於多層服務架構的高可用方法,所述多層服務至少有1層,包括以下步驟:
用戶通過公網地址請求服務;
用戶連接上公網地址後,通過負載均衡器設定的負載均衡策略將用戶請求分發到一臺路由器上;
路由器驗證用戶身份後,連接所有能用的服務並獲取服務數據,按照配置好的路由規則指定用戶對服務進行訪問。
進一步地,所述一種基於多層服務架構的高可用方法還包括以下步驟:
當用戶訪問的服務出現異常情況時,路由器根據設置的切換規則對用戶訪問的服務進行切換。
進一步地,所述路由器有n臺,n至少為1,路由器根據路由規則選擇對應的服務數據透傳給用戶。
進一步地,所述n臺路由器程序相同。
進一步地,所述路由規則具體為以下任意一種及以上:
對各層服務設置優先級,路由器首先選擇最高優先級的服務提供給用戶進行訪問;
禁止特定用戶訪問特定層服務;
指定用戶訪問特定層服務;
允許用戶訪問或者禁止用戶訪問特定層服務的指定區域。
進一步地,所述切換規則具體為以下任意一種及以上:
根據手動添加路由規則強制切換;
無數據自動切換,當最高優先級的服務出現異常情況時,自動切換到次優先級的服務上;
服務恢復切換,當最高優先級的服務由異常情況恢復正常後自動切換到最高優先級的服務。
一種基於多層服務架構的高可用系統,其特徵在於,包括至少1層服務、n臺路由器和負載均衡器,n至少為1,路由器前端與負載均衡器連接,後端與服務連接。
進一步地,用戶通過公網地址向負載均衡器發送請求服務,公網地址與負載均衡器綁定,負載均衡器按照設定的負載均衡策略將用戶請求分發到一臺路由器上。
進一步地,所述路由器包括服務選擇器和服務連接器,服務選擇器與服務連接器連接,路由器通過服務連接器與服務連接。
進一步地,路由器驗證用戶身份後,對用戶請求進行解析,服務選擇器根據路由規則選擇一層或者多層服務給用戶提供服務數據,服務連接器連接所有可用的的服務,並透傳一份服務數據給用戶。
本發明的有益效果如下:
1、不同層的服務切換達到秒級,用戶無感知;
2、在無法確認具體哪個版本最佳的情況下,可以把不同版本的服務部署成不同的服務層,通過實測對比來檢驗;
3、可以根據不同地區或時間段來提供不同的服務;
4、通過部署多層服務加上自動快速切換很好的解決了重點服務重點保障的問題,服務可用率可達99.999%以上。
附圖說明
圖1是本發明基於多層服務架構的高可用系統架構圖。
圖2是本發明基於多層服務架構的高可用方法流程圖。
圖3是實施例一部署單層服務示意圖。
圖4是實施例二部署兩層服務示意圖。
圖5是實施例三禁止訪問服務層示意圖。
具體實施方式
本發明提供了一種基於多層服務架構的高可用方法及系統,實現以下功能:1)實現服務高可用;2)讓多版服務本共存,可以進行在線對比,給用戶提供最佳的服務;3)實現重點業務的重點保障,重點區域的業務可以提供多層服務,加上自動切換功能,可以極大的提高可用性。下文中,結合附圖和實施例對本發明作進一步闡述。
圖1為本發明基於多層服務架構的高可用系統架構圖,所述系統至少有1層服務,以3層服務為例進行說明,服務1、服務2和服務3可以是三種不同的實現方式但提供相同或類似內容的服務。3個服務的優先級可以自定義,這裡優先級定義為:服務3>服務2>服務1。n臺路由器(router)通過負載均衡來對外提供服務,n至少為1,其中路由器最核心的是提供智能路由功能,可以配置不同的路由規則讓路由器給用戶提供不同的服務。路由器包括服務選擇器和服務連接器,服務選擇器與服務連接器連接,路由器前端與負載均衡器連接,後端通過服務連接器與服務連接。
圖2是本發明基於多層服務架構的高可用方法流程圖,包括以下步驟:
步驟a,用戶通過統一對外的公網地址來請求服務;
步驟b,用戶連接公網地址後,通過設定的負載均衡策略將其分發到某一臺路由器上;
步驟c,路由器驗證用戶身份後,對用戶請求進行解析,服務選擇器會根據用戶的請求信息和配置好的路由規則來選擇其中一層或多層服務給用戶提供服務數據,如果有多層則按照優先級來提供服務。
步驟d,路由器通過服務連接器連接後端所有篩選出來的服務,並且選擇最高優先級的服務提供給用戶,當最高優先級的服務出現異常情況時,會根據設置的切換規則自動切換到次優先級的服務層上,以實現秒級切換,切換過程用戶無感知。
路由規則如下:
給不同的服務層設置各自默認的優先級;
對某些用戶禁用某層服務;
將用戶指定到某層服務上;
允許用戶訪問或禁止訪問某層服務的指定區域。
切換規則如下:
根據手動添加路由規則強制切換;
無數據自動切換(比如5s無數據則切換到次優先級層服務上);
服務恢復切換(比如最高優先級服務由異常恢復正常後自動切換到最高優先級服務)。
實施例一,部署單層服務:
如圖3所示,部署n臺路由器(每臺路由器程序完全一樣,本發明通過java語言來實現路由器軟體)以預防路由器單點問題同時也是橫向擴展路由器的並發性能,路由器的前端是一個負載均衡器,對外的公網地址與負載均衡器綁定。路由器後端是提供數據的服務1。這裡部署了一層服務,就像普通的服務一樣。路由器的功能主要有:驗證用戶、請求解析、智能路由(由路由功能和服務選擇共同完成)、數據透傳等。
實施例二,部署兩層服務:
為了提高服務的高可用性或者給用戶提供更加的服務體驗,可以添加一層服務,如圖4所示。
服務2可以是服務1的變種或者是另一種實現方式,服務2和服務1兩種服務可以設置不同的優先級(比如優先級:服務2>服務1),如果不設置其他路由規則,則用戶首先訪問到的是服務2,當服務2出現異常時,則可以切換到服務1,這樣可以極大的提高總體服務的可用性。另外,服務2、服務1兩種服務的服務範圍可以不一致,這樣用戶能訪問的總體範圍是服務2並上服務1。當用戶請求服務時,路由器會替用戶去獲取後端所有能用的服務的數據,路由器會同時連接服務2、服務1,以確保能自動實現秒級切換功能,然後選擇其中的一份透傳(對數據不做任何處理,直接傳遞)給用戶。
實施例三,禁止用戶訪問服務
當有多層服務時,可以通過路由規則來指定用戶訪問哪一層服務,或者禁止訪問某幾層服務。例如,禁止用戶訪問服務2,如圖5所示,這樣路由器只會連接服務1,然後將服務1的數據透傳給用戶,當服務1出現異常情況時,用戶將無法正常獲取服務。
實施例四,部署多層服務
可以在實施例二的基礎上繼續添加多層服務。當部署了多層服務後,整體服務可用性得到了極大的提升。多層服務的方案尤其適合重點保障的業務或者重點服務區域。
本方案對計算機語言、軟體和硬體無特別要求,優選通過java語言實現。
本發明雖然已以較佳實施例公開如上,但其並不是用來限定本發明,任何本領域技術人員在不脫離本發明的精神和範圍內,都可以利用上述揭示的方法和技術內容對本發明技術方案做出可能的變動和修改,因此,凡是未脫離本發明技術方案的內容,依據本發明的技術實質對以上實施例所作的任何簡單修改、等同變化及修飾,均屬於本發明技術方案的保護範圍。