網站系統(tǒng)概要設計說明書_第1頁
網站系統(tǒng)概要設計說明書_第2頁
網站系統(tǒng)概要設計說明書_第3頁
網站系統(tǒng)概要設計說明書_第4頁
網站系統(tǒng)概要設計說明書_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

系統(tǒng)開發(fā)項目-概要設計說明書25/26********************建設項目*********************系統(tǒng)開發(fā)“***********”系統(tǒng)建設概要設計說明書*********有限公司2015.5版本v1.0文檔審批修訂記錄日期版本編號簡要說明著者審核者審核日期2015.5.5V1.0王**說明:“簡要說明”主要是對修訂原因和修訂的內容進行簡要說明

目錄TOC\o"1-5"\h\z\u1引言 41.1編寫目的 41.2背景 42系統(tǒng)總體設計 42.1需求規(guī)定 42.1.1系統(tǒng)集成建設 42.1.2系統(tǒng)功能設計 5網站欄目設計 5后臺功能設計 52.1.3系統(tǒng)界面設計 72.1.4系統(tǒng)可擴展性設計 82.1.5系統(tǒng)性能設計 82.2運行環(huán)境 82.3基本設計概念 92.3.1系統(tǒng)網絡拓撲圖 92.4技術路線 92.4.1底層開發(fā)框架 92.4.2Web開發(fā)框架 10SpringMVC 10Struts1 12Struts2 142.4.3前臺JavaScript框架 162.4.4數據持久層框架 17Hiberante 17MyBatis 19SpringDataJpa 20綜述 213系統(tǒng)部署 214系統(tǒng)性能設計 214.1高效的數據算法 214.2負載均衡 214.3良好的接口設計 224.4低耗的磁盤IO 224.5細粒度的事務管理 224.6應用配置相關調優(yōu) 234.7數據庫性能設計 234.7.1索引控制 234.7.2SQL優(yōu)化 234.8數據庫高可用性設計 234.8.1設計原則 23分布性原則 23讀寫分離原則 23垂直分割原則 24水平分割原則 245系統(tǒng)出錯設計 245.1出錯信息 245.2補救措施 255.3系統(tǒng)維護設計 25

