




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、技術(shù)架構(gòu)規(guī)范技術(shù)架構(gòu)規(guī)范11/11技術(shù)架構(gòu)規(guī)范序言1.1目的經(jīng)過對(duì)系統(tǒng)整體架構(gòu)和技術(shù)規(guī)范的描述,為下一步大規(guī)模設(shè)計(jì)開發(fā)供應(yīng)基礎(chǔ)和規(guī)范。1.2對(duì)象與范圍項(xiàng)目管理人員,開發(fā)人員,測試人員。1.3歸納系一致期,以實(shí)現(xiàn)功能為主,效率性能為輔,但設(shè)計(jì)兼顧未來性能的擴(kuò)展,以減少未來重構(gòu)的工作量。webapp按邏輯分為兩層,第一層用戶服務(wù)接入,第二層內(nèi)部服務(wù)。第一層一期不分模塊,以二級(jí)目錄形式表示不同樣模塊,第二層依照不同樣服務(wù)分模塊,第一層和第二層之間使用hessian通信。第一層和第二層獨(dú)立部署,第二層的不同樣模塊也可以獨(dú)立部署。下一期考慮第一層分模塊的二級(jí)域名獨(dú)立部署,并實(shí)現(xiàn)單點(diǎn)登錄。webapp采用
2、集群負(fù)載均衡,數(shù)據(jù)庫采用負(fù)載均衡和讀寫分別,以滿足必然的性能需求。文檔描述了各層結(jié)構(gòu)和模塊使用的技術(shù)和框架。最后描述了開發(fā)的規(guī)范和用到的開發(fā)工具。文檔可是描述了一期的架構(gòu),系統(tǒng)架構(gòu)圖一期系統(tǒng)架構(gòu)以下層次和模塊3.1前端負(fù)載均衡nginx是一個(gè)口碑很好的開源免費(fèi)WEB服務(wù)器,國內(nèi)很多大型網(wǎng)站都轉(zhuǎn)選nginx平臺(tái),比方騰訊,豆瓣等。Nginx可以實(shí)現(xiàn)動(dòng)靜分別和webapp的負(fù)載均衡。動(dòng)靜分別動(dòng)靜分別可以很好得分擔(dān)服務(wù)器的負(fù)載,有兩種方式實(shí)現(xiàn)動(dòng)靜分別。1使用2利用2級(jí)域名,配置特地的靜態(tài)文件服務(wù)器。nginx的url轉(zhuǎn)發(fā)功能,把靜態(tài)央求轉(zhuǎn)發(fā)到靜態(tài)服務(wù)器或在nginx當(dāng)?shù)剞k理,動(dòng)向央求轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器
3、。我們當(dāng)前部署上采用第二種方式,同時(shí)也實(shí)現(xiàn)第一種方式。系統(tǒng)可以配置動(dòng)向服務(wù)器地址和靜態(tài)服務(wù)器地址,在生成頁面時(shí)獲取這兩個(gè)地址,對(duì)圖片、js腳本、css和靜態(tài)頁面使用靜態(tài)配置生成url,對(duì)ajax懇求和動(dòng)向頁面使用動(dòng)向服務(wù)器地址生成url。負(fù)載均衡nginx可以配置upstream服務(wù)器組,實(shí)現(xiàn)組內(nèi)的負(fù)載均衡。經(jīng)過ip_hash的方式把動(dòng)向央求轉(zhuǎn)發(fā)到組內(nèi)的某臺(tái)服務(wù)器,同時(shí)保證客戶端在IP不變的情況下素來接見同一臺(tái)服務(wù)器,解決session保持問題。3.2Webapp網(wǎng)站前端,基于j2ee,spring框架開發(fā)。頁面顯現(xiàn)和控制系統(tǒng)有三種頁面方式。1動(dòng)向同步央求,經(jīng)過velocity模板生成頁面,客
4、戶端刷新整個(gè)頁面。2ajax異步央求。Ajax異步央求又有三種形式:與velocity模板結(jié)合返回返回json格式;直接返回簡單的字符串。html串;3模板生成的純靜態(tài)頁面前臺(tái)頁面采用的框架和第三方技術(shù)有:1jquery-core(事件辦理,ajax央求,頁面刷新)。2Jqzoom(圖片放大器)3Jquery-validator(輸入考據(jù))權(quán)限安全控制使用apacheshiro框架實(shí)現(xiàn)權(quán)限控制。Shiro是一個(gè)富強(qiáng)、使用簡單的權(quán)限安全框架。同時(shí)Shiro也能與cas單點(diǎn)登錄整合,方便在下一期擴(kuò)展多個(gè)應(yīng)用模塊。框架把權(quán)限系統(tǒng)分成subject(當(dāng)前用戶),manager(管理所適用戶),real
5、ms(權(quán)限數(shù)據(jù))三層。支持基于實(shí)質(zhì)資源和基于角色的權(quán)限校驗(yàn),同時(shí)我們擴(kuò)展shiro的UsernamePasswordToken,Realm實(shí)現(xiàn)基于考據(jù)碼和數(shù)據(jù)庫用戶密碼的用戶登錄考據(jù)。在過濾器層,我們暫時(shí)只使用shiro1AnonymousFilter?匿名過濾器2AuthenticatingFilter認(rèn)證過濾器的3各種類過濾器控制接見:任何人可以接見。必定經(jīng)過身份認(rèn)真才能接見(跳轉(zhuǎn)到登錄頁面)。可以對(duì)當(dāng)前subject直接調(diào)用方法完成判斷可否登錄,登錄,注銷等操作,方便對(duì)登錄功能的擴(kuò)展??刂破鲗硬捎胹pring基于解說的控制器,控制器支持velocity視圖返回,ajaxjson返回和aj
6、axtext返回。數(shù)據(jù)考據(jù)使用和擴(kuò)展apache的common-validator。邏輯層采用spring基于解說的事務(wù)控制。數(shù)據(jù)長遠(yuǎn)層采用ibatis框架,基于sqlmap配置實(shí)現(xiàn)數(shù)據(jù)的讀寫,sqlmap配置可以控制基層sql語句,便于數(shù)據(jù)庫的調(diào)優(yōu)。緩存的辦理使用緩存可以降低與數(shù)據(jù)庫的交互次數(shù),極大提高系統(tǒng)性能。我們采用ehcache緩存框架。用到兩種緩存方式:1頁面緩存:直接在過濾器層對(duì)頁面進(jìn)行緩存辦理,在過濾器層就可以返回緩存的頁面,不用轉(zhuǎn)到控制器去辦理。對(duì)于頁面比較復(fù)雜,調(diào)用業(yè)務(wù)邏輯比很多的頁面,采用頁面緩存收效很好,比方首頁。2基于解說的方法緩存,可以對(duì)方法的返回值緩存,存入的參數(shù)可
7、以組成key??梢栽谶壿媽邮褂镁彺?,也可以在長遠(yuǎn)層試用。對(duì)于央求簡單,接見量大,但更正頻率比較低的數(shù)據(jù)進(jìn)行緩存可以達(dá)到很好的收效。比方商品分類,系統(tǒng)數(shù)據(jù)字典,地區(qū)等數(shù)據(jù)。Ehcache支持分布式緩存,ehcache支持服務(wù)器之間經(jīng)過rmi調(diào)用保持所有服務(wù)器之間緩存同步。緩存的兩種過期體系:1準(zhǔn)時(shí)過期,直接經(jīng)過ehcache的配置確定緩存過期頻率。2主動(dòng)通知,管理員在后臺(tái)系統(tǒng)進(jìn)行某些操作后,經(jīng)過hessian遠(yuǎn)程調(diào)用通知應(yīng)用服務(wù)器緩存過期。只需通知一臺(tái)應(yīng)用服務(wù)器,應(yīng)用服務(wù)器之間經(jīng)過ehcache自帶分布式緩存復(fù)制方式同步緩存。后臺(tái)管理系統(tǒng)可以供應(yīng)刷新緩存功能,管理員在后臺(tái)管理系統(tǒng)主動(dòng)刷新緩存。去
8、其他模塊之間的通信經(jīng)過hessian遠(yuǎn)程調(diào)用框架,實(shí)現(xiàn)與其他模塊功能之間的通信。Hessian是一個(gè)基于http的二進(jìn)制遠(yuǎn)程過程調(diào)用框架,比webservice更高效。與Spring框架很好結(jié)合,開發(fā)簡單。3.3后臺(tái)管理系統(tǒng)管理員用來保護(hù)網(wǎng)站的系統(tǒng)。基于j2eespring框架。與網(wǎng)站前臺(tái)使用到的技術(shù)差不多,現(xiàn)只介紹不同樣點(diǎn):頁面的顯現(xiàn)大部分央求采用頁面刷新的體系。頭部,中部左側(cè)菜單和底部固定不變。中部右側(cè)iframe為主操作區(qū),每次操作刷新頁面。商品描述的編寫需要使用到富文本編寫器,我們采用開源的TinyMCE,TinyMCE在國內(nèi)應(yīng)用比較廣泛。緩存體系后臺(tái)系統(tǒng)接見不是很頻頻,同事管理員需要
9、的是實(shí)時(shí)的數(shù)據(jù),所今后臺(tái)管理系統(tǒng)不對(duì)數(shù)據(jù)進(jìn)行緩存。權(quán)限管理采用spingsecurity框架進(jìn)行權(quán)限的控制,基于用戶、角色和資源的授權(quán)體系。3.4支付模塊:支付模塊主要功能是訂單的管理,與銀行等支付系統(tǒng)的交互?;趈2eespring框架。采用springmvc模式。與銀行和其他支付系統(tǒng)的交互需要供應(yīng)一個(gè)Url地址,供銀行在用戶完成支付后回調(diào),通知系統(tǒng)已經(jīng)支付成功。與內(nèi)部模塊之間的通信主要來自網(wǎng)站前端的調(diào)用?;趆essian體系。3.5物流模塊支付模塊當(dāng)前主要功能是調(diào)用物流公司的接口追蹤物流狀態(tài),隨著系統(tǒng)的不斷發(fā)展,在擁有自己的物流后,可能發(fā)展成一個(gè)弘大的系統(tǒng)?;趈2eespring框架。
10、采用springmvc模式?;趆essian體系對(duì)外供應(yīng)遠(yuǎn)程功能服務(wù)。3.6郵件模塊郵件模塊主要用來向客戶發(fā)送郵件?;趈2eespring框架。采用springmvc模式。郵件發(fā)送使用javamail包發(fā)送郵件,支持以固定模板發(fā)送郵件。準(zhǔn)時(shí)發(fā)送使用spring+quartz框架實(shí)現(xiàn)準(zhǔn)時(shí)任務(wù)發(fā)送郵件。與內(nèi)部模塊之間的通信為網(wǎng)站前端和后臺(tái)管理系統(tǒng)供應(yīng)遠(yuǎn)程調(diào)用服務(wù)?;趆essian體系。3.7短信模塊短信模塊主要用來向客戶發(fā)送短信?;趈2eespring框架。采用springmvc模式。郵件發(fā)送調(diào)用短信設(shè)備api發(fā)送短信,支持以固定模板發(fā)送短信。準(zhǔn)時(shí)發(fā)送使用spring+quartz框架實(shí)現(xiàn)
11、準(zhǔn)時(shí)任務(wù)發(fā)送短信。與內(nèi)部模塊之間的通信為網(wǎng)站前端和后臺(tái)管理系統(tǒng)供應(yīng)遠(yuǎn)程調(diào)用服務(wù)。基于hessian體系。3.8進(jìn)銷存模塊調(diào)用A8系統(tǒng)接口,實(shí)現(xiàn)庫存的管理?;趈2eespring框架。采用springmvc模式。調(diào)用采用spring+xfile框架調(diào)用a8系統(tǒng)webservice。與內(nèi)部模塊之間的通信為網(wǎng)站前端和后臺(tái)管理系統(tǒng)供應(yīng)遠(yuǎn)程調(diào)用服務(wù)?;趆essian體系。3.9找尋模塊為網(wǎng)站供應(yīng)找尋服務(wù)。包括商品檢索和問答式找尋的問題檢索。基于j2eespring框架。采用springmvc模式。檢索框架我們使用國產(chǎn)開源coreSeek找尋引擎,基于俄國開源項(xiàng)目Sphinx研發(fā)并獨(dú)立開發(fā)的找尋引擎。
12、自帶中文分詞器mmseg,有大量中文文檔。供應(yīng)JAVAAPI。索引建立效率高而且與業(yè)務(wù)沒關(guān)。在國內(nèi)有大量成功案例。與內(nèi)部模塊之間的通信為網(wǎng)站前端供應(yīng)遠(yuǎn)程調(diào)用服務(wù)?;趆essian體系。3.10第三方服務(wù)調(diào)用模塊調(diào)用第三方合作服務(wù)商的接口。基于j2eespring框架。采用springmvc模式。調(diào)用采用spring+xfile框架調(diào)用第三方服務(wù)webservice。與內(nèi)部模塊之間的通信為網(wǎng)站前端和后臺(tái)管理系統(tǒng)供應(yīng)遠(yuǎn)程調(diào)用服務(wù)?;趆essian體系。3.11對(duì)外服務(wù)接口對(duì)外面系統(tǒng)供應(yīng)webservice接口服務(wù)服務(wù)采用spring+xfile框架對(duì)外供應(yīng)webservice服務(wù)。與內(nèi)部模塊之
13、間的通信調(diào)用內(nèi)部其他模塊的服務(wù)。基于hessian體系。3.12數(shù)據(jù)庫使用數(shù)據(jù)庫儲(chǔ)藏?cái)?shù)據(jù),并使用讀寫分別體系提高數(shù)據(jù)庫性能。數(shù)據(jù)庫讀寫分別我們使用開源的mysql代理Amoeba實(shí)現(xiàn)數(shù)據(jù)庫的讀寫分別,把寫央求發(fā)送到主服務(wù)器,讀央求發(fā)送到從服務(wù)器,主從之間經(jīng)過mysql自帶的復(fù)制體系實(shí)現(xiàn)數(shù)據(jù)的同步。數(shù)據(jù)庫負(fù)載均衡Amoeba支持輪詢和權(quán)重兩種負(fù)載均衡體系,我們使用權(quán)重任載體系實(shí)現(xiàn)讀服務(wù)器的負(fù)載均衡。數(shù)據(jù)庫表引擎的選擇主服務(wù)器必定使用innodb支持事務(wù)的儲(chǔ)藏引擎,行級(jí)鎖表。而從服務(wù)器可以考慮使用myisam引擎,不支持事務(wù),表級(jí)鎖表,擁有更高的讀寫效率,但不支持外鍵。主從數(shù)據(jù)庫的差異優(yōu)化主服務(wù)器
14、只需要建立唯一索引和外鍵拘束,其他針對(duì)對(duì)盤問優(yōu)化的索引可以不建立,這要可以提高主服務(wù)器的性能。從服務(wù)器字段使用char而不用varchar,沒有varchar,text,blob字段的表是靜態(tài)表,反之是動(dòng)向表,靜態(tài)表的檢索效率要比動(dòng)向表好若干倍。工程命名工程以動(dòng)物命名,結(jié)合了各種動(dòng)物特色與我們各工程的職責(zé):公共接口工具magpie(喜鵲)網(wǎng)站前臺(tái)服務(wù)bull(公牛)物流cheetah(獵豹)支付lion(獅子)進(jìn)銷存接口?fox(狐貍)找尋dog(狗)郵件eagle?(鷹)短信pigeon(鴿子)后臺(tái)管理horse(馬)調(diào)用第三方合作接口mouse(老鼠)對(duì)外服務(wù)接口?camel(駱駝)工程規(guī)
15、范5.1工程目錄結(jié)構(gòu)src源碼WebContentWEN-INFlibjar包c(diǎn)onfig配置文件views視圖模板layout布局模板screen頁面模板各模塊common公共的styles樣式文件resources資源文件scriptsjs文件common公共js各模塊,各開源js項(xiàng)目5.2包結(jié)構(gòu)包命名基根源則:小寫字母開頭,若是有多個(gè)單詞,除第一個(gè)單詞之外的單詞首字母大寫公共工具接口工程公共工具:各層的公共基類:下的各子包遠(yuǎn)程調(diào)用公共dto:供應(yīng)服務(wù)的工程名.remoting.dto.業(yè)務(wù)子模塊遠(yuǎn)程調(diào)用公共接口:供應(yīng)服務(wù)的工程名.業(yè)務(wù)子模塊各模塊工程數(shù)據(jù)對(duì)象:工程名.domain.業(yè)務(wù)子
16、模塊長遠(yuǎn)層dao接口:工程名.dao.業(yè)務(wù)子模塊長遠(yuǎn)層dao接口實(shí)現(xiàn):工程名.dao.業(yè)務(wù)子模塊.長遠(yuǎn)層框架名(ibatis)長遠(yuǎn)層sqlmap:工程名.dbMap.業(yè)務(wù)子模塊.數(shù)據(jù)庫種類(mysql)業(yè)務(wù)邏輯接口:工程名.service.業(yè)務(wù)子模塊業(yè)務(wù)邏輯實(shí)現(xiàn):工程名.service.業(yè)務(wù)子模塊.implWeb控制器action:com.工程名.業(yè)務(wù)子模塊Web考據(jù)器:com.工程名.業(yè)務(wù)子模塊Web過濾器:com.工程名.工具:工程名.util遠(yuǎn)程調(diào)用接口實(shí)現(xiàn):工程名.業(yè)務(wù)子模塊.impl5.3類、接口命名類命名基根源則:首字母大寫,多個(gè)單詞的首字母大寫接口命名基根源則:以大寫字母數(shù)據(jù)對(duì)象
17、:數(shù)據(jù)庫表名.javaDao接口:I+數(shù)據(jù)對(duì)象名+I開頭,若是有多個(gè)單詞,每個(gè)單詞頭字母大寫Idao實(shí)現(xiàn):數(shù)據(jù)對(duì)象名+Dao+框架名(Ibatis).javasqlmap:數(shù)據(jù)對(duì)象名.xml業(yè)務(wù)邏輯接口:I+數(shù)據(jù)對(duì)象名+業(yè)務(wù)邏輯實(shí)現(xiàn):數(shù)據(jù)對(duì)象名+Webaction:domain名+Webvalidator:domain名+Dto:*遠(yuǎn)程調(diào)用接口:I+數(shù)據(jù)對(duì)象名+遠(yuǎn)程調(diào)用實(shí)現(xiàn):數(shù)據(jù)對(duì)象名+5.4變量和方法命名類變量、局部變量命名規(guī)范:變量名首字母必定小寫,若是該變量名有多個(gè)單詞組成,后邊的單詞首字母大寫,單詞與單詞之間不要使用_做連接。類常量命名規(guī)范:所有字母大寫,若是有多個(gè)單詞組成,單詞與單詞
18、之間以_分開。而且該變量必定是公共、靜態(tài)、final種類。方法命名規(guī)范:方法名首字母必定小寫,若是該變量名有多個(gè)單詞組成,后邊的單詞首字母大寫,單詞與單詞之間不要使用_做連接。方法參數(shù)名命名規(guī)范:參數(shù)名首字母必定小寫,若是該變量名有多個(gè)單詞組成,后邊的單詞首字母大寫,單詞與單詞之間不要使用_做連接。5.5說明類、接口的說明類、接口必定要有說明。描述類、接口的功能,作者,版本,近來更正時(shí)間。類的說明必定寫在該類的聲明語法從前。在說明中要描述該類的基本作用,作者,日期,版本。/*XXXX功能類*authorXXXversion更正時(shí)間作者*/類、接口的變量和常量說明類、接口的變量和常量必定有說明,變量和常量說明必定寫在變量和常量定義從前,簡單描述其代表的意義。/*XXXXXX*/類、接口方法說明方法必定要有說明,方
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中儲(chǔ)糧集團(tuán)河南分公司招聘(114人)筆試參考題庫附帶答案詳解
- 知識(shí)產(chǎn)權(quán)國際化保護(hù)的挑戰(zhàn)與機(jī)遇
- 2025至2030年中國電動(dòng)車用高性能牽引電機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國電力紅外加熱系統(tǒng)數(shù)據(jù)監(jiān)測研究報(bào)告
- 社交媒體與電商融合的商業(yè)模式探討
- 2025至2030年中國環(huán)氧樹脂鉆石膠數(shù)據(jù)監(jiān)測研究報(bào)告
- 政府征收資產(chǎn)合同范本
- 科技引領(lǐng)綠色灌裝機(jī)技術(shù)的創(chuàng)新與發(fā)展
- 科技公司內(nèi)部溝通與領(lǐng)導(dǎo)力塑造培訓(xùn)
- 現(xiàn)代門鎖控制系統(tǒng)的智能化管理與數(shù)據(jù)安全保障
- Unit5 What day is it today?(教學(xué)設(shè)計(jì))-2023-2024學(xué)年教科版(廣州)英語四年級(jí)下冊
- 法院生活費(fèi)申請書
- 2025年益陽醫(yī)學(xué)高等專科學(xué)校高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年湖南工藝美術(shù)職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 醫(yī)用氣體施工方案
- 2024 年陜西公務(wù)員考試行測試題(B 類)
- 【課件】學(xué)校后勤管理工作
- 2025-2030年中國聚丙烯酰胺(PAM)市場發(fā)展?fàn)顩r及未來投資戰(zhàn)略決策報(bào)告新版
- 幼兒園師德師風(fēng)培訓(xùn)內(nèi)容
- 課題申報(bào)書:產(chǎn)教融合背景下護(hù)理專業(yè)技能人才“崗課賽證”融通路徑研究
- 住宅小區(qū)消防設(shè)施檢查方案
評(píng)論
0/150
提交評(píng)論