本發明涉及數據處理技術領域,尤其涉及一種業務處理方法及服務器。
背景技術:
“消息”是在兩臺計算機間傳送的數據單位。消息可以非常簡單,比如只包含文本字符串;也可以更復雜,比如可能包含嵌入對象。消息隊列(Message Queue,MQ)是在消息的傳輸過程中保存消息的容器。消息隊列管理器在將消息從它的源中繼到它的目標時充當中間人。消息隊列的主要目的是提供路由并保證消息的傳遞;如果發送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它。
市面上有很多消息隊列處理業務的解決方案,例如RabbitMQ、ZeroMQ、Kafka等。但是現有的消息隊列處理業務的方案針對所有類型的業務均是在消息隊列中先進先出(即按順序依次存入消息隊列,再從隊首進行處理)的方式進行處理,這種業務分配處理方式由于所有類型的業務均是按順序分配空閑的業務處理進程進行處理,業務處理沒有針對性,不能有效的對業務處理進程進行管理。
技術實現要素:
有鑒于此,本發明的目的在于提供一種業務處理方法及服務器,以解決目前消息隊列處理沒有針對性,不能有效的對業務處理進程進行管理的問題。
根據本發明的一個方面,提供的一種業務處理方法應用于服務器,該服務器中預設有至少一種類型的與客戶端交互數據的業務接口,該方法包括:
從預設的目標業務接口接收來自客戶端的業務請求數據包,并將業務請求數據包存入消息隊列中,目標業務接口對應目標業務類型;
在處理消息隊列的業務請求數據包時,根據目標業務類型確定處理業務請求數據包的目標業務處理進程分組,服務器中預設有與業務類型對應的業務處理進程分組;
在目標業務處理進程分組中選取業務處理進程對業務請求數據包進行處理,得到業務應答數據包,并將業務應答數據包返回給客戶端。
根據本發明的另一個方面,提供的一種服務器中預設有至少一種類型的與客戶端交互數據的業務接口,該服務器包括:
業務接收存儲單元,用于從預設的目標業務接口接收來自客戶端的業務請求數據包,并將業務請求數據包存入消息隊列中,目標業務接口對應目標業務類型;
業務處理單元,用于在處理消息隊列的業務請求數據包時,根據目標業務類型確定處理業務請求數據包的目標業務處理進程分組,服務器中預設有與業務類型對應的業務處理進程分組;在目標業務處理進程分組中選取業務處理進程對業務請求數據包進行處理,得到業務應答數據包;
發送單元,用于將業務應答數據包返回給客戶端。
本發明實施例通過從預設的目標業務接口接收來自客戶端的業務請求數據包,并將業務請求數據包存入消息隊列中;在處理消息隊列的業務請求數據包時,根據目標業務類型確定處理業務請求數據包的目標業務處理進程分組,在目標業務處理進程分組中選取業務處理進程對業務請求數據包進行處理,得到業務應答數據包,并將業務應答數據包返回給客戶端。由于目標業務接口對應目標業務類型,同時預設了處理不同業務類型業務的業務處理進程分組,可以將不同業務類型的業務請求數據包分配到對應的業務處理進程分組去進行處理,對業務和業務處理進程進行了劃分,因此可以根據業務處理進程分組有效的對業務的處理進行分配管理,提高了業務處理的針對性。
附圖說明
圖1為本發明實施例中消息隊列業務處理的架構示意圖;
圖2為本發明實施例提供的一種業務處理方法的流程圖;
圖3為本發明實施例實現業務處理方法的一個具體實施例的架構示意圖;
圖4為本發明實施例提供的另一種業務處理方法的流程圖;
圖5為本發明實施例中業務處理進程的屬性字段結構示意圖;
圖6為本發明實施例提供的一種注冊應用服務器的方法流程圖;
圖7為本發明實施例提供的一種服務器的模塊結構圖;
圖8為本發明實施例提供的另一種服務器的模塊結構圖;
圖9為本發明實施例中提供的再一種服務器的模塊結構圖;
圖10為本發明實施例中提供的又一種服務器的模塊結構圖;
圖11為本發明實施例中提供的又一種服務器的模塊結構圖;
圖12為本發明實施例中服務器的結構示意圖。
本發明目的的實現、功能特點及優點將結合實施例,參照附圖做進一步說明。
具體實施方式
為了使本發明所要解決的技術問題、技術方案及有益效果更加清楚、明白,以下結合附圖和實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
如圖1所示,為消息隊列中業務處理系統的架構示意圖,不同應用或者服務對應的客戶端作為業務的請求者(或者說業務的生產者),生成業務請求數據包,發送到服務器(業務的調度者)的業務接收存儲單元,業務接收存儲單元再將業務請求數據包存入消息隊列中,將該業務請求數據包分配到業務處理單元(業務的執行者)進行處理得到業務應答數據包,再將業務應答數據包返回給業務的請求者,即應用或服務的客戶端。本發明實施例中業務處理的消息隊列可以是基于Gearman架構,以Gearman架構為例,一個Gearman業務請求的處理過程涉及Client(客戶端)、Job Server(業務接入服務器)和Worker(應用服務進程)三個角色。其中,Client為業務的請求者,即圖1中的客戶端;Job Server為業務的調度者,即圖1中業務接收存儲單元,用來負責協調把Client發出的業務請求轉發給合適的Worker,Worker為業務的執行者,即圖1中的業務處理單元。本發明實施例中,業務的請求者可以為下文中描述的客戶端,該客戶端可以為web客戶端。
下面介紹本發明實施例中業務處理方法的實施例,該方法應用于服務器,該服務器可以是圖1中服務器,該服務器中預設有至少一種類型的與客戶端交互數據的業務接口,
請參閱圖2,為本發明實施例中業務處理方法的一個實施例示意圖,該方法包括:
S201、從預設的目標業務接口接收來自客戶端的業務請求數據包,并將業務請求數據包存入消息隊列中,其中,目標業務接口對應目標業務類型。
如圖3所示,以一個Gearman任務系統為例,為本發明實施例中服務器中一個Gearman任務系統進行業務處理的架構示意圖,該實施例中,服務器中預設有Web接入層業務接口、售賣系統業務接口、補單系統業務接口、運維系統業務接口,每個業務接口對應不同的業務類型,通過這些不同類型的業務接口分別接收不同來自Web接入層客戶端、售賣系統客戶端、補單系統業務系統客戶端以及運維系統客戶端的業務請求數據包,并存入消息隊列中。
S202、在處理消息隊列的業務請求數據包時,根據目標業務類型確定處理業務請求數據包的目標業務處理進程分組。
其中,服務器中預設有與業務類型對應的業務處理進程分組,根據業務類型查找對應的業務處理進程分組即可。
如圖3所示,還是以服務器中預設有Web接入層業務接口、售賣系統業務接口、補單系統業務接口和運維系統業務接口為例進行說明。服務器通過Web接入層業務接口、售賣系統業務接口、補單系統業務接口和運維系統業務接口分別接收來Web接入層系統、自售賣系統、補單系統業務系統以及運維系統的請求,每個接口對應一種業務類型。服務器將客戶端發送的業務請求數據包分配到對應的業務處理進程分組中進行處理。具體來說,將Web接入系統發送的業務請求數據包分配到Web接入進程分組中進行處理,將售賣系統發送的業務請求數據包分配到售賣進程分組中進行處理,將補單系統發送的業務請求數據包分配到補單進程分組中進行處理,將運維系統發送的業務請求數據包分配到運維進程分組中進行處理。
S203、在目標業務處理進程分組中選取業務處理進程對業務請求數據包進行處理,得到業務應答數據包,并將業務應答數據包返回給客戶端。
具體的,將業務請求數據包分配到具體的目標業務處理進程分組后,在目標業務處理進程分組選取業務處理進程對業務請求數據包進行處理,比如選取目標業務處理進程分組中較為空閑的業務處理進程進行處理,得到業務應答數據包,通過服務器的發送單元將業務應答數據包返回到對應的客戶端。
本發明實施例通過從預設的目標業務接口接收來自客戶端的業務請求數據包,并將業務請求數據包存入消息隊列中;在處理消息隊列的業務請求數據包時,根據目標業務類型確定處理業務請求數據包的目標業務處理進程分組,在目標業務處理進程分組中選取業務處理進程對業務請求數據包進行處理,得到業務應答數據包,并將業務應答數據包返回給客戶端。由于目標業務接口對應目標業務類型,同時預設了處理不同業務類型業務的業務處理進程分組,可以將不同業務類型的業務請求數據包分配到對應的業務處理進程分組去進行處理,對業務和業務處理進程進行了劃分,因此可以根據業務處理進程分組有效的對業務的處理進行分配管理,提高了業務處理的針對性。
如圖4所示,為了靈活配置業務接口,提高可擴展性,在另一些實施例中,步驟S201之前,還可以包括:
S200、注冊與客戶端交互數據的至少一種類型的業務接口,至少一種類型的業務接口中包括對應目標業務類型的目標業務接口。
具體的,還是以Gearman任務系統為例,Gearman任務系統中提供業務注冊功能,只需要在配置文件寫入封裝(package)路徑,系統就會在啟動時自動導入業務接口,同時注冊對應的業務接口名。
在本發明一些實施例中,在根據目標業務類型確定處理業務請求數據包的目標業務處理進程分組之前,該方法還包括:根據服務器中的業務接口,對服務器對應的可分配業務的業務處理進程進行業務處理進程分組。
其中,每種類型的業務接口對應一個業務處理進程分組,業務處理進程分組中的業務處理進程處理對應業務類型的業務接口中接收的業務請求數據包。
進一步的,根據服務器中的業務接口,對服務器對應的可分配業務的業務處理進程進行業務處理進程分組具體包括:
在將服務器對應的可分配業務的業務處理進程進行業務分組時,對業務處理進程配置屬性,屬性包括業務處理進程標識、業務處理進程分組標識和工作類型,業務處理進程分組標識對應業務類型。
相應的,根據目標業務類型確定處理業務請求數據包的目標業務處理進程分組具體包括:根據目標業務類型確定處理目標業務的業務處理進程分組標識;根據業務處理進程分組標識確定處理目標業務請求數據包的目標業務處理進程分組。如圖5所示,業務處理進程的屬性至少包括:業務處理進程標識、工作類型和業務處理進程分組標識等三個字段。其中,業務處理進程標識區分同一業務處理進程分組中的不同的業務處理進程,例如可以用序號1,2,…,n來標識。工作類型是指觸發工作的方式,包括block(對象)類型和timer(定時器)類型。例如,假設用type對業務處理進程的工作類型進行定義,則當type=block時表示當前業務處理進程的工作類型為block類型,當type=timer時表示當前業務處理進程的工作類型為timer類型。業務處理進程分組標識用于區分不同業務處理進程分組,業務處理進程分組標識對應業務類型。例如售賣系統業務處理進程分組以Sale標識,定時器系統業務處理進程分組以Timer標識,運維系統業務處理進程分組以Maintain標識。假設用group對業務處理進程所屬的業務處理進程分組標識進行定義,則當group=Sale時,表示當前業務處理進程所屬分組為售賣系統業務處理進程分組,當group=Timer時,表示當前業務處理進程所屬分組為定時器系統業務處理進程分組,當group=Maintain時,表示當前業務處理進程所屬分組為運維系統業務處理進程分組。
本發明實施例中,還可以對服務器中業務處理進程進行狀態監控,例如Gearman任務系統,業務處理進程會有很多實例在運行,針對服務器中worker進行狀態監控,Gearman任務系統中通過管理服務進程進行監控。例如業務處理進程異常退出就能自動拉起)對業務處理進程進行狀態監控、拉起。
本發明實施例中業務處理進程的調用支持同步調用和/或異步調用,具體的,即業務處理進程可以是一個服務器的,也可以是不同的服務器的,此時,一組業務處理進程可在服務器混合部署、獨占部署、多機部署。配置屬性包括業務處理進程數量,業務處理進程的工作類型,封裝路徑和日志等。本發明實施例中所描述的應用服務器可以是圖1中所述的服務器。進一步的,同一業務處理進程分組中業務處理進程包括同一應用服務器的業務處理進程,和/或,不同應用服務器的業務處理進程,例如,一個業務處理進程分組中的業務處理進程可以包括一個或多個應用服務器中的業務處理進程。
優選的,為了支持延時、定時回調定時任務,該方法還可以包括:
獲取對目標業務設定的定時執行的指令;
調用預設的定時器對目標業務進行注冊。
在達到定時器設定的時間時,分配業務處理進程處理目標業務對應的業務請求數據包。該分配方式可以與圖2中所描述的實施例中相同,此處不再贅述。
如圖6所示,為了能根據業務處理壓力對應用服務器進行動態配置,增加配置應用服務器處理業務,該方法還可以包括注冊應用服務器的步驟,具體包括:
S601、接收目標應用服務器的注冊請求,注冊請求中包括可分配處理業務的業務處理進程信息。
S602、根據注冊請求為目標應用服務器進行業務處理進程的分組配置。
S603、向目標應用服務器發送業務處理進程的分組配置信息。
其中分組配置信息中包括:目標應用服務器中每個業務處理進程的業務處理進程分組標識、業務處理進程的工作類型。
下面介紹本發明實施例中服務器的實施例。
請參閱圖7,為本發明實施例中服務器的一個實施例示意圖,服務器中預設有至少一種類型的與客戶端交互數據的業務接口,該服務器包括:
業務接收存儲單元10,用于從預設的目標業務接口接收來自客戶端的業務請求數據包,并將業務請求數據包存入消息隊列中,目標業務接口對應目標業務類型;
業務處理單元20,用于在處理消息隊列的業務請求數據包時,根據目標業務類型確定處理業務請求數據包的目標業務處理進程分組,服務器中預設有與業務類型對應的業務處理進程分組;在目標業務處理進程分組中選取業務處理進程對業務請求數據包進行處理,得到業務應答數據包。
發送單元30,用于將業務應答數據包返回給客戶端。
進一步的,如圖8所示,該服務器還包括:
業務接口注冊單元40,用于在從預設的目標業務接口接收來自客戶端的業務請求數據包之前,注冊與客戶端交互數據的至少一種類型的業務接口,至少一種類型的業務接口中包括對應目標業務類型的目標業務接口。
進一步的,如圖9所示,該服務器還包括:
業務處理進程分組單元50,用于在根據目標業務類型確定處理業務請求數據包的目標業務處理進程分組之前,根據服務器中的業務接口類型,對服務器對應的可分配業務的業務處理進程進行業務處理進程分組。
其中,每種類型的業務接口對應一個業務處理進程分組,業務處理進程分組中的業務處理進程處理對應業務類型的業務接口中接收的業務請求數據包。
進一步的,業務處理進程分組單元50具體用于:在將服務器對應的可分配業務的業務處理進程進行業務分組時,對業務處理進程配置屬性,屬性包括業務處理進程標識、業務處理進程分組標識和工作類型,業務處理進程分組標識對應業務類型。
相應的,業務處理單元20具體用于:根據目標業務類型確定處理目標業務的業務處理進程分組標識;根據業務處理進程分組標識確定處理目標業務請求數據包的目標業務處理進程分組。
進一步的,如圖10所示,該服務器還包括應用服務器注冊單元60,應用服務器注冊單元60具體用于:接收目標應用服務器的注冊請求,注冊請求中包括可分配處理業務的業務處理進程信息;根據注冊請求為目標應用服務器進行業務處理進程的分組配置;向目標應用服務器發送業務處理進程的分組配置信息。
其中,分組配置信息中包括:目標應用服務器中每個業務處理進程的業務處理進程分組標識、業務處理進程的工作類型。
進一步的,如圖11所示,為了支持延時、定時回調定時任務,該服務器還包括定時調度單元70,具體用于:獲取對目標業務設定的定時執行的指令;調用預設的定時器對目標業務進行注冊。在達到定時器設定的時間時,分配業務處理進程處理目標業務對應的業務請求數據包。該分配方式可以與圖2中所描述的實施例中相同,此處不再贅述。
圖12是本發明實施例提供的一種服務器結構示意圖,該服務器可因配置或性能不同而產生比較大的差異,可以包括一個或一個以上中央處理器(central processing units,CPU)922(例如,一個或一個以上處理器)和存儲器932,一個或一個以上存儲應用程序942或數據944的存儲介質930(例如一個或一個以上海量存儲設備)。其中,存儲器932和存儲介質930可以是短暫存儲或持久存儲。存儲在存儲介質930的程序可以包括一個或一個以上模塊(圖示沒標出),每個模塊可以包括對服務器中的一系列指令操作。更進一步地,中央處理器922可以設置為與存儲介質930通信,在服務器上執行存儲介質930中的一系列指令操作。
服務器還可以包括一個或一個以上電源926,一個或一個以上有線或無線網絡接口950,一個或一個以上輸入輸出接口958,和/或,一個或一個以上操作系統941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述實施例中由服務器所執行的步驟可以基于該圖12所示的服務器結構。
值得注意的是,上述實施例中,所包括的各個單元只是按照功能邏輯進行劃分的,但并不局限于上述的劃分,只要能夠實現相應的功能即可;另外,各功能單元的具體名稱也只是為了便于相互區分,并不用于限制本發明的保護范圍。
本發明實施例的服務器,通過從預設的目標業務接口接收來自客戶端的業務請求數據包,并將業務請求數據包存入消息隊列中;在處理消息隊列的業務請求數據包時,根據目標業務類型確定處理業務請求數據包的目標業務處理進程分組,在目標業務處理進程分組中選取業務處理進程對業務請求數據包進行處理,得到業務應答數據包,并將業務應答數據包返回給客戶端。由于目標業務接口對應目標業務類型,同時預設了處理不同業務類型業務的業務處理進程分組,可以將不同業務類型的業務請求數據包分配到對應的業務處理進程分組去進行處理,對業務和業務處理進程進行了劃分,因此可以根據業務處理進程分組有效的對業務的處理進行分配管理,提高了業務處理的針對性。
本領域普通技術人員可以理解實現上述各方法實施例中的全部或部分步驟是可以通過程序來指令相關的硬件完成,相應的程序可以存儲于一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。
以上僅為本發明較佳的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明實施例揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求的保護范圍為準。