版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、多層技術(shù)架構(gòu)本系統(tǒng)構(gòu)建于J2EE平臺,采用分層提供服務(wù)支持的設(shè)計思想,將系統(tǒng)劃分為數(shù)據(jù)庫層、中間件層、EMALL基礎(chǔ)服務(wù)層、業(yè)務(wù)表現(xiàn)層和系統(tǒng)接口層。系統(tǒng)對每一層定義明確的功能接口,同時在層次內(nèi)實現(xiàn)組件化的接口實現(xiàn)。層次化、模塊組件化的實現(xiàn),使系統(tǒng)具備了最大程度的靈活度,從而能對業(yè)務(wù)需求的變化作出快速的反應(yīng),使系統(tǒng)具有很好的擴(kuò)展性。首先我們來看一個系統(tǒng)技術(shù)架構(gòu)圖:上圖可以清晰的了解到整個系統(tǒng)的層次劃分,系統(tǒng)從最底部的數(shù)據(jù)庫層開始,一層一層的向上提供接口服務(wù),最終實現(xiàn)用戶按業(yè)務(wù)要求的可見操作界面和其他系統(tǒng)接口。各層次專著于自身功能的接口實現(xiàn),整個層次保持相對的穩(wěn)定。系統(tǒng)通過不改變接口,各個層次、各
2、個組件進(jìn)行優(yōu)化的策略,能在不影響整個業(yè)務(wù)的前提下,不斷的完善和改進(jìn)。一、數(shù)據(jù)庫層對于平臺中的所有應(yīng)用,都存在著各種各樣的配置信息、業(yè)務(wù)數(shù)據(jù)、系統(tǒng)運(yùn)行狀態(tài)等信息。數(shù)據(jù)庫層對這些數(shù)據(jù)信息本身進(jìn)行歸檔,提供快速查詢的底層接口,并保證數(shù)據(jù)的完整性、可靠性。在數(shù)據(jù)庫方面,我們采用Oracle或者是MySQL。這兩種數(shù)據(jù)庫分別有不同的適用環(huán)境。1、Oracle適合大型的電子商務(wù)應(yīng)用。能使用所有的網(wǎng)客通平臺功能。如訪問量排行榜、降價排行榜、銷售排行榜、訪問量統(tǒng)計等等,就以往的經(jīng)驗來看,這些功能每天要處理的數(shù)據(jù)都會超過一千萬。這種數(shù)據(jù)量如果使用傳統(tǒng)的統(tǒng)計方法,統(tǒng)計一次的時間就可能會以天來計算了。如果使用Ora
3、cle,再配合我們專門對Oracle進(jìn)行優(yōu)化的高效率的統(tǒng)計程序,那么只需十?dāng)?shù)秒便可完成。此外,如果只用一臺數(shù)據(jù)庫無法應(yīng)付日益增長的服務(wù)器訪問量,可以使用OracleRAC(真正應(yīng)用集群),通過增加數(shù)據(jù)庫服務(wù)器進(jìn)行集群。2、MySQL適合中小型的電子商務(wù)應(yīng)用。無法使用網(wǎng)客通平臺一些高級應(yīng)用,如排行榜、統(tǒng)計分析、MIS系統(tǒng)對接等。這是由于MySQL設(shè)計上強(qiáng)調(diào)訪問速度,犧牲了一些數(shù)據(jù)庫的高級功能,雖然用程序也可以實現(xiàn)這些功能,但是在性能上無法滿足需求。不支持?jǐn)?shù)據(jù)庫集群。二、中間件層中間件層主要是網(wǎng)客通平臺使用的J2EE中間件,包括平臺使用到的應(yīng)用服務(wù)器和中間件技術(shù)。一、應(yīng)用服務(wù)器應(yīng)用服務(wù)器為網(wǎng)客通提
4、供的整個J2EE平臺實現(xiàn),EMALL基礎(chǔ)服務(wù)層和應(yīng)用層、業(yè)務(wù)層都是建立在應(yīng)用服務(wù)器之上。網(wǎng)客通設(shè)計上遵循SUN公司提出的J2EE規(guī)范,這樣能夠盡可能的保證在不同的J2EE應(yīng)用服務(wù)器中進(jìn)行移植。經(jīng)過測試、網(wǎng)客通平臺支持Tomcat、WebLogic、JBoss這幾種J2EE應(yīng)用服務(wù)器。二、中間件技術(shù)本著重用的設(shè)計原則,網(wǎng)客通在一些功能中采用了已有的成熟技術(shù),這些都是經(jīng)過實踐考驗的中間件。主要以java標(biāo)準(zhǔn)包和開源項目為主,大部分都針對系統(tǒng)作了相應(yīng)調(diào)整,以便適合系統(tǒng)的需要。Apachecommons:著名的開源組織Apache的一個java工具包,提供很多實用的功能。commons-beanuti
5、ls:提供對Java反射和自省API的包裝。在平臺中用于通用的接口設(shè)計。commons-codec:包含一些通用的編碼解碼算法。Hex,Base64,以及URLencoder。平臺中主要用來做消息摘要,實現(xiàn)數(shù)據(jù)加密等功能。commons-collections:提供一個類包來擴(kuò)展和增加標(biāo)準(zhǔn)的JavaCollection框架。提供了比j2sdk更全面的數(shù)據(jù)結(jié)構(gòu),平臺中繼承并實現(xiàn)了一些特殊的數(shù)據(jù)結(jié)構(gòu)。commons-pool:提供了通用對象池接口,一個用于創(chuàng)建模塊化對象池的工具包,以及通常的對象池。我們在原有的基礎(chǔ)上進(jìn)行了優(yōu)化,在性能和使用性方面有所提高。commons-dbcp:這是一個基于ap
6、ache的對象池(apachecommonspool)實現(xiàn)的數(shù)據(jù)庫連接池。我們在原有的基礎(chǔ)上進(jìn)行了優(yōu)化,對數(shù)據(jù)庫連接進(jìn)行了特別的處理,防止數(shù)據(jù)庫連接泄漏的問題,并提供了監(jiān)控的功能。commons-discovery:供工具來定位資源(包括類),通過使用各種模式來映射服務(wù)/引用名稱和資源名稱。commons-el:提供在JSP2.0規(guī)范中定義的EL表達(dá)式的解釋器。對平臺中的JSP提供EL表達(dá)式支持。commons-:強(qiáng)大和高性能的文件上傳功能。平臺中被用于上傳各種圖片、Flash、文檔等資源,我們在原有的基礎(chǔ)上進(jìn)行了優(yōu)化。commons-logging:提供通用的日志操作接口。主要用于程序調(diào)試和
7、服務(wù)器日常的日志輸出。10)commons-validator:提供了一個簡單的,可擴(kuò)展的框架來在一個XML文件中定義校驗器(校驗方法)和校驗規(guī)則。支持校驗規(guī)則的和錯誤消息的國際化。平臺中用來校驗各種xml數(shù)據(jù)。Cewolf/JFreeChart:Cewolf是一個用于生成各種圖表的標(biāo)簽庫。它支持在JSP中嵌入圖表圖片。運(yùn)行servlet容器的任意的Web應(yīng)用程序服務(wù)器都可以使用它。因為Cewolf是一個功能完整的標(biāo)簽庫,所以不需要使用Javascript。JFreeChart是開放源代碼站點(diǎn)SourceF上的一個JAVA項目,它主要用來各種各樣的圖表,這些圖表包括:餅圖、柱狀圖(普通柱狀圖以
8、及堆棧柱狀圖)、線圖、區(qū)域圖、分布圖、混合圖、甘特圖以及一些儀表盤等等。這些不同式樣的圖表基本上可以滿足目前的要求。主要用于生成統(tǒng)計圖表。這兩個技術(shù)一起提供了網(wǎng)客通平臺的統(tǒng)計分析圖表,JFreeChart主要用于輸出圖表,Cewolf對其進(jìn)行了封裝。Dom4j:Dom4j是一個易用的、開源的庫,用于XML,XPath和XSLT。它應(yīng)用于Java平臺,采用了Java集合框架并完全支持DOM,SAX和JAXP。主要用來處理XML數(shù)據(jù)。XML在網(wǎng)客通有廣泛的應(yīng)用,主要是作為配置文件使用。由于XML嚴(yán)格的格式要求和層次結(jié)構(gòu),也有用來作為參數(shù)在HTML表單中傳遞。如組合商品功能,因為組合商品中的商品是由
9、管理員挑選的,參數(shù)數(shù)量并不確定,如果每從組合商品中添加/刪除一個商品都直接更新到數(shù)據(jù)庫話,會對系統(tǒng)造成負(fù)荷。所以,在組合商品的管理中,將操作的數(shù)據(jù)類轉(zhuǎn)換成XML傳遞,就可以一次進(jìn)行修改。Hibernate:Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序?qū)嵱茫部梢栽赟ervlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。
10、在平臺中,我們采用Hibernate進(jìn)行數(shù)據(jù)庫操作,只有在一些對數(shù)據(jù)庫性能有特別要求的模塊,才直接使用jdbc進(jìn)行連接。Ehcache:Ehcache出自Hibernate,在Hibernate中使用它作為數(shù)據(jù)緩存的解決方案。這是Hibernate必須的包。JCrontab:它是由Java語言編寫的日程處理程序,它目的是提供強(qiáng)大的定時處理功能,讓我們的應(yīng)用程序可以按照提供的時間表來執(zhí)行不同的應(yīng)用。我們主要用Jcrontab管理以下一些定時任務(wù):1)年排行榜后臺更新進(jìn)程:自動計算年排行榜。2)月排行榜后臺更新進(jìn)程:自動計算月排行榜。3)周排行榜后臺更新進(jìn)程:自動計算周排行榜。4)日排行榜后臺更新
11、進(jìn)程:自動計算日排行榜。5)更新對象緩存:實現(xiàn)對象緩存的更新,處理那些長期沒被再一次訪問的對象緩存。6)清頁面緩存:當(dāng)管理員使用的手工刷新頁面緩存的功能時,系統(tǒng)會將這些需要刷新的緩存加到一個隊列中,由本進(jìn)程負(fù)責(zé)刷新。7)相關(guān)產(chǎn)品自動實現(xiàn)間隔:相關(guān)產(chǎn)品的計算對系統(tǒng)消耗比較大,所以系統(tǒng)不會對所有幾十萬個商品進(jìn)行計算,只有在用戶查看單個商品時算出這個商品的相關(guān)產(chǎn)品并進(jìn)行緩存。那么當(dāng)用戶下一次訪問這個商品的相關(guān)產(chǎn)品時就直接從緩存中讀取出來。而這個進(jìn)程就是為了定時更新這個緩存。8)自動推薦后臺更新進(jìn)程:進(jìn)程根據(jù)商品推薦規(guī)則進(jìn)行自動推薦。9)新聞推薦后臺更新進(jìn)程:進(jìn)程根據(jù)新聞推薦規(guī)則進(jìn)行自動推薦。10)關(guān)
12、鍵字后臺進(jìn)程:當(dāng)用戶在前臺搜索欄中輸入一個查詢值時,系統(tǒng)并不馬上將其統(tǒng)計到關(guān)鍵字,而是放到內(nèi)存中,由此進(jìn)程定時統(tǒng)計。11)保存訪問量信息進(jìn)程:用戶每訪問一次系統(tǒng),系統(tǒng)并不馬上統(tǒng)計,而是放到內(nèi)存中,由此進(jìn)程定時保存到數(shù)據(jù)庫,供統(tǒng)計進(jìn)程進(jìn)行統(tǒng)計。12)年訪問量排行計算:計算年訪問量排行榜。13)月訪問量排行計算:計算月訪問量排行榜。14)周訪問量排行計算:計算周訪問量排行榜。15)日訪問量排行計算:計算日訪問量排行榜。16)年降價排行計算:計算年降價排行榜。17)月降價排行計算:計算月降價排行榜。18)周降價排行計算:計算周降價排行榜。19)日降價排行計算:計算日降價排行榜。20)統(tǒng)計計算:每天對
13、訪問量進(jìn)行統(tǒng)計。21)生成訂閱郵件列表進(jìn)程:根據(jù)用戶的訂閱設(shè)置,生成需要發(fā)送的郵件隊列。22)發(fā)送訂閱郵件進(jìn)程:根據(jù)要發(fā)送的郵件隊列發(fā)送郵件。23)拍賣自動出價進(jìn)程:實現(xiàn)拍賣模塊中的自動出價功能。JCS:JCS是Jakarta的項目Turbine的子項目。它是一個復(fù)合式的緩沖工具??梢詫ο缶彌_到內(nèi)存、硬盤。具有緩沖對象時間過期設(shè)定。還可以通過JCS構(gòu)建具有緩沖的分布式構(gòu)架,以實現(xiàn)高性能的應(yīng)用。對于一些需要頻繁訪問而每訪問一次都非常消耗資源的對象,可以臨時存放在緩沖區(qū)中,這樣可以提高服務(wù)的性能。而JCS正是一個很好的緩沖工具。緩沖工具對于讀操作遠(yuǎn)遠(yuǎn)多于寫操作的應(yīng)用性能提高非常顯著。網(wǎng)客通平臺中
14、使用jCS提供緩存功能,主要是頁面緩存和對象緩存,通過JCS,系統(tǒng)將用戶訪問過的頁面和對象緩存到內(nèi)存中,對于訪問量巨大,內(nèi)存緩存已經(jīng)不能負(fù)荷的情況下,我們還可以將緩存設(shè)置到硬盤中保存。使用緩存的話,能將系統(tǒng)可負(fù)載和性能大幅度的提升。當(dāng)沒有使用集群環(huán)境的情況下,緩存是一種必不可少的技術(shù)。&JSF/MyFaces:JavaServerFaces(JSF)是一種用于構(gòu)建Web應(yīng)用程序的新標(biāo)準(zhǔn)Java框架。它提供了一種以組件為中心來開發(fā)JavaWeb用戶界面的方法,從而簡化了開發(fā)。JSF的主要優(yōu)勢之一就是它既是JavaWeb用戶界面標(biāo)準(zhǔn)又是嚴(yán)格遵循模型一視圖一控制器(MVC)設(shè)計模式的框架。用戶界面代
15、碼(視圖)與應(yīng)用程序數(shù)據(jù)和邏輯(模型)的清晰分離使JSF應(yīng)用程序更易于管理。為了準(zhǔn)備提供頁面對應(yīng)用程序數(shù)據(jù)訪問的JSF上下文和防止對頁面未授權(quán)或不正確的訪問,所有與應(yīng)用程序的用戶交互均由一個前端“Facesservlet(控制器)來處理。MyFaces是JavaServerFaces(JSF)Web框架(JSR127)的一個實現(xiàn)。提供了很多常用控件。我們平臺中采用一些基于JSF框架的MyFaces控件。這樣使程序結(jié)構(gòu)十分清晰。Log4j:Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務(wù)器、NT的事件記
16、錄器、UNIXSyslog守護(hù)進(jìn)程等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級別,我們能夠更加細(xì)致地控制日志的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進(jìn)行配置,而不需要修改應(yīng)用的代碼。這是一個可選包,如果不使用Log4j的話,commons-logging會自動使用SUNJ2SDK的日志包,不過我們還是推薦使用Log4j,它的功能非常強(qiáng)大。Lucene:Lucene是一個開放源程序的搜尋器引擎,利用它可以輕易地為Java軟件加入全文搜尋功能。Lucene的最主要工作是替文件的每一個字作索引,索引讓搜尋的效率比傳統(tǒng)的逐字比較大大提高,Lucen提供一組
17、解讀,過濾,分析文件,編排和使用索引的API,它的強(qiáng)大之處除了高效和簡單外,是最重要的是使使用者可以隨時應(yīng)自已需要自訂其功能。我們使用Lucene建立索引,并在這基礎(chǔ)上實現(xiàn)了全文搜索功能。Ant:Ant是一個基于Java的自動化腳本引擎,腳本格式為XML。我們除了用Ant做Java編譯相關(guān)任務(wù)外,還通過插件實現(xiàn)很多應(yīng)用的調(diào)用。包括程序編譯、打包、Hibernate配置文件自動生成、部署、以及單元測試等操作。當(dāng)一個代碼項目大了以后,每次重新編譯,打包,測試等都會變得非常復(fù)雜而且重復(fù),因此c語言中有make腳本來幫助這些工作的批量完成。在Java中應(yīng)用是平臺無關(guān)性的,當(dāng)然不會用平臺相關(guān)的make腳
18、本來完成這些批處理任務(wù)了,Ant本身就是這樣一個流程腳本引擎,用于自動化調(diào)用程序完成項目的編譯,打包,測試等。除了基于JAVA是平臺無關(guān)的外,腳本的格式是基于XML的,比make腳本來說還要好維護(hù)一些。Axis:Axis是一個SOAP引擎,提供創(chuàng)建服務(wù)器端、客戶端和網(wǎng)關(guān)SOAP操作的基本框架。SOAP是被廣泛作為新一代跨平臺、跨語言分布計算WebServices的重要部分。網(wǎng)客通平臺使用Axis提供WebService支持,廣泛應(yīng)用于通用數(shù)據(jù)接口,對外系統(tǒng)提供服務(wù)等功能。如:1)商品查詢服務(wù):提供接口讓外接系統(tǒng)可以查到平臺中的商品信息。2)新聞發(fā)布服務(wù):提供接口讓外接系統(tǒng)可以取到各類新聞。3)
19、訂單服務(wù):提供接口讓外接系統(tǒng)可以在平臺中生成訂單,并獲取各種訂單信息。注:上述服務(wù)都有嚴(yán)格的權(quán)限控制。JavaMa:il:JavaMail是Sun發(fā)布的用來處理email的API。它可以方便地執(zhí)行一些常用的郵件傳輸。我們使用JavaMail實現(xiàn)了平臺中郵件發(fā)送、群發(fā)等相關(guān)功能,供業(yè)務(wù)系統(tǒng)使用。XDoclet:XDoclet是一個開源項目,可以通過在java源代碼中的一些特殊的注釋信息,自動生成配置文件、源代碼等等。例如web、ejb的部署描述文件等。我們用XDoclet來生成Hibernate的hbm配置文件。JSTL:JSP標(biāo)準(zhǔn)標(biāo)記庫(JSPStandardTagLibrary,JSTL)是
20、一個實現(xiàn)Web應(yīng)用程序中常見的通用功能的定制標(biāo)記庫集,這些功能包括迭代和條件判斷、數(shù)據(jù)管理格式化、XML操作以及數(shù)據(jù)庫訪問。我們使用JSTL封裝各種業(yè)務(wù)邏輯。JakartaORO:JakartaOROJava類是一套文本處理Java類,提供了與Perl5兼容的規(guī)則表達(dá)式,類AWK規(guī)則表達(dá)式,glob表達(dá)式,以及用于執(zhí)行替換、分割、過濾文件名等的工具。這個包是0ROMatcher,AwkTools,PerlTools,andTextToolslibrariesoriginallyfromORO,Inc的后續(xù)產(chǎn)品。網(wǎng)客通平臺使用ORO處理正則表達(dá)式,廣泛應(yīng)用于各種文本處理中。SwarmCache/
21、JGroups:SwarmCache是一個簡單且有效的分布式緩存,它使用IPmulticast與同一個局域網(wǎng)的其他主機(jī)進(jìn)行通訊,是特別為集群和數(shù)據(jù)驅(qū)動web應(yīng)用程序而設(shè)計的。SwarmCache能夠讓典型的讀操作大大超過寫操作的這類應(yīng)用提供更好的性能支持。SwarmCache使用JavaGroups來管理從屬關(guān)系和分布式緩存的通訊。JGroups是一個開源的純java編寫的可靠的群組通訊工具。其工作模式基于IP多播,但可以在可靠性和群組成員管理上進(jìn)行擴(kuò)展。其結(jié)構(gòu)上設(shè)計靈活,提供了一種靈活兼容多種協(xié)議的協(xié)議棧,對于每個產(chǎn)品都有不同的可靠性需求。這種協(xié)議??梢宰層脩舳x的自己可靠性指標(biāo)和性能指標(biāo)。
22、當(dāng)使用集群環(huán)境時,系統(tǒng)存在著緩存同步的問題,需要對集群中每一臺服務(wù)器的緩存進(jìn)行同步,這樣就必須要有一個緩存同步的機(jī)制,SwarmCache和JGroups就是為了解決這個問題而被加到網(wǎng)客通中。JUnit:JUnit是由ErichGamma和KentBeck編寫的一個回歸測試框架(regressiontestingframework)。Junit測試是程序員測試,即所謂白盒測試,因為程序員知道被測試的軟件如何(How)完成功能和完成什么樣(What)的功能。我們主要用JUnit來進(jìn)行單元測試。三、基礎(chǔ)服務(wù)層基礎(chǔ)服務(wù)層構(gòu)建于J2EE平臺之上,借助于中間件的接口服務(wù),提供電子商務(wù)平臺系統(tǒng)所需要的通用
23、服務(wù)接口組件。系統(tǒng)將提供以下主要的服務(wù)接口支撐不同業(yè)務(wù)需求的實現(xiàn)。欄目管理模塊:欄目是一個抽象資源對象,是一種特殊的內(nèi)容類型。欄目可以表示產(chǎn)品、新聞信息類別、資源節(jié)點(diǎn)、導(dǎo)航欄的項、菜單中的項等等。欄目是一種組織管理型的資源。系統(tǒng)設(shè)計上支持多級子欄目,采用虛擬文件系統(tǒng)(Virtual)技術(shù)以支持直觀的樹型導(dǎo)航風(fēng)格,一個欄目節(jié)點(diǎn)相當(dāng)于一個虛擬的文件目錄。對于大型電子商務(wù)系統(tǒng),欄目的節(jié)點(diǎn)是個非常大的數(shù)字,這對系統(tǒng)欄目樹展示的速度和性能有極高要求。考慮到以上原因系統(tǒng)采取了欄目對象緩存策略,同時對于頁面節(jié)點(diǎn)的呈現(xiàn)通過動態(tài)JavaScript輸出的技術(shù),從而使系統(tǒng)能很好的支持上萬個欄目數(shù)據(jù)節(jié)點(diǎn)操作管理。能
24、平滑、高效的展示樹型風(fēng)格的欄目結(jié)構(gòu)。用戶權(quán)限管理模塊:大型電子商務(wù)應(yīng)用系統(tǒng)有用戶多,模塊多,權(quán)限多的特點(diǎn),因此必須采用分組的用戶管理系統(tǒng),并設(shè)置一個具有最高權(quán)限的管理員,負(fù)責(zé)對整個系統(tǒng)用戶設(shè)置,為每個用戶角色、用戶指定不同的權(quán)限,依照不同的權(quán)限在系統(tǒng)中可以使用不同的功能。系統(tǒng)設(shè)置了Administrator用戶組,并設(shè)置了root這個具有最高權(quán)限、不可刪除的用戶。您可以根據(jù)您的需要使用root這一個管理員用戶。管理員可以創(chuàng)建、編輯和刪除用戶組,您可以根據(jù)您的需要給每個用戶組合理的權(quán)限劃分,并給每個用戶組添加、編輯和刪除用戶。用戶登錄系統(tǒng)后,系統(tǒng)會根據(jù)該用戶的權(quán)限提供相應(yīng)的功能,并對用戶的每個操
25、作檢查用戶的使用權(quán)限。系統(tǒng)采用Window用戶權(quán)限的思想,將用戶、用戶組的權(quán)限通過各個欄目節(jié)點(diǎn)進(jìn)行綁定,在各個欄目節(jié)點(diǎn)上實現(xiàn)繼承與非繼承的設(shè)置管理,從而使管理員可以進(jìn)行靈活的配置。屬性管理模塊:在現(xiàn)實情況中,不同的事物對象存在其特殊的信息描述;比如一個手機(jī),存在“網(wǎng)絡(luò)類型一GSM”、“外觀樣式一翻蓋”等等;同時這些特殊的信息描述在同類別的數(shù)據(jù)對象下經(jīng)常存在共性;比如TCL和聯(lián)想生產(chǎn)的手機(jī),應(yīng)該都存在以上兩種屬性的描述。針對以上的情況,系統(tǒng)進(jìn)行了一個數(shù)據(jù)抽象,定義了一套屬性管理組件,可以方便、有效的描述相關(guān)的需求情況,同時對于存在共性描述的對象采用繼承模式來描述,從而很好的表現(xiàn)一個事物對象的特征
26、。繼承性管理模塊:繼承是面向?qū)ο蠼涌谔匦灾?。考慮到抽象事物的通用性,系統(tǒng)通過一個通用的對象繼承模型接口,對所有需要實現(xiàn)繼承的功能提供基礎(chǔ)的支持。從而提高系統(tǒng)的重用性和降低系統(tǒng)的偶合度。日志服務(wù)管理模塊:日志是一個成熟的電子商務(wù)應(yīng)用系統(tǒng)所必備的功能。日志可以用于數(shù)據(jù)統(tǒng)計,為系統(tǒng)其他功能提供初始數(shù)據(jù);用于查看一個對象的修改歷史記錄,用于方便追蹤對象的修改狀態(tài)和明確事務(wù)責(zé)任。通過對系統(tǒng)各種操作數(shù)據(jù)的分析,根據(jù)各操作功能,系統(tǒng)將日志進(jìn)行類別的劃分:1、系統(tǒng)日志:記錄系統(tǒng)各種操作的信息數(shù)據(jù)。(比如:用戶某個時間登陸了系統(tǒng))2、商品日志:記錄系統(tǒng)商品數(shù)據(jù)發(fā)生改變的信息。(比如:商品價格發(fā)生變化)3、信息
27、日志:記錄系統(tǒng)信息數(shù)據(jù)發(fā)生改變的信息。(比如:某管理員增加了一個新的促銷公告)4、訂單日志:記錄系統(tǒng)訂單數(shù)據(jù)發(fā)生改變的信息。(比如:某個訂單已經(jīng)進(jìn)行了送貨處理)系統(tǒng)通過抽象出一個Log日志接口,采用AbstractFactory模式,通過不同的構(gòu)造參數(shù)來獲取不同分類的Log日志實現(xiàn)。系統(tǒng)將各中類別下的日志,又區(qū)分不同的操作。日志組件將通過抽象和封裝后,給各功能模塊提供統(tǒng)一接口服務(wù),方便系統(tǒng)各模塊的日志功能的開發(fā)和維護(hù)。緩存服務(wù)管理模塊:頁面訪問的時候,生成動態(tài)Web頁會耗用各種各樣的系統(tǒng)資源。當(dāng)Web服務(wù)器收到頁面請求時,它通常必須從數(shù)據(jù)庫或其他存儲系統(tǒng)中實時的檢索所請求的信息。對這些資源的訪
28、問通常需要通過有限的資源池(如數(shù)據(jù)庫連接、套接字或文件描述符)進(jìn)行。因為Web服務(wù)器通常需要處理很多并發(fā)請求,所以對這些共享資源的爭奪可能會延遲頁面請求,直到資源變?yōu)榭捎?。在將請求發(fā)送后,仍然必須將結(jié)果轉(zhuǎn)換為HTML代碼以便進(jìn)行顯示。使系統(tǒng)速度更快的一種顯而易見的方法是購買更多、配置更好的硬件。此方法可能很吸引人,因為硬件便宜,而且不必更改程序,但更多的硬件只能在未達(dá)到其物理限制之前才會對性能有所幫助。系統(tǒng)中實施緩存管理,是一個有效的解決方案。系統(tǒng)中存在兩中緩存對象:1、Java對象緩存:對于一些經(jīng)常被使用的Java對象保存于規(guī)定的內(nèi)存空間,通過配置的更新規(guī)則,同步更新數(shù)據(jù)庫內(nèi)容。2、前臺頁面
29、緩存:對于前臺的html頁面按不同的塊來區(qū)分,然后通過一個key對象,通過開源JCS技術(shù)存儲于內(nèi)存或磁盤空間。(請求中的頁面對象不在緩存對象中)(請求中的頁面對象存在于緩存對象中)從上邊兩幅圖可以很清晰的看到,對于并發(fā)訪問的頁面請求,通過頁面的緩存可以極大的減少對緊缺資源(數(shù)據(jù)庫連接)的調(diào)用,減少訪問響應(yīng)的時間,從而提高系統(tǒng)的訪問速度和整體性能。集群模塊:集群目標(biāo):1、支持更大的訪問量,并且可以隨著訪問量的增加可以通過增加服務(wù)器的方式很容易的增加處理能力,而不增加用戶的訪問時延。2、提高系統(tǒng)穩(wěn)定性,提供幾乎永不停機(jī)的服務(wù)質(zhì)量。即使某一臺服務(wù)器軟件或者硬件崩潰系統(tǒng)仍然能對客戶提供服務(wù)。網(wǎng)客通平臺
30、集群實現(xiàn)了以下功能:1、Session復(fù)制使用應(yīng)用服務(wù)器自帶的Session復(fù)制功能。如開源的Tomcat,Tomcat5.5帶有Session復(fù)制功能。Tomcat5.5的Session復(fù)制功能有如下的特點(diǎn):1)需要保證Session中的所有的對象都是可序列化的。只有調(diào)用session的SetAttribute、removeAttribute方法時才會觸發(fā)session的復(fù)制。例如有一個user類型的對象u保存在Session之中,如果u.setName“aaa)是不會觸發(fā)Session復(fù)制的,只有u.setAttribute“user,u)才會觸發(fā)Session的復(fù)制。2)Session的
31、復(fù)制是一個all-all的復(fù)制,也就是說Session的每次復(fù)制都復(fù)制給集群中的每一臺服務(wù)器。由于Session的復(fù)制是All-All的,因此當(dāng)服務(wù)器中的集群數(shù)量過多時,有可能發(fā)生集群之間的Session復(fù)制流量過大,本身成為了性能的瓶頸。針對這個情況一方面要盡量的減少復(fù)制的數(shù)據(jù)量,這就要求將保留在session中的對象盡量變得更小,例如應(yīng)該盡可能的拆分開對象。因為一個大對象只要一個小的屬性發(fā)生了變化則整個對象都要被復(fù)制,如果將對象拆分開則只要復(fù)制一個小對象就可以了,盡量將保存在session中的對象變小。另一方面,當(dāng)集群中的服務(wù)器數(shù)目真的變得很大時,單靠縮小session中的對象已經(jīng)是沒用了
32、,這樣的話我們還有兩種技術(shù)方案:1)將集群分域,即將大的集群分成幾個小的集群,Session復(fù)制只在小集群內(nèi)部發(fā)生。2)主一一從session復(fù)制,即將所有session保留在中心的一臺或幾臺服務(wù)器中,并不向集群中的所有服務(wù)器復(fù)制。2.Cache復(fù)制和更新網(wǎng)客通平臺的Cache分成兩類,頁面Cache和對象Cache。頁面Cache我們現(xiàn)在采用jcs包Jcs包中帶有Cluster功能,能夠?qū)ache內(nèi)容復(fù)制到整個集群的服務(wù)器中。該功能需要滿足以下條件:1)需要保證Cache中的所有的對象都是可序列化的。2)只有調(diào)用Cache的setObject、removeObject方法時才會觸發(fā)sess
33、ion的復(fù)制。事務(wù)型的cache在實際的使用中,Cache起到了巨大的作用,但是也存在有問題。Cache是非事務(wù)化的,即如果在使用過程中,在沒有關(guān)閉Cache的情況下突然關(guān)閉服務(wù)器,或者服務(wù)器突然Down了,則緩存有可能被破壞。在集群環(huán)境下,則緩存會在服務(wù)器重起的時候從其他服務(wù)器中復(fù)制過來。在正常使用時Cache能達(dá)到上G的數(shù)量級,如果集群中某臺服務(wù)器崩潰后損壞了Cache則在服務(wù)器重起的時候?qū)⒂袔譍的數(shù)據(jù)需要復(fù)制過來,這樣有可能造成網(wǎng)絡(luò)諸塞,成為整個系統(tǒng)的性能瓶頸,因此我們采用事務(wù)型的Cache,保證系統(tǒng)崩潰后,重起的時候只有少部分的數(shù)據(jù)需要從其他服務(wù)器上復(fù)制過來。對于cache的事務(wù)管理,
34、我們采用BerkeleyDB,BerkeleyDB是歷史悠久的嵌入式數(shù)據(jù)庫系統(tǒng),主要應(yīng)用在UNIX/LINUX操作系統(tǒng)上,其設(shè)計思想是簡單、小巧、可靠、高性能。當(dāng)數(shù)據(jù)類型較少(特別注意:這并不是說需要管理的數(shù)據(jù)量?。瑪?shù)據(jù)管理本身不復(fù)雜,且對數(shù)據(jù)操作要求高效率時,使用BerkeleyDB是一個很好的選擇。BerkeleyDB是一個具有工業(yè)強(qiáng)度的嵌入式數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)處理的效率很高BerkeleyDB功能的穩(wěn)定性歷經(jīng)時間的考驗,在大量應(yīng)用程序中使用便是明證??梢韵胍姡谕却a質(zhì)量的條件下,軟件的BUG數(shù)和代碼的長度是成正比的,相對幾十兆、幾百兆大型數(shù)據(jù)庫軟件,BerkeleyDB的只有不到50
35、0K的大小,但可以管理大至256T的數(shù)據(jù)量。從這些特性看來,cache非常適合使用BerkeleyDB進(jìn)行管理。上傳文件的共享我們采用共性文件形式的文件共享,主要使用磁盤陣列技術(shù),簡稱RAID(RedundantArraysofInexpensiveDisks)。磁盤陣列是由一個硬盤控制器來控制多個硬盤的相互連接,使多個硬盤的讀寫同步,減少錯誤,增加效率和可靠度的技術(shù)。磁盤陣列有以下優(yōu)點(diǎn):1)傳輸速率快;2)儲存容量可提升;3)提升I/O每秒的數(shù)量;4)增加數(shù)據(jù)安全性及穩(wěn)定性;5)大量數(shù)據(jù)快速及簡易管理;6)增加可用運(yùn)時間,減少維護(hù);Cookie的共享采用負(fù)載均衡器使得多臺服務(wù)器對外有相同的I
36、P這樣就能使所與的服務(wù)器都能共享Cookie。同時采用這個方案還能保證系統(tǒng)的高可用性。具體可參照下一點(diǎn)。高可用性我們建議采用負(fù)載平衡器,負(fù)載均衡器可以根據(jù)實際的響應(yīng)時間制定優(yōu)先級交付決策,從而實現(xiàn)高性能、智能化流量管理,達(dá)到最佳的服務(wù)器群性能。采用第七層應(yīng)用控制還可以減少通信高峰期的錯誤訊息,因為差錯控制和流量管理技術(shù)可以偵測到一些錯誤信息,并透明地將會話重定向到另一個服務(wù)器,使用戶順利地進(jìn)行使用。例如,服務(wù)器A不可用或者數(shù)據(jù)庫出現(xiàn)錯誤,錯誤信息將會返回到負(fù)載均衡器上,然后會將客戶的訪問指向服務(wù)器B或者將消息重放到其他數(shù)據(jù)庫中去,整個過程對用戶是透明的。將內(nèi)部的多個私有IP的服務(wù)器,對外映射成
37、一個相同的IP。而且當(dāng)其中某臺服務(wù)器Down掉的時候,負(fù)載均衡器將不會將這個服務(wù)器映射出去。數(shù)據(jù)庫集群如果數(shù)據(jù)庫是用Oracle的話,數(shù)據(jù)庫集群可以采用OracleRAC?;赗AC的電子商務(wù)應(yīng)用的用戶或者中間層應(yīng)用服務(wù)器客戶,可以通過虛擬數(shù)據(jù)庫服務(wù)名連接到數(shù)據(jù)庫上oOracle在集群中多個節(jié)點(diǎn)之間自動平衡用戶負(fù)載。不同節(jié)點(diǎn)上的RealApplicationClusters數(shù)據(jù)庫實例預(yù)訂所有數(shù)據(jù)庫服務(wù)或者部分子集數(shù)據(jù)庫服務(wù)。這使得DBA高度靈活地選定,連接到特定數(shù)據(jù)庫服務(wù)的特定應(yīng)用程序客戶是否可以連接到某些或者全部的數(shù)據(jù)庫節(jié)點(diǎn)。RAC在工作期間,每個節(jié)點(diǎn)可以單獨(dú)的被使用并且被應(yīng)用程序負(fù)載均衡。
38、如果發(fā)生意外,如一個節(jié)點(diǎn)的失敗,可以實現(xiàn)節(jié)點(diǎn)的失敗切換,保證數(shù)據(jù)庫24*7的高可用性。雖然每一個節(jié)點(diǎn)有一個不同的物理IP地址時,應(yīng)用客戶仍可以在一個邏輯數(shù)據(jù)庫服務(wù)名的水平上進(jìn)行連接。因此客戶端對于不相關(guān)的事情如多服務(wù)器的多個地址可以毫不關(guān)心。任務(wù)調(diào)度模塊:對于電子大型的成熟的電子商務(wù)平臺系統(tǒng),每天都有很多特定的數(shù)據(jù)需要進(jìn)行分析或處理(比如:每天都有大量的郵件需要發(fā)送)。對于大數(shù)據(jù)量、高數(shù)據(jù)運(yùn)算的處理功能,往往不希望在系統(tǒng)繁忙的時間進(jìn)行處理。針對這種狀況,系統(tǒng)采用Jcrontab提供的基礎(chǔ)服務(wù),通過Jcrontab接口的擴(kuò)展,實現(xiàn)對系統(tǒng)自動執(zhí)行的任務(wù)靈活的、人性化的配置。管理員可以根據(jù)系統(tǒng)的實際
39、情況,配置相應(yīng)的系統(tǒng)任務(wù)來執(zhí)行。四、應(yīng)用層應(yīng)用層提供各種業(yè)務(wù)實體的操作,使用EMALL基礎(chǔ)服務(wù)進(jìn)行搭建。應(yīng)用層的基本設(shè)計都是建立在EMALL基礎(chǔ)服務(wù)層之上。就是欄目一一屬性/權(quán)限一一業(yè)務(wù)實體。所有業(yè)務(wù)都可以在欄目中統(tǒng)一管理,從而使用統(tǒng)一的權(quán)限配置,使用分層的動態(tài)屬性這些基礎(chǔ)功能。這樣做的好處是,當(dāng)業(yè)務(wù)實體發(fā)生改變或者是有新的業(yè)務(wù)時,系統(tǒng)的基礎(chǔ)架構(gòu)都不需要做出任何調(diào)整,直接就可以使用原有的功能。比如說訂單系統(tǒng),訂單系統(tǒng)可以處理的就是一個業(yè)務(wù)實體,如果平臺現(xiàn)在要加上網(wǎng)上購買服務(wù)的功能,那么只需要新加一個訂單類型,就可以好像處理一般的商品訂單那樣處理這種購買服務(wù)的訂單。一、商品管理二、拍賣管理三、網(wǎng)
40、上團(tuán)購四、廣告管理五、信息發(fā)布六、排行榜管理七、問卷調(diào)查八、訂單管理九、管理員管理十、用戶管理十一、支付方式十二、配送方式十三、熱門關(guān)鍵字十四、訂閱管理十五、BBS五、業(yè)務(wù)表現(xiàn)層和系統(tǒng)接口層業(yè)務(wù)表現(xiàn)層業(yè)務(wù)表現(xiàn)層就是網(wǎng)客通最終對客戶的接口,平臺以網(wǎng)頁的方式提供各種業(yè)務(wù)供客戶使用。相當(dāng)于View(視圖),與應(yīng)用層(Model)、Servlet(Controller)組成Model/View/Controller(MVC)結(jié)構(gòu)。主要是用JSF架構(gòu)實現(xiàn)。系統(tǒng)接口層系統(tǒng)接口層是網(wǎng)客通對外部系統(tǒng)的接口。提供各種數(shù)據(jù)導(dǎo)入導(dǎo)出,數(shù)據(jù)查詢等功能。網(wǎng)客通平臺主要使用WebService提供系統(tǒng)接口。實際上,Web
41、Service的主要目標(biāo)是跨平臺的可互操作性。為了達(dá)到這一目標(biāo),WebService完全基于XML(可擴(kuò)展標(biāo)記語言)、XSD(XMLSchema)等獨(dú)立于平臺、獨(dú)立于軟件供應(yīng)商的標(biāo)準(zhǔn),是創(chuàng)建可互操作的、分布式應(yīng)用程序的新平臺。使用WebService有以下優(yōu)點(diǎn):跨防火墻的通信出于安全性考慮,服務(wù)器通常只對公網(wǎng)開放80(HTTP)端口,WebService使用Http協(xié)議進(jìn)行傳輸,正好能自由穿越防火墻。應(yīng)用程序集成在企業(yè)中會有其他的應(yīng)用程序,比如說MIS、CRM等,這些應(yīng)用可能是建立在不同的平臺之上,比如說Net。那么網(wǎng)客通和這些平臺集成的話就會存在很大的問題,因為我們采用的是J2EE。解決這應(yīng)
42、用程序集成的最佳方案就是WebService了。通過WebService,應(yīng)用程序可以用標(biāo)準(zhǔn)的方法把功能和數(shù)據(jù)“暴露出來,供其它應(yīng)用程序使用。B2B的集成同樣的,將上面的一個問題擴(kuò)充到企業(yè)和企業(yè)之間,跨公司的商務(wù)交易集成通常叫做B2B集成。不同企業(yè)所采用的平臺就更加五花八門了。WebService是B2B集成成功的關(guān)鍵。通過WebService,公司可以把關(guān)鍵的商務(wù)應(yīng)用“暴露”給指定的供應(yīng)商和客戶。用WebService來實現(xiàn)B2B集成的最大好處在于可以輕易實現(xiàn)互操作性。只要把商務(wù)邏輯“暴露出來,成為WebService,就可以讓任何指定的合作伙伴調(diào)用這些商務(wù)邏輯,而不管他們的系統(tǒng)在什么平臺上運(yùn)行,使用什么開發(fā)語言。這樣就大大減少了花在B2B集成上的時間和成本。軟件和數(shù)據(jù)重用軟件重用是一個很大的主題,重用的形式很多,重用的程度有大有小。最基本的形式是源代碼模塊或者類一級的重用,另一種形式是二進(jìn)制形式的組件重用。WebService在允許重用代
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年房產(chǎn)交易居間條款
- 2024年家用空調(diào)銷售合同
- 前臺年終工作總結(jié)(28篇)
- 供房如何退稅申請書范本(15篇)
- 客服的個人工作計劃(6篇)
- 2024護(hù)理年度考核總結(jié)(6篇)
- 專題03古詩文閱讀之《次北固山下》(預(yù)習(xí)積累通關(guān)訓(xùn)練)-2023年小初銜接語文通關(guān)寶典
- 2024年技術(shù)授權(quán)保密協(xié)議
- DB4106T 19-2020 居家養(yǎng)老助潔機(jī)構(gòu)服務(wù)規(guī)范
- 2024年家具企業(yè)品牌形象推廣合同
- 幼教培訓(xùn)課件:《幼兒園班級區(qū)域創(chuàng)設(shè)》
- 中醫(yī)技能考核評分表
- 李中瑩親密關(guān)系全面技巧
- 中國兒童嚴(yán)重過敏反應(yīng)診斷與治療建議(2022年)解讀
- 動火作業(yè)安全規(guī)范AQ3022-2008
- Unit 1 Our living planet Reading 課件-2022-2023學(xué)年高中英語牛津譯林版(2020)選修第一冊
- 如何做好談話筆錄演示文稿
- 耐酸泵廠家排名前十耐酸堿泵十大品牌
- 小學(xué)道德與法治人教三上冊安全護(hù)我成長心中的(吳運(yùn)芝)
- 主通風(fēng)機(jī)司機(jī)巡回檢查制度
- 出監(jiān)教育內(nèi)容2
評論
0/150
提交評論