專利名稱:一種使b/s系統(tǒng)具有分布式特性的方法
技術領域:
本發(fā)明涉及Β/S系統(tǒng),尤其是一種使B/S系統(tǒng)具有分布式特性的方法。
背景技術:
在目前的電信行業(yè),運營支撐系統(tǒng)業(yè)務服務運營多為Β/S (瀏覽器端/服務器端) 結構,一般是利用Java EE進行開發(fā)的,其中的Java EE是Java的一種標準,是Java平臺企業(yè)版的簡稱(Java Platform, Enterprise Edition),用于開發(fā)便于組裝、健壯、可擴展、 安全的服務器端Java應用。傳統(tǒng)Β/S (瀏覽器端/服務器端)系統(tǒng)工作過程是用戶利用瀏覽器端訪問業(yè)務,由服務器端對不同業(yè)務進行處理后返回給對應的用戶所在瀏覽器端從而完成信息的傳遞??梢娫趥鹘y(tǒng)的Β/S結構中,業(yè)務處理中的只有小部分事務邏輯是在瀏覽器端實現(xiàn)的,大部分的事務邏輯都是在服務器端實現(xiàn)的,根本談不上負載均衡。同時,隨著電信業(yè)中業(yè)務量的提高,訪問量和數(shù)據(jù)流量的快速增長,電信運營商要求業(yè)務處理系統(tǒng)不僅要達到負載均衡,還要具有容災、可擴展和易于維護的能力,比如當系統(tǒng)內局部出現(xiàn)故障時,可以對故障部分單獨進行維護,而不影響其他業(yè)務的正常運行;添加新業(yè)務功能時,只需對該業(yè)務進行單獨部署而避免影響系統(tǒng)其它功能的正常運行。以上這些要求都意味著Β/S系統(tǒng)應當具有分布式特性。但是對現(xiàn)有技術中利用Java EE開發(fā)的Β/S系統(tǒng),添加新的特性通常需要重新添加代碼并進行的硬件升級,成本昂貴,耗時嚴重。
發(fā)明內容
本發(fā)明的目的在于提供一種使Β/S系統(tǒng)具有分布式特性的方法,實現(xiàn)利用Java EE讓Β/S在不修改任何代碼的前提下實現(xiàn)分布式特性。
本發(fā)明解決上述技術問題的技術方案如下一種使Β/S系統(tǒng)具有分布式特性的方法, 包括
步驟Si、將Β/S系統(tǒng)中的服務器端拆分為客戶端和后臺服務端,所述后臺服務端包括子服務器;
步驟S2、在所述客戶端和所述后臺服務端之間設置路由端,該路由端包括路由信息表。通過將原有Β/S系統(tǒng)中的服務器端拆分為客戶端和后臺服務端,使傳統(tǒng)Β/S系統(tǒng)中服務器端在運行時達到服務提供和服務消費解耦合,從而實現(xiàn)分布式。在客戶端和后臺服務端之間添加路由端可以實現(xiàn)負載均衡。進一步地,步驟Sl還包括以下子步驟 S11、將業(yè)務處理模塊部署到所述子服務器中。將不同業(yè)務進一步拆分為更小的業(yè)務處理模塊,并在后臺服務端進行模塊化分布,可以提高系統(tǒng)的并行能力。進一步地,步驟Sl還包括以下子步驟512、在所述客戶端設置代理機制;
513、在所述后臺服務端設置反射機制。代理機制和反射機制屬于Java中的常用方法,代理機制(Proxy)是為其他對象提供一種代理以控制對這個對象的訪問,在本發(fā)明中相當于客戶端和后臺服務端之間的網(wǎng)關或轉發(fā)中介;反射機制(Reflection)是動態(tài)獲取的信息以及動態(tài)調用對象的方法,在本發(fā)明中后臺服務端可以依靠反射機制調用本地的業(yè)務處理模塊來完成業(yè)務處理。代理機制和反射機制的運用使得客戶端與后臺服務端之間實現(xiàn)解耦合,并且增加了客戶端和后臺服務端之間的透明性。進一步地,步驟S2還包括以下子步驟
S21、將所述業(yè)務處理模塊在所述子服務器上的部署信息存儲在所述路由信息表中。通過路由端的路由信息表可以查找到業(yè)務請求所對應的業(yè)務處理模塊的部署信息,為提供路由服務提供保障。優(yōu)選地,所述代理機制為動態(tài)代理方式。動態(tài)代理(Dynamic Proxy)是運行時才生成代理的方式,通過這種方式,被代理的對象、需要控制的接口和控制方式都可以在運行時改變,比無法適應運行時的改變的靜態(tài)代理更具有靈活性。而且,所述動態(tài)代理方式采用的是Cglib。Cglib采用的是ASM字節(jié)碼工具直接修改字節(jié)碼而產(chǎn)生的代理,不需依賴于代理對象的接口,因此應用限制較少。進一步地,所述步驟Sll還包括以下子步驟
S110、將每種所述業(yè)務處理模塊部署到至少兩個所述子服務器中。所述部署信息包括業(yè)務處理模塊的域名稱、承載的業(yè)務標識、所在子服務器信息。當業(yè)務處理模塊所在的其中一個子服務器發(fā)生故障時,不會影響其他子服務器上的該業(yè)務處理模塊對業(yè)務的正常處理。通過將原有B/S系統(tǒng)中的服務器端拆分為客戶端和后臺服務端,實現(xiàn)了系統(tǒng)的分布式部署,在客戶端和后臺服務端之間添加路由端實現(xiàn)了負載均衡,而且實現(xiàn)過程不需修改B/S系統(tǒng)的大量代碼,只需要將原有系統(tǒng)中的配置文件做簡單的修改即可輕松完成,節(jié)省了大量的人力物力,有效控制了優(yōu)化成本。
圖1為本發(fā)明的方法流程圖2為本發(fā)明所實現(xiàn)的分布式示意圖。
具體實施例方式以下結合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。根據(jù)圖1所示,本發(fā)明提供了一種使B/S系統(tǒng)具有分布式特性的方法,包括 步驟Si、將B/S系統(tǒng)中的服務器端拆分為客戶端和后臺服務端,所述服務端包括子服
務器;步驟S2、在所述客戶端和所述后臺服務端之間設置路由端,該路由端包括路由信息表。傳統(tǒng)的B/S系統(tǒng)中,服務器端既要接收并分析瀏覽器發(fā)送來的用戶請求,又要對分析后的用戶請求進行處理,返回處理結果。它同時擔任了服務消費者和服務提供者這兩種角色。二者在傳統(tǒng)B/S系統(tǒng)中無法互相獨立地完成各自的功能,耦合度很高。因此,本發(fā)明將二者拆分為兩個功能區(qū),由客戶端負責接收來自瀏覽器發(fā)送來的用戶業(yè)務請求,經(jīng)過客戶端將請求信息封裝起來,再通過http傳遞到后臺服務端,后臺服務端則負責接收該業(yè)務請求并按請求進行業(yè)務處理,將處理結果通過http返回給客戶端。其中,客戶端可以包括多個客戶機,不同種類的業(yè)務請求可以由不同的客戶機進行接收和分析,而后臺服務端也可以劃分為多個的子服務器,用來分別處理不同種類的業(yè)務。比如,在圖2中分別將經(jīng)營分析業(yè)務、渠道管理業(yè)務、用戶管理業(yè)務由客戶端的經(jīng)營分析客戶機、渠道管理客戶機、用戶管理客戶機分別進行接收和分析,在后臺服務端由經(jīng)營分析子服務器、渠道管理子服務器、用戶管理子服務器對業(yè)務進行分別處理。http是超文本傳輸協(xié)議,是常用的終端之間請求和應答的標準。因此,進一步地,步驟Sl還包括子步驟S11、將業(yè)務處理模塊部署到所述子服務器中。例如,將用戶關系業(yè)務處理模塊部署到承載用戶關系子服務器中;將渠道管理業(yè)務處理模塊部署到承載渠道管理子服務器中。這樣就從功能上實現(xiàn)了服務提供者從一到多的分布式部署,降低了傳統(tǒng)B/S系統(tǒng)服務器端的耦合度。步驟S2、在所述客戶端和所述后臺服務端之間設置路由端,該路由端包括路由信息表。步驟S2還包括以下子步驟S21、將所述業(yè)務處理模塊在所述子服務器上的部署信息存儲在所述路由信息表中。其中,部署信息包括業(yè)務處理模塊的域名稱、承載的業(yè)務標識、 所在子服務器信息。例如,經(jīng)營分析業(yè)務處理模塊的域名稱為“經(jīng)營分析”;為該業(yè)務處理模塊添加一個Bean時,所命名的Bean ID就是承載的業(yè)務標識(其中Bean是Java中的一個標準,屬于公知技術);所在子服務器信息包括業(yè)務處理模塊部署的子服務器上的地址和子服務器的名稱、標識等。子服務器信息與域名稱、承載的業(yè)務標識之間在路由信息表內具有映射關系。路由端通過路由信息表向客戶端提供了向后臺服務端傳遞數(shù)據(jù)的指向,幫助客戶端找到業(yè)務請求所應該到達的目的地。進一步地,步驟Sl還包括以下子步驟
512、在所述客戶端設置代理機制;
513、在所述后臺服務端設置反射機制。其中,所述代理機制為動態(tài)代理方式。代理機制(Proxy)是為其他對象提供一種代理以控制對這個對象的訪問;反射機制(Reflection)是動態(tài)獲取的信息以及動態(tài)調用對象的方法的機制,就是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法,對于任意一個對象,都能夠調用它的任意一個方法。代理機制在本發(fā)明中相當于客戶端和后臺服務端之間的網(wǎng)關或轉發(fā)中介,客戶端通過代理機制將業(yè)務請求先傳遞給路由端,路由端根據(jù)業(yè)務請求查找路由信息表,輪詢返回部署該業(yè)務的子服務器信息,然后客戶端根據(jù)返回的子服務器信息,將業(yè)務請求直接發(fā)送到后臺服務端相應的子服務器上,該子服務器收到該請求后通過反射機制調用相應的業(yè)務處理模塊,將處理結果數(shù)據(jù)傳回給客戶端并通知用戶所在的瀏覽器端。后臺服務端上的子服務器傳遞業(yè)務請求,后臺服務端也通過代理機制向客戶端返回業(yè)務處理結果。
代理根據(jù)創(chuàng)建時間的不同,分為靜態(tài)代理和動態(tài)代理(Dynamic Proxy),靜態(tài)代理是由程序員創(chuàng)建或特定工具自動生成源代碼,在程序運行前,代理類的.class文件就已經(jīng)存在了,動態(tài)代理(Dynamic Proxy)是程序運行時動態(tài)創(chuàng)建,通過這種方式,被代理的對象、 需要控制的接口和控制方式都可以在運行時改變,比無法適應運行時的改變的靜態(tài)代理更具有靈活性,而且無需程序員手工編寫它的代碼,省去了編程工作,而且提高了可擴展性, 符合實現(xiàn)分布式特性的要求。其中,動態(tài)代理優(yōu)選地采用的是Cglib。Cglib采用的是ASM字節(jié)碼工具直接修改字節(jié)碼而產(chǎn)生的代理,Cglib可以代理沒有實現(xiàn)接口的繼承的類,由于Cglib不是基于接口的,效率較高,使用較靈活,因此應用限制較少。代理機制和反射機制屬于Java語言中常用的設計方法,屬于本領域技術人員的公知技術。進一步地,所述步驟Sll還包括以下子步驟,S110、將每種所述業(yè)務處理模塊部署到至少兩個所述子服務器中。通過服務分發(fā)的方式來分配業(yè)務處理請求,即使其中個別子服務器出現(xiàn)故障,也不會影響該業(yè)務在其他子服務器上的正常處理能力。上文中的耦合可以理解為實體與實體之間的依賴性。相互依賴性較強就是緊耦合,反之就是松耦合。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種使B/S系統(tǒng)具有分布式特性的方法,其特征在于,包括步驟Si、將B/S系統(tǒng)中的服務器端拆分為客戶端和后臺服務端,所述后臺服務端包括子服務器;步驟S2、在所述客戶端和所述后臺服務端之間設置路由端,該路由端包括路由信息表。
2.根據(jù)權利要求1所述的使B/S系統(tǒng)具有分布式特性的方法,其特征在于,步驟Sl還包括以下子步驟511、將業(yè)務處理模塊部署到所述子服務器中。
3.根據(jù)權利要求1所述的使B/S系統(tǒng)具有分布式特性的方法,其特征在于,步驟Sl還包括以下子步驟512、在所述客戶端設置代理機制;513、在所述后臺服務端設置反射機制。
4.根據(jù)權利要求2所述的使B/S系統(tǒng)具有分布式特性的方法,其特征在于,步驟S2還包括以下子步驟S21、將所述業(yè)務處理模塊在所述子服務器上的部署信息存儲在所述路由信息表中。
5.根據(jù)權利要求3所述的使B/S系統(tǒng)具有分布式特性的方法,其特征在于, 所述代理機制為動態(tài)代理方式。
6.根據(jù)權利要求5所述的使B/S系統(tǒng)具有分布式特性的方法,其特征在于, 所述動態(tài)代理方式采用的是Cglib。
7.根據(jù)權利要求2或4所述的使B/S系統(tǒng)具有分布式特性的方法,其特征在于,所述步驟Sll還包括以下子步驟S110、將每種所述業(yè)務處理模塊部署到至少兩個所述子服務器中。
8.根據(jù)權利要求4所述的使B/S系統(tǒng)具有分布式特性的方法,其特征在于, 所述部署信息包括業(yè)務處理模塊的域名稱、承載的業(yè)務標識、所在子服務器信息。
全文摘要
本發(fā)明涉及一種使B/S系統(tǒng)具有分布式特性的方法,包括步驟S1、將B/S系統(tǒng)中的服務器端拆分為客戶端和后臺服務端,所述后臺服務端包括子服務器;步驟S2、在所述客戶端和所述后臺服務端之間設置路由端,該路由端包括路由信息表。本發(fā)明使傳統(tǒng)B/S系統(tǒng)實現(xiàn)了分布式部署,而且實現(xiàn)過程不需修改B/S系統(tǒng)的大量代碼,只需要將原有系統(tǒng)中的配置文件做簡單的修改即可輕松完成,節(jié)省了大量的人力物力,有效控制了優(yōu)化成本。
文檔編號H04L29/08GK102185903SQ20111009754
公開日2011年9月14日 申請日期2011年4月19日 優(yōu)先權日2011年4月19日
發(fā)明者段嘉 申請人:北京神州數(shù)碼思特奇信息技術股份有限公司