本發(fā)明涉及一種路由方法以及裝置,尤其涉及跨集群服務的路由方法以及裝置。
背景技術:
在現(xiàn)有的面向服務的體系結(jié)構(gòu)(SOA)服務治理方案中,分布調(diào)用框架中為了針對數(shù)據(jù)量的不斷提升會采用集群部署的方式來進行系統(tǒng)的擴展。對于集群的擴展目前的技術主要是在NGINX(一種高性能的服務器)這一層來配置處理請求到不同的TOMCAT(一種免費的開放源代碼的應用服務器)來達到可以路由的功能。
面對高并發(fā)、大數(shù)據(jù)量的網(wǎng)站以及大型的企業(yè)級應用系統(tǒng),通過搭建集群的方式來分擔流量,提高數(shù)據(jù)存儲量是一種比較好的解決方案,是通過對集群的NGINX層編寫路由的方法,通過某一特征來進行路由到不同的TOMCAT上,達到集群路由的目的。
圖5為表示現(xiàn)有技術中的跨集群路由的流程圖。目前采用的方法是在NGINX層來根據(jù)路由規(guī)則路由到不同集群的TOMCAT中,再通過集群內(nèi)部的服務請求調(diào)用服務來達到跨集群路由的目的。
當本系統(tǒng)需要對外提供WEBSERVICE(一種獨立的、低耦合的、自包含的、基于可編程的應用程序)服務,或者提供一些接口服務給其它系統(tǒng)調(diào)用的時候,這些請求會不經(jīng)過NGINX和TOMCAT而直接通過服務的形式來進行調(diào)用。即在現(xiàn)有的路由方法以及裝置中,存在以下的問題:(1)如果需要發(fā)布接口給外部調(diào)用的時候,沒有辦法來實現(xiàn)路由;(2)如果發(fā)布的是WEBSERVICE服務的時候同樣沒有辦法來實現(xiàn)路由。這時候現(xiàn)有的技術方案就不能解決上述問題,需要重新考慮一種方案來解決以上的問題。
技術實現(xiàn)要素:
本申請發(fā)明正是基于上述技術問題而提出的,其目的在于提供一種能夠解決當跨集群的系統(tǒng)需要對外提供WEBSERVICE服務,或者提供一些接口服務給其它系統(tǒng)調(diào)用的時候,現(xiàn)有技術沒有辦法進行處理的服務的路由問題的跨集群服務的路由方法以及裝置。
根據(jù)本發(fā)明的一個方面的跨集群服務的路由方法,包括:接收從外部系統(tǒng)發(fā)出的調(diào)用本系統(tǒng)的服務的命令;配置路由表并寫入到數(shù)據(jù)庫路由表中,同時將數(shù)據(jù)庫路由表存入緩存器中;定義需要路由的接口,并提供路由的方法,決定需要路由的接口的參數(shù)和需要路由的數(shù)據(jù)的參數(shù);根據(jù)所決定的需要路由的接口的參數(shù)和需要路由的數(shù)據(jù)的參數(shù)建立一個路由中心服務,并注冊所有需要路由的接口;在路由中心服務中調(diào)用路由的方法,從數(shù)據(jù)庫路由表中找到需要調(diào)用的對應的集群組;和根據(jù)所找到的需要調(diào)用的對應的集群組得到對應集群組的服務的別名,調(diào)用相關的集群組內(nèi)部的服務來實現(xiàn)路由。
根據(jù)本發(fā)明的一個方面的跨集群服務的路由方法,還包括:在每次調(diào)用時進行調(diào)用的監(jiān)控和數(shù)據(jù)統(tǒng)計。
根據(jù)本發(fā)明的一個方面的跨集群服務的路由方法,還包括:判斷調(diào)用服務是否成功;如果調(diào)用服務成功,則將調(diào)用服務成功的信息返回到外部系統(tǒng)。
根據(jù)本發(fā)明的一個方面的跨集群服務的路由方法,在調(diào)用服務中,采用服務應用程序編程接口的方式來調(diào)用相關的集群組內(nèi)部的服務。
根據(jù)本發(fā)明的一個方面的跨集群服務的路由方法,在數(shù)據(jù)庫路由表中配置數(shù)據(jù)與集群組相對應的關系。
根據(jù)本發(fā)明一個方面的跨集群服務的路由方法,對應集群組的服務的別名是用來區(qū)分不同的集群的。
根據(jù)本發(fā)明的一個方面的跨集群服務的路由裝置,包括:接收調(diào)用服務的命令單元,接收從外部系統(tǒng)發(fā)出的調(diào)用本系統(tǒng)的服務的命令;配置路由表單元,配置路由表并寫入到數(shù)據(jù)庫路由表中,同時將數(shù)據(jù)庫路由表存入緩存器中;決定參數(shù)單元,定義路由的接口,并確定路由的方法,決定需要路由的接口的參數(shù)和需要路由的數(shù)據(jù)的參數(shù);建立路由中心服務單 元,根據(jù)所決定的需要路由的接口的參數(shù)和需要路由的數(shù)據(jù)的參數(shù)建立一個路由中心服務,并注冊所有需要路由的接口;接口的路由實現(xiàn)單元,調(diào)用路由的方法,從數(shù)據(jù)庫路由表中找到需要調(diào)用的對應的集群組;和調(diào)用服務單元,根據(jù)所找到的需要調(diào)用的對應的集群組得到對應集群組的服務的別名,調(diào)用相關的集群組內(nèi)部的服務來實現(xiàn)路由。
根據(jù)本發(fā)明的一個方面的跨集群服務的路由裝置,還包括:監(jiān)控和數(shù)據(jù)統(tǒng)計的單元,在每次調(diào)用時進行調(diào)用的監(jiān)控和數(shù)據(jù)統(tǒng)計。
根據(jù)本發(fā)明的一個方面的跨集群服務的路由裝置,還包括:判斷調(diào)用成功的單元,判斷調(diào)用服務是否成功;和返回信息單元,如果調(diào)用服務成功,則將調(diào)用服務成功的信息返回到外部系統(tǒng)。
根據(jù)本發(fā)明的一個方面的跨集群服務的路由裝置,在調(diào)用服務單元中,采用服務應用程序編程接口的方式來調(diào)用相關的集群組內(nèi)部的服務。
根據(jù)本發(fā)明的一個方面的跨集群服務的路由裝置,在數(shù)據(jù)庫路由表中配置數(shù)據(jù)與集群組相對應的關系。
根據(jù)本發(fā)明的一個方面的跨集群服務的路由裝置,對應集群組的服務的別名是用來區(qū)分集群的。
綜上所述,本申請發(fā)明通過添加一層路由層,將需要路由的接口在路由層有個路由的實現(xiàn),然后把該路由的實現(xiàn)發(fā)布為外部需要調(diào)用的接口。通過路由層來去調(diào)用集群內(nèi)的服務達到路由的目的。本申請發(fā)明的跨集群服務的路由方法以及裝置,能夠在外部系統(tǒng)調(diào)用本系統(tǒng)的服務的情況下,實現(xiàn)跨集群的服務路由功能,對外提供標準一致的接口,并且可以對路由的接口進行監(jiān)控服務的調(diào)用情況。
附圖說明
圖1是表示本申請發(fā)明的跨集群路由方法的整體流程示意圖。
圖2是表示本申請發(fā)明的跨集群路由方法的流程圖。
圖3是表示本申請發(fā)明的數(shù)據(jù)庫路由表的具體配置的例子。
圖4是表示本申請發(fā)明的跨集群路由裝置的整體示意圖。
圖5是表示現(xiàn)有技術的系統(tǒng)內(nèi)部的跨集群路由方法的整體流程示意圖。
具體實施方式
以下參照附圖對本申請發(fā)明的實施方式進行說明。
圖1是表示本申請發(fā)明的跨集群路由方法的整體示意圖。為了便于說明,以兩個集群組、兩個應用以及兩個應用服務器(例如目前應該較為廣泛的TOMCAT等)為例,當然本申請發(fā)明也可以適用于兩個以上的集群組、應用以及應用服務器的情況。
如圖1所示,首先,從作為需要從外部調(diào)用本系統(tǒng)的服務的外部系統(tǒng)發(fā)出調(diào)用本系統(tǒng)的服務的命令,這里的服務可以是接口服務,也可以是WEBSERVICE服務,或者是兩者兼有的服務,本系統(tǒng)接收從外部系統(tǒng)發(fā)出的調(diào)用本系統(tǒng)的服務的命令。
接著,對調(diào)用服務的命令進行響應,在運維端配置路由表,并將該路由表寫入到數(shù)據(jù)庫路由表中。寫入到數(shù)據(jù)庫路由表中的路由配置內(nèi)容作為路由規(guī)則被同時存儲于緩存器(例如Redis)中進行緩存。關于數(shù)據(jù)庫路由表的路由配置的具體內(nèi)容如圖3的示例所示,具體地規(guī)定了數(shù)據(jù)與集群組號之間的對應關系,例如數(shù)據(jù)A與集群組1相對應,數(shù)據(jù)B與集群組2相對應。當然數(shù)據(jù)庫路由表中的路由配置并不限于以上的例子,可以根據(jù)具體的情況設置兩個以上或者與上述例子不同的對應關系。
然后,在運維端根據(jù)路由表的配置定義需要路由的接口,即規(guī)定需要路由的接口,并確定路由的方法(例如在為訂單接口的情況下,是進行接受訂單的路由還是取消訂單的路由),決定需要路由的接口的參數(shù)和需要路由的數(shù)據(jù)的參數(shù),例如傳入庫房號:001到第一個集群,傳入庫房號002到第二個集群。
然后,根據(jù)上述所決定的需要路由的接口的參數(shù)和需要路由的數(shù)據(jù)的參數(shù),建立一個路由中心服務,注冊所有需要路由的接口。在這個路由中心服務中實現(xiàn)需要路由的接口的服務,具體地來說調(diào)用之前所確定的路由的方法,根據(jù)上述的需要路由的數(shù)據(jù)的參數(shù),按照數(shù)據(jù)庫路由表中的數(shù)據(jù)與集群組號之間的對應關系找到需要調(diào)用的對應的集群組。
接下來,根據(jù)所找到的需要調(diào)用的對應的集群組得到對應集群的服務的別名(例如別名:cluster1,cluster2等),調(diào)用相關的集群組內(nèi)部的服 務來實現(xiàn)路由,例如可以采用服務應用程序編程接口(API)的方式來調(diào)用相關的集群組內(nèi)部的服務來實現(xiàn)路由。
通過以上的步驟,圖1中的路由服務中心中的應用1和應用2分別通過路由服務調(diào)用到兩個集群組中的兩個對應的應用1和應用2的服務。
此外,在每次進行服務調(diào)用的時候,可以進行調(diào)用的監(jiān)控和數(shù)據(jù)統(tǒng)計,具體地來說對調(diào)用的情況進行監(jiān)控(例如監(jiān)控調(diào)用方法的時間以及調(diào)用的次數(shù)等,調(diào)用方法的時間例如為10毫秒,調(diào)用的次數(shù)例如為1分鐘400次),并對調(diào)用的數(shù)據(jù)進行統(tǒng)計(例如統(tǒng)計某個方法的調(diào)用次數(shù),例如統(tǒng)計結(jié)果為1天的某個方法的調(diào)用次數(shù)為1300次,其中15次調(diào)用失敗,20次有調(diào)用延遲等)。
最后,根據(jù)調(diào)用的監(jiān)控情況和數(shù)據(jù)統(tǒng)計結(jié)構(gòu)判斷調(diào)用服務是否成功,如果調(diào)用服務成功,則將調(diào)用成功信息返回到外部系統(tǒng),如果調(diào)用服務沒有成功則返回到步驟S2,反復上述的步驟。
從而,通過本實施方式的跨集群路由的方法,建立了多集群的應用架構(gòu)部署,在外系統(tǒng)請求調(diào)用本系統(tǒng)的服務的時候,通過路由服務對外發(fā)布和集群接口相同的服務。當請求到路由服務的時候,根據(jù)路由規(guī)則調(diào)用大集群內(nèi)應用的服務達到調(diào)用服務的功能,集群內(nèi)服務接口接受調(diào)用后業(yè)務處理,從而實現(xiàn)了外部系統(tǒng)的跨集群路由。
在此,上述實施方式僅是為了說明本發(fā)明的一個示例,雖然例示的是兩個集群組、兩個應用以及兩個應用服務器(例如目前應該較為廣泛的TOMCAT等),但不局限于此,可以為任意數(shù)目。此外,作為緩存器例示的是Redis,但不局限于此,實際上可以是任意的緩存器。
以下,針對本發(fā)明的實施方式的跨集群路由方法的各個步驟進行詳細說明。
圖2是表示本申請發(fā)明的跨集群路由方法的流程圖。
首先,外部系統(tǒng)發(fā)出調(diào)用本系統(tǒng)的服務的命令,本系統(tǒng)接收從外部系統(tǒng)發(fā)出的調(diào)用本系統(tǒng)的服務的命令(步驟S1),接到該命令之后,執(zhí)行配置路由表步驟S2。具體而言,在運維端配置路由表并寫入到數(shù)據(jù)庫路由表中,同時將數(shù)據(jù)庫路由表存入到緩存器中進行緩存。
接下來,執(zhí)行決定參數(shù)步驟S3,具體而言,根據(jù)路由表的配置定義需 要路由的接口,并提供路由的方法,決定需要路由的接口的參數(shù)和需要路由的數(shù)據(jù)的參數(shù)。
接下來,執(zhí)行建立路由中心服務步驟S4,根據(jù)所決定的需要路由的接口的參數(shù)和需要路由的數(shù)據(jù)的參數(shù)建立一個路由中心服務,并注冊所有需要路由的接口。
接下來,執(zhí)行接口的路由實現(xiàn)步驟S5,在路由中心服務中調(diào)用路由的方法,從數(shù)據(jù)庫路由表中找到需要調(diào)用的對應的集群組。
接下來,執(zhí)行調(diào)用服務步驟S6,根據(jù)所找到的需要調(diào)用的對應的集群組得到對應集群組的服務的別名,調(diào)用相關的集群組內(nèi)部的服務來實現(xiàn)路由。
接下來,在每次調(diào)用中可以進行調(diào)用的監(jiān)控和數(shù)據(jù)統(tǒng)計(步驟S7)。
接下來,根據(jù)監(jiān)控的情況和數(shù)據(jù)統(tǒng)計的結(jié)果來判斷調(diào)用是否成功(步驟S8),如果判斷為調(diào)用成功,則將調(diào)用成功的信息發(fā)送到外部系統(tǒng)(步驟S9)。如果調(diào)用失敗,則返回到步驟S2。
此外,本實施方式的上述技術方案雖然按照上述的步驟順序來進行,但毋容置疑,當然也可以以與上述不同的步驟順序來執(zhí)行。另外,本實施方式的上述技術方案雖然是以步驟流程的方式進行說明的,但毋容置疑,上述技術方案同樣可以通過硬件結(jié)構(gòu)來實現(xiàn)。
圖3是本發(fā)明的實施方式的跨集群服務的路由裝置的功能框圖。
如圖3所示,本實施方式的跨集群服務的路由裝置100包括:接收調(diào)用服務的命令單元101;配置路由表單元102;決定參數(shù)單元103;建立路由中心服務單元104;接口的路由實現(xiàn)單元105以及調(diào)用服務單元106。
首先,接收調(diào)用服務的命令單元101接收從外部系統(tǒng)發(fā)出的調(diào)用本系統(tǒng)的服務的命令之后,配置路由表單元102執(zhí)行配置路由表,具體而言,在運維端配置路由表并寫入到數(shù)據(jù)庫路由表中,同時將數(shù)據(jù)庫路由表存入到緩存器中進行緩存。接下來,決定參數(shù)單元103根據(jù)路由表的配置定義需要路由的接口,并提供路由的方法,決定需要路由的接口的參數(shù)和需要路由的數(shù)據(jù)的參數(shù)。
接下來,建立路由中心服務單元104根據(jù)所決定的需要路由的接口的參數(shù)和需要路由的數(shù)據(jù)的參數(shù)建立一個路由中心服務,并注冊所有需要路 由的接口。
接下來,接口的路由實現(xiàn)單元105中,具體實現(xiàn)的接口需要繼承路由的接口,在路由中心服務中調(diào)用路由的方法,從數(shù)據(jù)庫路由表中找到需要調(diào)用的對應的集群組。
接下來,調(diào)用服務單元106,根據(jù)所找到的需要調(diào)用的對應的集群組得到對應集群組的服務的別名,調(diào)用相關的集群組內(nèi)部的服務來實現(xiàn)路由。
這樣,本實施方式的跨集群服務的路由裝置也能夠同樣獲得與采用上述跨集群服務的路由方法所獲得的技術效果相同的技術效果。
以上所述的具體實施例,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。