1引言1.1編寫目的本文檔基于《*********開發(fā)項目招標文件》和《*********開發(fā)項目開發(fā)合同》和《“*********”系統(tǒng)需求規(guī)格說明書》,進行“*********”系統(tǒng)開發(fā)項目的概要設計。通過編制本文檔,明確本項目的整體架構和整體設計思想,并為系統(tǒng)的詳細設計和技術實現(xiàn)提供指導和幫助。在下一階段的詳細設計中,程序設計員就可參考此概要設計報告,對系統(tǒng)進行詳細設計。在以后的軟件測試以及軟件維護階段也可參考此說明書,以便于了解在概要設計過程中所完成的各模塊設計結構,或在修改時找出在本階段設計的不足或錯誤,更好的完善和優(yōu)化文檔。1.2背景 *********建設是*********信息化建設的一項重要工作。待網站建設完成,將顯著提升原*********各部門內計算機網絡應用的水平,提升*********的辦公效率及業(yè)務水平。充分考慮*********的實際工作情況、業(yè)務流程、網站建設的目標要求,在本次網站設計構建中,應始終堅持安全、便捷、切合實際工作的原則,有利于*********廣大教職工的高效、安全及簡單易用。根據*********建設的目標和業(yè)務需求,在充分分析*********現(xiàn)有通信網絡基礎上,構建*********網絡,作為整個*********網運行的基礎網,網站應能滿足*********多項業(yè)務、高帶寬應用的需求,因此*********網將建成一個承載多種業(yè)務的網絡平臺。2系統(tǒng)總體設計2.1需求規(guī)定2.1.1系統(tǒng)集成建設包括基礎平臺建設、網絡設備、安全設備、服務器設備和系統(tǒng)軟件集成。2.1.2系統(tǒng)功能設計網站應用系統(tǒng)開發(fā),包括門戶網站建設、后臺管理系統(tǒng)建設。網站欄目設計網站欄目功能說明備注網站前臺管理行業(yè)資訊展示行業(yè)內最新資訊信息企業(yè)展廳展示企業(yè)產品圖片專家點評展示專家的點評信息活動展示以圖文列表形式展示活動信息聯(lián)系我們展示聯(lián)系方式信息網站后臺管理欄目內容管理各類文章的添加及管理廣告及廣告位管理廣告的添加及管理聯(lián)系我們和友情鏈接管理友情鏈接添加、編輯及聯(lián)系我們的信息管理輿論監(jiān)督管理輿論監(jiān)督信息的添加及管理企業(yè)管理企業(yè)信息的添加及管理后臺功能設計.1欄目內容管理進入欄目內容管理頁面,點擊欄目列表,出現(xiàn)欄目列表頁,在此頁面,可以新建文章。點擊欄目名稱,進入欄目內容頁,所有文章內容以信息分頁列表形式呈現(xiàn),可對文章進行查詢、編輯、刪除操作。在文章信息分頁列表中,可點擊編輯按鈕,點擊按鈕后,可在對文章內容進行編輯。文章內容包括:所屬欄目、標題、信息來源、文章作者、外鏈、文章內容頁配圖、文章列表頁圖片、首頁幻燈配圖、首頁幻燈配圖描述、文章內容、文章排序。文章修改后,可直接發(fā)布。點擊新建文章按鈕,可在文章內容信息板塊中新建文章,并可直接發(fā)布上線。.2廣告及廣告位管理在廣告位管理中,分為廣告位添加、廣告位列表;廣告位添加中,可新增廣告位,新增廣告位的內容是:所屬欄目名稱、廣告位名稱、廣告位寬度、廣告位高度、廣告位描述。其中除廣告位描述外,其他字段均是必填項;點擊提交按鈕后,廣告位添加成功。點擊重置按鈕,則所有廣告位信息重置。在廣告位列表中,可新建廣告位,同時將已建好的廣告位以分頁信息列表形式展示??蓪σ呀ê玫膹V告位進行編輯、刪除操作;在廣告管理中,分為廣告添加和廣告列表;廣告添加中,可添加廣告,每條新增的廣告只能對應一個廣告位。所添加的內容是:所屬欄目名稱、所屬廣告位名稱、廣告名稱、廣告url、上傳廣告。其中上傳廣告需要上床一張廣告圖片。點擊提交按鈕后,廣告添加成功。點擊重置按鈕,則所填寫的廣告信息被重置。在廣告列表中,可新建廣告,同時已經建好的廣告將以分頁信息列表的形式呈現(xiàn)??蓪V告進行編輯和刪除操作。.3聯(lián)系我們和友情鏈接管理在友情鏈接中,分為友情鏈接列表和添加友情鏈接。在友情鏈接列表中,已添加好的友情鏈接將以分頁信息列表的形式呈現(xiàn)。并可在此頁面進行新建友情鏈接操作??蓪π畔⒘斜磉M行編輯和刪除操作。在添加友情鏈接中,需要填寫的字段內容是:友情鏈接名稱、友情鏈接圖片、友情鏈接url、友情鏈接排序。其中除友情鏈接排序外,其他字段均是必填項。再聯(lián)系我們中,點擊聯(lián)系我們列表,可展示出聯(lián)系方式??蓪β?lián)系方式進行編輯和刪除。聯(lián)系方式包括的字段有:公司名稱、公司地址、郵箱、廣告合作QQ、電話,所有字段均是必填項。.3輿情監(jiān)督管理輿論管理分為輿論列表和添加輿論。在輿論列表中,可新增輿論。已添加的輿論內容以分頁信息列表的形式呈現(xiàn),在列表中,可對輿論內容進行編輯和刪除操作。在添加輿論中,需要填寫的字段包括:輿論標題、輿論內容、輿論排序。.4企業(yè)管理在企業(yè)管理中,分為企業(yè)列表和添加企業(yè)。在企業(yè)列表中可新增企業(yè),已添加的企業(yè)信息內容將以分頁信息列表的形式呈現(xiàn),列表中的內容可進行編輯和刪除操作。在添加企業(yè)中,需要填寫的內容字段包括:企業(yè)名稱、所屬欄目名稱、企業(yè)logo、企業(yè)展廳列表圖片、企業(yè)url、企業(yè)關鍵字、是否推薦到首頁、企業(yè)排序。在企業(yè)圖片組管理中,分為企業(yè)圖片組列表和添加企業(yè)圖片組。在企業(yè)圖片組列表中可新增企業(yè)圖片,已添加的企業(yè)圖片信息內容將以分頁信息列表的形式呈現(xiàn),列表中的內容可進行編輯和刪除操作。在添加企業(yè)圖片組中,需要填寫的內容字段包括:所屬企業(yè)名稱、企業(yè)圖片信息(企業(yè)圖片、描述、url)。點擊提交按鈕后,添加成功。點擊重置按鈕,則所填寫的信息被重置。2.1.3系統(tǒng)界面設計 系統(tǒng)的界面整體設計如下:1)頁面內容:主題突出,站點定義、術語和行文格式統(tǒng)一、規(guī)范、明確,欄目、菜單設置和布局合理,傳遞的信息準確、及時。內容豐富,文字準確,語句通順;專用術語規(guī)范,行文格式統(tǒng)一規(guī)范。2)導航結構:頁面具有明確的導航指示,且便于理解,方便用戶使用。3)技術環(huán)境:頁面大小適當,能用各種常用瀏覽器以不同分辨率瀏覽;無錯誤鏈接和空鏈接;采用CSS處理,控制字體大小和版面布局。4)藝術風格:界面、版面形象清新悅目、布局合理,字號大小適宜、字體選擇合理,前后一致,美觀大方;動與靜搭配恰當,動靜效果好;色彩和諧自然,與主題內容相協(xié)調。2.1.4系統(tǒng)可擴展性設計本系統(tǒng)未來要接入“中國教育之聲”平臺,向自媒體和社交性網站方向發(fā)展,所以系統(tǒng)設計要求能夠體現(xiàn)擴展性要求,以適應將來功能擴展的需求。2.1.5系統(tǒng)性能設計系統(tǒng)需要滿足百萬級用戶量,上千同時并發(fā),響應時間0.2秒內,保證系統(tǒng)穩(wěn)定性、安全性、數據完整性等。2.2運行環(huán)境操作系統(tǒng):LinuxWEB服務器:Apache數據庫:MYSQL開發(fā)語言:PHP5瀏覽器:IE8.0+chrome30.0以上,及其他主流瀏覽器2.3基本設計概念2.3.1系統(tǒng)網絡拓撲圖2.4技術路線2.4.1底層開發(fā)框架PHP(外文名:HypertextPreprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,易于學習,使用廣泛,主要適用于Web開發(fā)領域。優(yōu)點:開放源代碼所有的PHP源代碼事實上都可以得到。免費性和其它技術相比,PHP本身免費且是開源代碼??旖菪猿绦蜷_發(fā)快,運行快,技術本身學習快。嵌入于HTML:因為PHP可以被嵌入于HTML語言,它相對于其他語言。編輯簡單,實用性強,更適合初學者??缙脚_性強由于PHP是運行在服務器端的腳本,可以運行在UNIX、LINUX、WINDOWS、MacOS下。效率高PHP消耗相當少的系統(tǒng)資源。圖像處理用PHP動態(tài)創(chuàng)建圖像,PHP圖像處理默認使用GD2。且也可以配置為使用imagemagick進行圖像處理。面向對象在php4,php5中,面向對象方面都有了很大的改進,php完全可以用來開發(fā)大型商業(yè)程序。專業(yè)專注PHP支持腳本語言為主,同為類C語言。缺點:對遞歸的不良支持許多PHP模塊都不是線程安全的沒有命名空間混亂的許可證缺少標準框架2.4.2Web開發(fā)框架SpringMVCSpringMVC屬于SpringFrameWork的后續(xù)產品,已經融合在SpringWebFlow里面。Spring框架提供了構建Web應用程序的全功能MVC模塊。使用Spring可插入的MVC架構,可以選擇是使用內置的SpringWeb框架還可以是Struts這樣的Web框架。通過策略接口,Spring框架是高度可配置的,而且包含多種視圖技術,例如JavaServerPages(JSP)技術、Velocity、Tiles、iText和POI。SpringMVC框架并不知道使用的視圖,所以不會強迫您只使用JSP技術。SpringMVC分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。優(yōu)點:對覆蓋綁定(overridingbinding)、驗證(validation)等提供生命周期管理;清晰的角色劃分:控制器(controller)、驗證器(validator)、命令對象(commandobect)、表單對象(formobject)、模型對象(modelobject)、Servlet分發(fā)器(DispatcherServlet)、處理器映射(handlermapping)、試圖解析器(viewresoler)等等。每一個角色都可以由一個專門的對象來實現(xiàn);強大而直接的配置方式:將框架類和應用程序累都能作為JavaBean配置,支持跨多個context的引用;可適配、非侵入:可以根據不同的應用場景,選擇何事的控制器子類(simple型、command型、from型、wizard型、multi-action型或者自定義),而不是一個單一控制器(比如Action/ActionForm)繼承;可重用的業(yè)務代碼:可以使用現(xiàn)有的業(yè)務對象作為命令或表單對象,而不需要去擴展某個特定框架的基類;可定制的handlermapping和viewresolution:Spring提供從最簡單的URL映射,到復雜的、專用的定制策略。與某些webMVC框架強制開發(fā)人員使用單一特定技術相比,Spring顯得更加靈活;靈活的model轉換:在Springweb框架中,使用基于Map的鍵/值對來達到輕易的與各種視圖技術集成;簡單而強大的JSP標簽庫(SpringTagLibrary):支持包括諸如數據綁定和主題(theme)之類的許多功能。他提供在標記方面的最大靈活性;SpringBean的生命周期可以被限制在當前的HTTpRequest或者HTTpSession。準確的說,這并非SpringMVC框架本身特性,而應歸屬于SpringMVC使用的WebApplicationContext容器;可定制的本地化和主題(theme)解析:支持在JSP中可選擇地使用Spring標簽庫、支持JSTL、支持Velocity(不需要額外的中間層)等等;可定制的綁定(binding)和驗證(validation):比如將類型不匹配作為應用級的驗證錯誤,這可以保證錯誤的值。再比如本地化的日期和數字綁定等等。在其他某些框架中,你只能使用字符串表單對象,需要手動解析它并轉換到業(yè)務對象;與許多表示層技術/框架無縫集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF等;SpringMVC完美支持Rest服務;便于測試——歸功于IoC;性能和原生態(tài)JSP和Servlet相差無幾;缺點:大量的XML配置文件;太過靈活——沒有公共的父控制器;沒有內置的Ajax支持;Struts1Struts是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,并在2004年3月成為ASF的頂級項目。它通過采用JavaServlet/JSP技術,實現(xiàn)了基于JavaEEWeb應用的MVC設計模式的應用框架,是MVC經典設計模式中的一個經典產品。Struts是一個靈活的基于標準的技術(如Javaservlet,控制層javabean,resourcebundle,和XML,以及各種ApacheCommons包、BeanUtils和鏈的責任??蚣芸梢詭椭鸀槟膽贸绦騽?chuàng)建一個可擴展的開發(fā)環(huán)境,基于出版標準和證明設計模式。優(yōu)點:實現(xiàn)MVC模式,結構清晰,使開發(fā)者只關注業(yè)務邏輯的實現(xiàn);有豐富的tag可以用,Struts的標記庫(Taglib)如能靈活動用,則能大大提高開發(fā)效率。另外,就目前國內的JSP開發(fā)者而言,除了使用JSP自帶的常用標記外,很少開發(fā)自己的標記,或許Struts是一個很好的起點;頁面導航,頁面導航將是今后的一個發(fā)展方向,事實上,這樣做,使系統(tǒng)的脈絡更加清晰。通過一個配置文件,即可把握整個系統(tǒng)個部分之間的聯(lián)系,這對于后期的維護有著莫大的好處。尤其是當另一批開發(fā)者接受這個項目時,這種優(yōu)勢體現(xiàn)的更加明顯;提供Exception處理機制;數據庫鏈接池管理;支持l18N;缺點:轉到展示層時,需要配置forward,每一次轉到展示層,相信大多數都是直接轉到JSP,而涉及到轉向,需要配置forward,如果有十個展示層的JSP,需要配置詩詞Struts,而且還不包括有時候目錄、文件變更、需要重新修改forward,注意,每次修改配置之后,要求重新部署整個項目。而tomcat這樣的服務器,還必須重新啟動服務器,如果業(yè)務變更復雜頻繁的系統(tǒng),這樣的操作簡直不可想象;Struts的Action必須是Thread—safe方式,它僅僅允許一個實例去處理所有的請求。所有Action用到的所有的資源都必須統(tǒng)一同步,這個就引起了線程安全的問題;測試不方便,Struts的每個Action都用Web層耦合在一起,這樣它的測試依賴于Web容器,單元測試也很難實現(xiàn)。不過有一個Junit的擴展工具StrutsTestCase可以實現(xiàn)它的單元測試;類型的轉換Struts的FormBean把所有的數據都作為String類型,它可以使用工具Commins—Beanutils進行類型轉化。但它的轉化都是在Class級別,而且轉化的類型是不可配置的。類型轉化時的錯誤信息返回給用戶也是非常困難的;對Servlet的依賴過強,Struts處理Action時必須要依賴ServletRequest和ServletResponse,所以它擺脫不來哦Serlvet容器;前端表達式語言方面,Struts集成了JSTL,所以它主要使用JSTL的表達式語言來獲取數據,可是JSTL的表達式語言在Collection和索引屬性方面處理顯得很弱;對Action執(zhí)行的控制困難,Struts創(chuàng)建一個Action,如果想控制它的執(zhí)行順序將會非常困難,甚至你要重新去寫Servlet來實現(xiàn)你的這個功能需求;對Action執(zhí)行前和后的處理。Struts處理Action的時候是基于Class的Hierarchies,很難在Action處理前和后進行操作;對事件支持不夠,在Struts中,實際是一個表單Form對應一個Action類(或DispatchAction),換一句話說:在Struts中實際是一個表單只能對應一個事件,Struts這種事件方式稱為applicationevent,applicationevent和componentsevent相逼是一種粗粒度的事件;Struts2Struts2是Struts的下一代產品,是在struts1和WebWork的技術基礎上進行了合并的全新的Struts2框架。其全新的Struts2的體系結構與Struts1的體系結構差別巨大。Struts2以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設計也使得業(yè)務邏輯控制器能夠與ServletAPI完全脫離開,所以Struts2可以理解為WebWork的更新產品。雖然從Struts1到Struts2有著太大的變化,但是相對于WebWork,Struts2的變化很小。優(yōu)點:在Action的實現(xiàn)方面:Struts1要求必須統(tǒng)一擴展自Action類,而Struts2中可以是一個普通的POJO;線程模型方面:Struts1的Action是單實例的,一個Action的實例處理所有的請求。Struts2的Action是一個請求對應一個實例(每次請求時都新new出一個對象),沒有線程安全方面的問題;Servlet依賴方面:Struts1的Action依賴于ServletAPI,比如Action的execute方法的參數就包括request和response對象。這使程序難于測試。Struts2中的Action不再依賴于ServletAPI,有利于測試,并且實現(xiàn)TDD;封裝請求參數:Struts1中強制使用ActionForm對象封裝請求的參數。Struts2可以選擇使用POJO類來封裝請求的參數,或者直接使用Action的屬性;表達式語言方面:Struts1中整合了EL,但是EL對集合和索引的支持不強,Struts2整合了OGNL(ObjectGraphNavigationLanguage);綁定值到視圖技術:Struts1使用標準的JSP,Struts2使用“ValueStack”技術;類型轉換:Struts1中的ActionForm基本使用String類型的屬性。Struts2中使用OGNL進行轉換,可以更方便的使用;Struts1中支持覆蓋validate方法或者使用Validator框架。Struts2支持重寫validate方法或者使用XWork的驗證框架;Action執(zhí)行控制的對比:Struts1支持每一個模塊對應一個請求處理,但是模塊中的所有Action必須共享相同的生命周期。Struts2支持通過攔截器堆棧為每一個Action創(chuàng)建不同的生命周期;缺點:安全性不夠穩(wěn)定;struts2標簽會影響性能;OGNL設計不當會造成注入漏洞2.4.3前臺JavaScript框架JQuery是繼prototype之后又一個優(yōu)秀的Javascript框架。它是輕量級的js庫,它兼容CSS3,還兼容各種瀏覽器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+),jQuery2.0及后續(xù)版本將不再支持IE6/7/8瀏覽器。JQuery使用戶能更方便地處理HTML(標準通用標記語言下的一個應用)、events、實現(xiàn)動畫效果,并且方便地為網站提供AJAX交互。JQuery還有一個比較大的優(yōu)勢是,它的文檔說明很全,而且各種應用也說得很詳細,同時還有許多成熟的插件可供選擇。JQuery能夠使用戶的html頁面保持代碼和html內容分離,也就是說,不用再在html里面插入一堆js來調用命令了,只需定義id即可。JQuery是一個兼容多瀏覽器的javascript框架,核心理念是writeless,domore(寫得更少,做得更多)。jQuery在2006年1月由美國人JohnResig在紐約的barcamp發(fā)布,吸引了來自世界各地的眾多JavaScript高手加入,由DaveMethvin率領團隊進行開發(fā)。如今,JQuery已經成為最流行的javascript框架,在世界前10000個訪問最多的網站中,有超過55%在使用JQuery。JQuery是免費、開源的,使用MIT許可協(xié)議。JQuery的語法設計可以使開發(fā)者更加便捷,例如操作文檔對象、選擇DOM元素、制作動畫效果、事件處理、使用Ajax以及其他功能。除此以外,JQuery提供API讓開發(fā)者編寫插件。其模塊化的使用方式使開發(fā)者可以很輕松的開發(fā)出功能強大的靜態(tài)或動態(tài)網頁。優(yōu)點:動態(tài)特效;AJAX;通過插件來擴展;方便的工具-例如瀏覽器版本判斷;漸進增強;鏈式調用;眾多插件資源;性能支持比較好;多瀏覽器支持,支持InternetExplorer6.0+、Opera9.0+、Firefox2+、Safari2.0+、Chrome1.0+(在2.0.0中取消了對InternetExplorer6,7,8的支持);缺點:不能向后兼容;插件兼容性;2.4.4數據持久層框架HiberanteHibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。 優(yōu)點:對象/關系數據庫映射(ORM);它使用時只需要操縱對象,使開發(fā)更對象化,拋棄了數據庫中心的思想,完全的面向對象思想;透明持久化(persistent)帶有持久化狀態(tài)的、具有業(yè)務功能的單線程對象,此對象生存期很短。這些對象可能是普通的JavaBeans/POJO,這個對象沒有實現(xiàn)第三方框架或者接口,唯一特殊的是他們正與(僅僅一個)Session相關聯(lián)。一旦這個Session被關閉,這些對象就會脫離持久化狀態(tài),這樣就可被應用程序的任何層自由使用。事務Transaction應用程序用來指定原子操作單元范圍的對象,它是單線程的,生命周期很短。它通過抽象將應用從底層具體的JDBC、JTA以及CORBA事務隔離開。某些情況下,一個Session之內可能包含多個Transaction對象。盡管是否使用該對象是可選的,但無論是使用底層的API還是使用Transaction對象,事務邊界的開啟與關閉是必不可少的;它沒有侵入性,即所謂的輕量級框架;對數據庫移植性支持很好;提供一級緩存和二級緩存;提供簡潔的HQL編程;提供和常見第三方緩存插件集成;提供和常見第三方數據庫連接池插件集成;極高的開發(fā)效率;缺點:對象持久化會影響一些執(zhí)行的性能;配置數據庫關系到對象比較復雜;對批量操作數據支持不好;MyBatisMyBatis是支持普通SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJOs(PlainOldJavaObjects,普通的Java對象)映射成數據庫中的記錄。每個MyBatis應用程序主要都是使用SqlSessionFactory實例的,一個SqlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預定義的配置類的實例獲得。用xml文件構建SqlSessionFactory實例是非常簡單的事情。推薦在這個配置中使用類路徑資源(classpathresource),但你可以使用任何Reader實例,包括用文件路徑或file://開頭的url創(chuàng)建的實例。MyBatis有一個實用類Resources,它有很多方法,可以方便地從類路徑及其它位置加載資源。 優(yōu)點:易于上手和掌握;sql寫在xml里,便于統(tǒng)一管理和優(yōu)化;解除sql與程序代碼的耦合;提供映射標簽,支持對象與數據庫的orm字段關系映射;提供對象關系映射標簽,支持對象關系組建維護;提供xml標簽,支持編寫動態(tài)sql;良好的執(zhí)行性能;靈活的ORM封裝,可以選擇幾個字段進行返回賦值;缺點:sql工作量很大,尤其是字段多、關聯(lián)表多時,更是如此;sql依賴于數據庫,導致數據庫移植性差;由于xml里標簽id必須唯一,導致DAO中方法不支持方法重載;字段映射標簽和對象關系映射標簽僅僅是對映射關系的描述,具體實現(xiàn)仍然依賴于sql;DAO層過于簡單,對象組裝的工作量較大;支持級聯(lián)更新、級聯(lián)刪除;編寫動態(tài)sql時,不方便調試,尤其邏輯復雜時;提供的寫動態(tài)sql的xml標簽功能簡單,編寫動態(tài)sql仍然受限,且可讀性低;若不查詢主鍵字段,容易造成查詢出的對象有“覆蓋”現(xiàn)象;參數的數據類型支持不完善;(如參數為Date類型時,容易報沒有get、set方法,需在參數上加@param)多參數時,使用不方便,功能不夠強大;(目前支持的方法有map、對象、注解@param以及默認采用012索引位的方式)緩存使用不當,容易產生臟數據;SpringDataJpa SpringDataJpa是符合JPA(JavaPersistenceAPI)規(guī)范的基于Hibernate構建的優(yōu)秀的ORM數據持久化框架,他是SpringData項目的子項目,這使其更容易構建Spring-powered使用數據訪問技術的應用程序。優(yōu)點:基于Hiberante構建,繼承了Hiberante很多優(yōu)秀的特性;滿足JPA規(guī)范標準,有良好的可持續(xù)發(fā)展性;按照SpringDataJpa規(guī)范只需定義接口即可,不需編寫實現(xiàn)類,極大的提高了開發(fā)效率;采用SpringScheme配置減少了配置文件編寫;缺點:基于Hibernate構建,同時也存在Hibernate的一些缺點;按照SpringDataJpa規(guī)范定義接口實現(xiàn)時容易出錯;關聯(lián)多表查詢支持不好;技術文檔不夠全面;綜述 綜合以上三個最成熟使用最多的三個數據持久層框架的優(yōu)點和缺點,并考慮到本系統(tǒng)實際架構情況,我們決定采用基于最成熟的Hibernate框架構建的SpringDataJpa框架進行數據持久化;3系統(tǒng)部署web服務器與應用服務器在部署上可以采用靈活的策略,既可以獨立安置web服務器,也可以使用weblogic自帶的http服務。web服務器起到前端代理和轉發(fā)http請求的作用,為應用服務器分擔并發(fā)請求的負載,同時屏蔽對應用服務器的直接訪問,保護應用服務器的安全。此外,還可以將系統(tǒng)中的靜態(tài)內容放置在web服務器上,如靜態(tài)頁面,圖片,樣式表,js文件等,將對這些靜態(tài)內容的訪問負載轉移到web服務器來承擔。4系統(tǒng)性能設計4.1高效的數據算法針對每項數據算法,以及數據類型的選擇,經過嚴格測試,從優(yōu)擇選以最優(yōu)算法,以及數據類型。4.2負載均衡系統(tǒng)遵循了可伸縮性原則,保障可橫向擴展,整體擴展依賴于中間件,保證系統(tǒng)高可用性。負載均衡模式是指采用多個相似功能的組件一起構成負載均衡集,并且通過不斷地在他們間分配、均衡工作載荷,以實現(xiàn)期望的吞吐能力和響應性能。如果需要支持更多的工作載荷,可以向負載均衡集中添加更多的組件或設備。負載均衡組件模式可以顯著地提高可用性,當一個或多個參與負載均衡的組件因為失效或者維護等原因不可使用時,整個系統(tǒng)仍然可以使用。系統(tǒng)容量的損失取決于該組件承擔的負載的比例。采用負載均衡組件模式后,系統(tǒng)的性能受到少量的負面影響,因為負載均衡組件需要確定如何分配請求。但是,系統(tǒng)的伸縮性得到了顯著的改善。通過向負載均衡集中添加新的組件,就可以方便地增加系統(tǒng)的容量。負載均衡組件能夠確保向新添加的組件分配合理的請求份額。負載均衡組件方案也會顯著的增加成本,但通常要比活動冗余組件方案節(jié)省成本。因為購買多個中等容量的設備的代價要小于購買一個大容量的設備。可見活動冗余組件模式和負載均衡組件模式都提高了系統(tǒng)的可用性,同時,負載均衡組件模式還具有更好的伸縮性。因此,通常情況下,負載均衡模式是更好的選擇。即使如此,某些情況下,活動冗余組件方案可能是唯一的選擇。例如接入Internet的最外層的交換機就沒有辦法使用負載均衡組件模式,除非接入服務供應商已經提供了外部的負載均衡器。在確定系統(tǒng)邏輯架構的過程中,我們通常要權衡是采用活動冗余組件模式還是采用負載均衡組件模式。如果同時滿足下述四個條件,活動冗余組件模式是較好的選擇,包括:單個組件如果能夠足夠提供長期的峰值負載容量;單個組件的價格比較便宜,使得活動冗余組件模式的成本比負載均衡組件模式的成本更低;單個組件本身的可靠性很高,組件維護也相當方便快捷;組件故障引致的后果不是特別嚴重。綜合上述評估原則,在B/S應用的基礎設施中通常對交換機和負載均衡器采用活動冗余組件模式,對Web服務器和應用服務器采用負載均衡組件模式。4.3良好的接口設計接口經過嚴格設計,使接口位最優(yōu),避免大量創(chuàng)建類,使整個系統(tǒng)最優(yōu)運行。4.4低耗的磁盤IO針對所有磁盤IO操作采用最低限度使用IO策略,針對某些高頻使用數據類型存儲到緩存中,盡量避免針對磁盤IO操作。應用邏輯通過Cache技術直接訪問裝載在內存的配置數據,降低系統(tǒng)對磁盤的訪問頻率,提高系統(tǒng)的運行效率。4.5細粒度的事務管理整體數據訪問事務,通過良好設計,封裝為細粒度事務,從而避免了長事務的增長,導致的性能瓶頸。且針對事務鎖機制,系統(tǒng)將通過高壓測試調優(yōu),整體設計盡量避免鎖等待瓶頸。4.6應用配置相關調優(yōu)該系統(tǒng)業(yè)務系統(tǒng)主要調優(yōu)點如下:并發(fā)線程數據連接池內存回收策略隊列數量等參數4.7數據庫性能設計4.7.1索引控制系統(tǒng)數據模型中,索引經過嚴格篩選,避免某表多索引造成的寫操作效率低下。4.7.2SQL優(yōu)化系統(tǒng)中對所有SQL語句均通過高并發(fā)的壓力測試并調優(yōu),整體語句完全通過測試且數據庫調為可優(yōu)化語句。且整體系統(tǒng)中避免冗余連接,在游標控制中完全采用軟分析。4.8數據庫高可用性設計4.8.1設計原則分布性原則整體數據庫采用分布式技術,從主機角度以及應用角度等采取分布式技術。保障數據庫高效運行。讀寫分離原則讀寫分離原則,主要指在A數據庫中寫入數據,然后把寫入的數據同步到多節(jié)點。而其它節(jié)點保障數據庫讀取應用。如此可將應用的負載分布在多個不同的數據庫節(jié)點上面。如果寫的數據庫失敗,可以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論