欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      淘寶技術(shù)架構(gòu)發(fā)展總結(jié)(寫寫幫推薦)

      時(shí)間:2019-05-14 16:06:54下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《淘寶技術(shù)架構(gòu)發(fā)展總結(jié)(寫寫幫推薦)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《淘寶技術(shù)架構(gòu)發(fā)展總結(jié)(寫寫幫推薦)》。

      第一篇:淘寶技術(shù)架構(gòu)發(fā)展總結(jié)(寫寫幫推薦)

      從個(gè)人網(wǎng)站到淘寶網(wǎng) 仰觀Java時(shí)代淘寶的技術(shù)發(fā)展(1)

      引言

      光棍節(jié)的狂歡

      “時(shí)間到,開搶!”坐在電腦前早已等待多時(shí)的小美一看時(shí)間已到2011年11月11日零時(shí),便迫不及待地投身于淘寶商城一年一度的大型網(wǎng)購(gòu)促銷活動(dòng)——“淘寶雙11購(gòu)物狂歡節(jié)”。小美打開早已收藏好的寶貝——某品牌的雪地靴,飛快的點(diǎn)擊購(gòu)買,付款,一回頭發(fā)現(xiàn)3000雙靴子已被搶購(gòu)一空。

      小美跳起來,大叫一聲“歐耶!”

      小美不知道,就在11日零點(diǎn)過后的這一分鐘內(nèi),全國(guó)有342萬人和她一起涌入淘寶商城。當(dāng)然,她更不知道,此時(shí)此刻,在淘寶杭州的一間辦公室里,燈火通明,這里是“戰(zhàn)時(shí)指揮部”,淘寶技術(shù)部的一群工程師,正在緊盯著網(wǎng)站的流量和交易數(shù)據(jù)。白板上是他們剛剛下的注,賭誰能最準(zhǔn)確地猜中流量峰值和全天的交易總額。他們的手邊放著充足的食物和各類提神的飲料。

      一陣急促的電話聲響起來,是前線部門詢問數(shù)據(jù)的,工程師大聲報(bào)著:“第1分鐘,進(jìn)入淘寶商城的會(huì)員有342萬”。過一會(huì)工程師主動(dòng)拿起電話:“交易額超過1億了,現(xiàn)在是第8分鐘?!苯酉聛恚暗?1分鐘,剛突破2億”。“第32分鐘,3億了”?!暗?個(gè)小時(shí),4.39億”。這些數(shù)據(jù)隨后出現(xiàn)在微博上,引起一片驚呼。

      “完蛋了!”突然有人大喝一聲,所有的眼睛都緊張的盯著他,只見他撓撓頭,嘿嘿的笑道“我賭的少了,20億輕松就能過了,我再加5億”,他跑去白板邊上把自己的賭注擦去,寫上25,接下來有人寫上28,有人寫上30,有人跑到微博上開下盤口,同事們紛紛轉(zhuǎn)載下注。接下來的這24個(gè)小時(shí),戰(zhàn)時(shí)指揮部的工程師們都不能休息,他們盯著網(wǎng)站的各種監(jiān)控指標(biāo),適時(shí)的調(diào)整機(jī)器和增減功能。頂住第一波高峰之后,這些人開始忙里偷閑的給自己買東西,大家互相交流著哪家買的移動(dòng)硬盤靠譜,哪家衣服適合自己的女朋友,不時(shí)的有人哀嚎寶貝被人搶了、信用卡額度不夠了。同時(shí),旁邊白板上的賭注越下越大。

      11月11日,這個(gè)棍子最多的日子被網(wǎng)民自我調(diào)侃的變成了一個(gè)節(jié)日——“光棍節(jié)”。而淘寶網(wǎng)又用瘋狂的折扣促銷給它賦予了另外一個(gè)意義——“購(gòu)物狂歡節(jié)”。2011年11月11日這一天,淘寶商城與淘寶網(wǎng)交易額之和突破52億,這個(gè)數(shù)字是“購(gòu)物天堂”香港一天零售總額8.5億的6倍。

      網(wǎng)民感受到的是瘋搶的喜悅,而網(wǎng)站的技術(shù)人員感受到的卻是“壓力山大”。就如同你家辦酒席,宴請(qǐng)左鄰右舍,這個(gè)辦起來容易。倘若宴請(qǐng)十里八鄉(xiāng)所有的人,吃飯的人自然開心,但卻不是一般人家能夠辦得起來的。能辦得起來如此盛宴者,需要強(qiáng)大的財(cái)力物力、組織能力、技術(shù)實(shí)力(例如做這么多菜,你的炒鍋一定要是“分布式的”、“可復(fù)制的”、“可擴(kuò)展的”,洗菜切菜要有“工作流引擎”,上菜的路徑要用圖論來計(jì)算出來,甚至連廚房的下水道都要重新設(shè)計(jì))。

      淘寶能夠舉辦如此盛宴,網(wǎng)站的技術(shù)實(shí)力可見一斑。淘寶網(wǎng)擁有全國(guó)最大的hadoop分布式計(jì)算集群之一,日新增數(shù)據(jù)50TB,有40PB海量數(shù)據(jù)存儲(chǔ)。分布在全國(guó)各地80多個(gè)節(jié)點(diǎn)的CDN網(wǎng)絡(luò),支持的流量超過800Gbps。淘寶的搜索引擎能夠?qū)?shù)十億的商品數(shù)據(jù)進(jìn)行實(shí)時(shí)搜索,另外還擁有自主研發(fā)的文件存儲(chǔ)系統(tǒng)和緩存系統(tǒng),以及java中間件和消息中間件系統(tǒng),這一切組成了一個(gè)龐大的電子商務(wù)操作系統(tǒng)。另外從商業(yè)數(shù)據(jù)上來看,AMAZON的財(cái)報(bào)顯示2011年完成了大約 480億美金的交易額,EBAY2011年財(cái)報(bào)全年完成了大約600億美金的交易額(不包括其獨(dú)立的汽車交易平臺(tái))。不管從交易額、商品數(shù)量、同比增速等指標(biāo)上看,淘寶網(wǎng)均遠(yuǎn)超于此,是目前全球最大的電子商務(wù)平臺(tái)。(由于淘寶非上市公司,未公布2011年業(yè)績(jī),以上內(nèi)容來自淘寶網(wǎng)技術(shù)副總裁@_行癲 的微博)

      以上這些技術(shù)數(shù)據(jù)可能已經(jīng)讓一些同學(xué)產(chǎn)生不適的感覺,為了讓更多的人讀懂這本書,我們從技術(shù)的角度來看,小美訪問淘寶網(wǎng)的時(shí)候,網(wǎng)站上發(fā)生了什么事情。下參考資料:《你剛才在淘寶上買了一件東西【技術(shù)普及帖】》,來自南京郵電大學(xué)孫放同學(xué)

      為了有個(gè)更直觀的對(duì)比,我們說一個(gè)同行,他在2011年光棍節(jié)之前做促銷,流量上去之后,達(dá)到12Gbps(他們有這么大的流量,老板很高興,在微博上面說了這個(gè)數(shù)據(jù)),這時(shí)候流量達(dá)到了極限,網(wǎng)站幾乎掛掉,用戶無法下訂單。而淘寶網(wǎng)光棍節(jié)當(dāng)天網(wǎng)絡(luò)的流量最高達(dá)到800多Gbps,帶給各家銀行和快遞公司的流量也讓他們壓力山大,如臨大敵(后來,他們以能夠撐住淘寶帶來的流量為榮而到處宣傳)。另外如果你在網(wǎng)上購(gòu)買過火車票的話,更能體會(huì)到網(wǎng)站能支持多大的流量有多重要。但這不是一朝一夕做出來的,也不是有錢就能辦到的。

      以上對(duì)比的這些網(wǎng)站,也許讀者很容易就猜到是哪一家,這里拿出來作對(duì)比,絕對(duì)沒有嘲笑人家的意思,采用通常的網(wǎng)站技術(shù)方案,能做到這種程度已經(jīng)不錯(cuò)了。任何網(wǎng)站的發(fā)展都不是一蹴而就的,在什么樣的階段采用什么樣的技術(shù)。在發(fā)展的過程中網(wǎng)站會(huì)遇到各種各樣的問題和業(yè)務(wù)帶來的壓力,正是這些原因才推動(dòng)著技術(shù)的進(jìn)步和發(fā)展,而技術(shù)的發(fā)展又會(huì)反過來促進(jìn)業(yè)務(wù)的更大提升。二者互為因果,相互促進(jìn)。如今淘寶網(wǎng)的流量已經(jīng)是全球排名第12、國(guó)內(nèi)排名第3(美國(guó)的ebay全球排名23,國(guó)內(nèi)前兩名是百度和騰訊)。淘寶網(wǎng)的系統(tǒng)也從使用一臺(tái)服務(wù)器,到采用萬臺(tái)以上的服務(wù)器。本書就為大家描述淘寶網(wǎng)在整個(gè)發(fā)展過程中,所有的主動(dòng)和被動(dòng)的技術(shù)變革的前因后果,這由很多有趣的故事組成。

      正如同很多人或組織成功了以后,就會(huì)為自己的出身編造一個(gè)美麗的傳說。淘寶網(wǎng)的出身,網(wǎng)上也有非常多的傳說,下面我們就從它的出生開始講起。個(gè)人網(wǎng)站

      2003年4月7日,馬云,在杭州,成立了一個(gè)神秘的組織。他叫來十位員工,要他們簽了一份協(xié)議,這份協(xié)議要求他們立刻離開阿里巴巴,去做一個(gè)神秘的項(xiàng)目。這個(gè)項(xiàng)目要求絕對(duì)保密,老馬戲稱“連說夢(mèng)話被老婆聽到都不行,誰要是透漏出去,我將追殺到天涯海角”。這份協(xié)議是英文版的,匆忙之間,大多數(shù)人根本來不及看懂,但出于對(duì)老馬的信任,都卷起鋪蓋離開了阿里巴巴。

      他們?nèi)チ艘粋€(gè)神秘的據(jù)點(diǎn)——湖畔花園小區(qū)的一套未裝修的房子里,房子的主人是馬云。這伙人剛進(jìn)去的時(shí)候,馬云給他們布置了一個(gè)任務(wù),就是在最短的時(shí)間內(nèi)做出一個(gè)個(gè)人對(duì)個(gè)人(C2C)的商品交易的網(wǎng)站?,F(xiàn)在出一個(gè)問題考考讀者,看你適不適合做淘寶的創(chuàng)業(yè)團(tuán)隊(duì)。親,要是讓你來做,你怎么做?

      在說出這個(gè)答案之前,容我先賣個(gè)關(guān)子,介紹一下這個(gè)創(chuàng)業(yè)團(tuán)隊(duì)的成員:三個(gè)開發(fā)工程師(虛竹、三豐、多?。?、一個(gè)UED(二當(dāng)家)、三個(gè)運(yùn)營(yíng)(小寶、阿珂、破天)、一個(gè)經(jīng)理(財(cái)神)、還有就是馬云和他的秘書。當(dāng)時(shí)對(duì)整個(gè)項(xiàng)目組來說壓力最大的就是時(shí)間,怎么在最短的時(shí)間內(nèi)把一個(gè)從來就沒有的網(wǎng)站從零開始建立起來?了解淘寶歷史的人知道淘寶是在2003年5月10日上線的,這之間只有一個(gè)月。要是你在這個(gè)團(tuán)隊(duì)里,你怎么做?我們的答案就是:買一個(gè)來。

      買一個(gè)網(wǎng)站顯然比做一個(gè)網(wǎng)站要省事一些,但是他們的夢(mèng)想可不是做一個(gè)小網(wǎng)站而已,要做大,就不是隨便買個(gè)就行的,要有比較低的維護(hù)成本,要能夠方便的擴(kuò)展和二次開發(fā)。那接下來就是第二個(gè)問題:買一個(gè)什么樣的網(wǎng)站?答案是:輕量一點(diǎn)的,簡(jiǎn)單一點(diǎn)的,于是買了這樣一個(gè)架構(gòu)的網(wǎng)站:LAMP(linux+apache+mySQL+PHP)。這個(gè)直到現(xiàn)在還是一個(gè)很常用的網(wǎng)站架構(gòu)模型。這種架構(gòu)的優(yōu)點(diǎn)是:無需編譯,發(fā)布快速,PHP功能強(qiáng)大,能做從頁(yè)面渲染到數(shù)據(jù)訪問所有的事情,而且用到的技術(shù)都是開源的,免費(fèi)。

      當(dāng)時(shí)我們是從一個(gè)美國(guó)人那里買來的一個(gè)網(wǎng)站系統(tǒng),這個(gè)系統(tǒng)的名字叫做PHPAuction(他們的官方網(wǎng)站 http://),這個(gè)框架易于擴(kuò)展,方便組件化開發(fā),它的頁(yè)面模板支持JSP和velocity等、持久層支持ibatis和hibernate等、控制層可以用EJB和Spring(Spring是后來才有的)。項(xiàng)目組選擇了這個(gè)強(qiáng)大的框架,這個(gè)框架如果當(dāng)時(shí)開源了,也許就沒有webwork和struts2什么事了。另外,當(dāng)時(shí)Sun在全世界大力推廣他們的EJB,雖然淘寶的架構(gòu)師認(rèn)為這個(gè)東東用不到,但他們還是極力堅(jiān)持。在經(jīng)歷了很多次的技術(shù)討論、爭(zhēng)論和爭(zhēng)吵之后,這個(gè)系統(tǒng)的架構(gòu)就變成了下圖的樣子:

      Java應(yīng)用服務(wù)器是Weblogic,MVC框架是WebX、控制層用了EJB、持久層是ibatis,另外為了緩解數(shù)據(jù)庫(kù)的壓力,商品查詢和店鋪查詢放在搜索引擎上面。這個(gè)架構(gòu)圖是不是好看了一點(diǎn)了,親?

      這幫Sun的工程師開發(fā)完淘寶的網(wǎng)站之后,又做了一個(gè)很牛的網(wǎng)站,叫“支付寶”。

      其實(shí)在任何時(shí)候,開發(fā)語(yǔ)言本身都不是系統(tǒng)的瓶頸,業(yè)務(wù)帶來的壓力更多的是壓到了數(shù)據(jù)和存儲(chǔ)上。上面一篇也說到,MySQL撐不住了之后換Oracle,Oracle的存儲(chǔ)一開始在本機(jī)上,后來在NAS上,NAS撐不住了用EMC的SAN存儲(chǔ),再然后Oracle的RAC撐不住了,數(shù)據(jù)的存儲(chǔ)方面就不得不考慮使用小型機(jī)了。在2004年的夏天,DBA七公、測(cè)試工程師郭芙和架構(gòu)師行癲,踏上了去北京測(cè)試小型機(jī)的道路。他們帶著小型機(jī)回來的時(shí)候,我們像歡迎領(lǐng)袖一樣的歡迎他們,因?yàn)槟莻€(gè)是我們最值錢的設(shè)備了,價(jià)格表上的數(shù)字嚇?biāo)廊?。小型機(jī)買回來之后我們爭(zhēng)相合影,然后Oracle就跑在了小型機(jī)上,存儲(chǔ)方面從EMC低端cx存儲(chǔ)到Sun oem hds高端存儲(chǔ),再到EMC dmx高端存儲(chǔ),一級(jí)一級(jí)的往上跳。

      到現(xiàn)在為止,我們已經(jīng)用上了IBM的小型機(jī)、Oracle的數(shù)據(jù)庫(kù)、EMC的存儲(chǔ),這些東西都是很貴的,那些年可以說是花錢如流水啊。有人說過“錢能解決的問題,就不是問題”,但隨著淘寶網(wǎng)的發(fā)展,在不久以后,錢已經(jīng)解決不了我們的問題了?;ㄥX買豪華的配置,也許能支持1億PV的網(wǎng)站,但淘寶網(wǎng)的發(fā)展實(shí)在是太快了,到了10億怎么辦?到了百億怎么辦?在N年以后,我們不得不創(chuàng)造技術(shù),解決這些只有世界頂尖的網(wǎng)站才會(huì)遇到的問題。后來我們?cè)陂_源軟件的基礎(chǔ)上進(jìn)行自主研發(fā),一步一步的把IOE(IBM小型機(jī)、Oracle、EMC存儲(chǔ))這幾個(gè)“神器”都去掉了。這就如同在《西游記》里面,妖怪們拿到神仙的兵器會(huì)非常厲害,連猴子都能夠打敗,但最牛的神仙是不用這些神器的,他們揮一揮衣袖、翻一下手掌就威力無比。去IOE這一部分會(huì)在最后一個(gè)章節(jié)里面講,這里先埋個(gè)千里伏筆。

      欲知后事如何,且聽下回分解。

      已經(jīng)有讀者在迫不及待的問怎么去掉了IOE,別急,在去掉IOE之前還有很長(zhǎng)的路要走。行癲他們買回來小型機(jī)之后,我們用上了Oracle,七公帶著一幫DBA在優(yōu)化SQL和存儲(chǔ),行癲帶著幾個(gè)架構(gòu)師在研究數(shù)據(jù)庫(kù)的擴(kuò)展性。Oracle本身是一個(gè)封閉的系統(tǒng),用Oracle怎么做擴(kuò)展?用現(xiàn)在一個(gè)時(shí)髦的說法就是做“分庫(kù)分表”。

      我們知道一臺(tái)Oracle的處理能力是有上限的,它的連接池有數(shù)量限制,查詢速度跟容量成反比。簡(jiǎn)單的說,在數(shù)據(jù)量上億、查詢量上億的時(shí)候,就到它的極限了。要突破這種極限,最簡(jiǎn)單的方式就是多用幾個(gè)Oracle數(shù)據(jù)庫(kù)。但一個(gè)封閉的系統(tǒng)做擴(kuò)展,不像分布式系統(tǒng)那樣輕松。我們把用戶的信息按照ID來放到兩個(gè)數(shù)據(jù)庫(kù)里面(DB1/DB2),把商品的信息跟著賣家放在兩個(gè)對(duì)應(yīng)的數(shù)據(jù)庫(kù)里面,把商品類目等通用信息放在第三個(gè)庫(kù)里面(DBcommon)。這么做的目的除了增加了數(shù)據(jù)庫(kù)的容量之外,還有一個(gè)就是做容災(zāi),萬一一個(gè)數(shù)據(jù)庫(kù)掛了,整個(gè)網(wǎng)站上還有一半的數(shù)據(jù)能操作。

      數(shù)據(jù)庫(kù)這么分了之后,應(yīng)用程序有麻煩了,如果我是一個(gè)買家,買的商品有DB1的也有DB2的,要查看“我已買到的寶貝”的時(shí)候,應(yīng)用程序怎么辦?必須到兩個(gè)數(shù)據(jù)庫(kù)里面分別查詢出來對(duì)應(yīng)的商品。要按時(shí)間排序怎么辦??jī)蓚€(gè)庫(kù)里面“我已買到的寶貝”全部查出來在應(yīng)用程序里面做合并。還有分頁(yè)怎么處理?關(guān)鍵字查詢?cè)趺刺幚??這些東西交給程序員來做的話會(huì)很悲催,于是行癲在淘寶的第一個(gè)架構(gòu)上的作品就來解決了這個(gè)問題,他寫了一個(gè)數(shù)據(jù)庫(kù)路由的框架DBRoute,這個(gè)框架在淘寶的Oracle時(shí)代一直在使用。后來隨著業(yè)務(wù)的發(fā)展,這種分庫(kù)的第二個(gè)目的——容災(zāi)的效果就沒有達(dá)到。像評(píng)價(jià)、投訴、舉報(bào)、收藏、我的淘寶等很多地方,都必須同時(shí)連接DB1和DB2,哪個(gè)庫(kù)掛了都會(huì)導(dǎo)致整個(gè)網(wǎng)站掛掉。上一篇說過,采用EJB其實(shí)是和Sun的工程師妥協(xié)的結(jié)果,在他們走了之后,EJB也逐漸被冷落了下來。在05、06年的時(shí)候,spring大放異彩,正好利用spring的反射(IoC)模式替代了EJB的工廠模式,給整個(gè)系統(tǒng)精簡(jiǎn)了很多代碼。

      上一篇還說過,為了減少數(shù)據(jù)庫(kù)的壓力,提高搜索的效率,我們引入了搜索引擎。隨著數(shù)據(jù)量的繼續(xù)增長(zhǎng),到了2005年,商品數(shù)有1663萬,PV有8931萬,注冊(cè)會(huì)員有1390萬,這給數(shù)據(jù)和存儲(chǔ)帶來的壓力依然山大,數(shù)據(jù)量大,性能就慢。親,還有什么辦法能提升系統(tǒng)的性能?一定還有招數(shù)可以用,這就是緩存和CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))。

      你可以想象,九千萬的訪問量,有多少是在商品詳情頁(yè)面?訪問這個(gè)頁(yè)面的時(shí)候,數(shù)據(jù)全都是只讀的(全部從數(shù)據(jù)庫(kù)里面讀出來,不寫入數(shù)據(jù)庫(kù)),如果把這些讀操作從數(shù)據(jù)庫(kù)里面移到內(nèi)存里,數(shù)據(jù)庫(kù)將會(huì)多么的感激涕零。在那個(gè)時(shí)候我們的架構(gòu)師多隆大神,找到了一個(gè)基于 Berkeley DB 的開源的緩存系統(tǒng),把很多不太變動(dòng)的只讀信息放了進(jìn)去。其實(shí)最初這個(gè)緩存系統(tǒng)還比較弱,我們并沒有把整個(gè)商品詳情都放在里面,一開始把賣家的信息放里面,然后把商品屬性放里面,商品詳情這個(gè)字段太大,放進(jìn)去受不了。說到商品詳情,這個(gè)字段比較恐怖,有人統(tǒng)計(jì)過,淘寶商品詳情打印出來平均有5米長(zhǎng),在系統(tǒng)里面其實(shí)放在哪里都不招人待見。筆者清楚的記得,我來淘寶之后擔(dān)任項(xiàng)目經(jīng)理做的第一個(gè)項(xiàng)目就是把商品詳情從商品表里面給移出來。這個(gè)字段太大了,查詢商品信息的時(shí)候很多都不需要查看詳情,它跟商品的價(jià)格、運(yùn)費(fèi)這些放在一個(gè)表里面,拖慢了整個(gè)表的查詢速度。在05年的時(shí)候,我把商品詳情放在數(shù)據(jù)庫(kù)的另外一張表里面,再往后這個(gè)大字段被從數(shù)據(jù)庫(kù)里面請(qǐng)了出來,這也讓數(shù)據(jù)庫(kù)再一次感激涕零。

      到現(xiàn)在為止,整個(gè)商品詳情的頁(yè)面都在緩存里面了,眼尖的讀者可能會(huì)發(fā)現(xiàn)現(xiàn)在的商品詳情不全是“只讀”的信息了,這個(gè)頁(yè)面上有個(gè)信息叫“瀏覽量”,這個(gè)數(shù)字每刷新一次頁(yè)面就要“寫入”數(shù)據(jù)庫(kù)一次,這種高頻度實(shí)時(shí)更新的數(shù)據(jù)能用緩存嗎?如果不用緩存,一天幾十億的寫入,數(shù)據(jù)庫(kù)會(huì)怎么樣?一定會(huì)掛掉。那怎么辦?親??

      CDN這個(gè)工作相對(duì)比較獨(dú)立,跟別的系統(tǒng)一樣,一開始我們也是采用的商用系統(tǒng)。后來隨著流量的增加,商用的系統(tǒng)已經(jīng)撐不住了,LVS的創(chuàng)始人章文嵩博士帶人搭建了淘寶自己的CDN網(wǎng)絡(luò)。在本文的引言中我說過淘寶的CDN系統(tǒng)支撐了800Gbps以上的流量,作為對(duì)比我們可以看一下國(guó)內(nèi)專業(yè)做CDN的上市公司ChinaCache的介紹——“ChinaCache??是中國(guó)第一的專業(yè)CDN服務(wù)提供商,向客戶提供全方位網(wǎng)絡(luò)內(nèi)容快速分布解決方案。作為首家獲信產(chǎn)部許可的CDN服務(wù)提供商,目前ChinaCache在全國(guó)50多個(gè)大中城市擁有近300個(gè)節(jié)點(diǎn),全網(wǎng)處理能力超過500Gbps,其CDN網(wǎng)絡(luò)覆蓋中國(guó)電信、中國(guó)網(wǎng)通、中國(guó)移動(dòng)、中國(guó)聯(lián)通、中國(guó)鐵通和中國(guó)教育科研網(wǎng)等各大運(yùn)營(yíng)商?!薄@樣你可以看得出淘寶在CDN上面的實(shí)力,這在全世界都是數(shù)一數(shù)二的。另外因?yàn)镃DN需要大量的服務(wù)器,要消耗很多能源(消耗多少?在前兩年我們算過一筆帳,淘寶上產(chǎn)生一個(gè)交易,消耗的電足以煮熟4個(gè)雞蛋)。這兩年章文嵩的團(tuán)隊(duì)又在研究低功耗的服務(wù)器,在綠色計(jì)算領(lǐng)域也做了很多開創(chuàng)性的工作。淘寶CDN的發(fā)展需要專門一個(gè)章節(jié)來講,想先睹為快的可以看一下筆者對(duì)章文嵩的專訪:http://qing.weibo.com/1866752224/6f4460e033000jme.html 回想起剛用緩存那段時(shí)間,筆者還是個(gè)小菜鳥,有一個(gè)經(jīng)典的錯(cuò)誤常常犯,就是數(shù)據(jù)庫(kù)的內(nèi)容更新的時(shí)候,忘記通知緩存系統(tǒng),結(jié)果在測(cè)試的時(shí)候就發(fā)現(xiàn)我改過的數(shù)據(jù)怎么在頁(yè)面上沒變化呢。后來做了一些頁(yè)面上的代碼,修改CSS和JS的時(shí)候,用戶本地緩存的信息沒有更新,頁(yè)面上也會(huì)亂掉,在論壇上被人說的時(shí)候,我告訴他用ctrl+F5刷新頁(yè)面,然后趕緊修改腳本文件的名稱,重新發(fā)布頁(yè)面。學(xué)會(huì)用ctrl+F5的會(huì)員對(duì)我佩服的五體投地,我卻慚愧的無地自容。

      有些技術(shù)的發(fā)展是順其自然的,有些卻是突如其來的。到2007年的時(shí)候,我們已經(jīng)有幾百臺(tái)應(yīng)用服務(wù)器了,這上面的java應(yīng)用服務(wù)器是weblogic,而weblogic是非常貴的,比這些服務(wù)器本身都貴。有一段時(shí)間多隆研究了一下jboss,說我們換掉weblogic吧,于是又省下了不少銀兩。那一年,老馬舉辦了第一屆的“網(wǎng)俠大會(huì)”,會(huì)上來的大俠中有一位是上文提到的章文嵩,還有一位曾經(jīng)在jboss團(tuán)隊(duì)工作,我們也把這位大俠留下了,這樣我們用起jboss更加有底氣了。

      這些雜七雜八的修改,我們對(duì)數(shù)據(jù)分庫(kù)、放棄EJB、引入Spring、加入緩存、加入CDN、采用開源的Jboss,看起來沒有章法可循,其實(shí)都是圍繞著提高容量、提高性能、節(jié)約成本來做的,由于這些不算大的版本變遷,我們姑且叫它2.1版吧,這個(gè)版本從構(gòu)圖上來看有3只腳,是不是穩(wěn)定了很多?

      架構(gòu)圖如下:

      下集預(yù)告:創(chuàng)造技術(shù) 分布式文件系統(tǒng)TFS、分布式kv緩存tair、搜索引擎升級(jí)

      第二篇:java技術(shù)架構(gòu)

      Java技術(shù)體系圖

      Java程序員

      高級(jí)特性

      反射、泛型、注釋符、自動(dòng)裝箱和拆箱、枚舉類、可變

      參數(shù)、可變返回類型、增強(qiáng)循環(huán)、靜態(tài)導(dǎo)入

      核心編程

      IO、多線程、實(shí)體類、集合類、正則表達(dá)式、XML和屬性文件

      圖形編程

      AWT(Java2D/JavaSound/JMF)、Swing、SWT、JFace

      網(wǎng)路編程

      Applet、Socket/TCP/UDP、NIO、RMI、CORBA

      Java語(yǔ)法基礎(chǔ)

      類、抽象類、接口、最終類、靜態(tài)類、匿名類、內(nèi)部類、異常類、編碼規(guī)范

      Java開發(fā)環(huán)境

      JDK、JVM、Eclipse、Linux

      Java核心編程技術(shù)

      Java,設(shè)計(jì)而又非常精巧的語(yǔ)言。學(xué)習(xí)Java,須從Java開發(fā)環(huán)境開始,到Java語(yǔ)法,再到Java的核心API。

      1.Java開發(fā)入門:Java開發(fā)環(huán)境的安裝與使用,包括JDK命令、EclipseIDE、Linux下Java程序的開發(fā)和部署等。

      2.Java語(yǔ)法基礎(chǔ):基于JDK和Eclipse環(huán)境,進(jìn)行Java核心功能開發(fā),掌握J(rèn)ava面向?qū)ο蟮恼Z(yǔ)法構(gòu)成,包括類、抽象類、接口、最終類、靜態(tài)類、匿名類、內(nèi)部類、異常的編寫。

      3.Java核心API:基于JDK提供的類庫(kù),掌握三大核心功能:

      A。Java核心編程:包括Java編程的兩大核心功能——Java輸入/輸出流和多線程,以及常用的輔助類庫(kù)——實(shí)體類、集合類、正則表達(dá)式、XML和屬性文件。

      B。Java圖形編程:包括Sun的GUI庫(kù)AWT(Java2D、JavaSound、JMF)和Swing,IBM和GUI庫(kù)SWT和Jface;

      C.Java網(wǎng)路編程:Applet組件編程,Socket編程,NIO非阻塞Socket編程、RMI和CORBA分布式開發(fā)。

      4.Java高級(jí)特性:掌握J(rèn)DK1.4、JDK5.0、JDK6.0中的Java高級(jí)特性,包括反射、泛型、注釋,以及java高級(jí)特性——自動(dòng)裝箱和拆箱、枚舉類、可變參數(shù)、可變返回類型、增強(qiáng)循環(huán)、靜態(tài)導(dǎo)入等。

      JavaEE初級(jí)軟件工程師

      JSF框架開發(fā)技術(shù)

      配置文件(頁(yè)面導(dǎo)航、后臺(tái)Bean)、JSF組件庫(kù)(JSF EL語(yǔ)言、HTML標(biāo)簽、事件處理、)、JSF核心庫(kù)(格式轉(zhuǎn)換、輸入驗(yàn)證、國(guó)際化)

      Javaweb核心開發(fā)技術(shù)

      開發(fā)環(huán)境(Eclipse、Linux)

      三大組件(JSP、JavaBean、Servlet)

      擴(kuò)展技術(shù)(EL、JSTL、Taglib)

      網(wǎng)頁(yè)開發(fā)技術(shù)

      HTML、XML、CSS、JavaScript、AJAX

      數(shù)據(jù)庫(kù)設(shè)計(jì)技術(shù)

      SQL、MySql、Oracle、SQLServer、JDBC

      Web服務(wù)器(Tomcat/Jetty/Resin/JBossWeb)

      JavaWeb核心技術(shù):

      JavaWeb項(xiàng)目開發(fā)的全過程可以分解為:

      網(wǎng)頁(yè)開發(fā)+數(shù)據(jù)庫(kù)設(shè)計(jì)——>JavaWeb項(xiàng)目開發(fā),其中,javaWeb由6項(xiàng)基本技術(shù)組成:JSP+JavaBean+Servlet+EL+JSTL+Taglib,而JSF正是將這6種技術(shù)進(jìn)行有機(jī)結(jié)合的技術(shù)框架:

      JavaEE中級(jí)軟件工程師

      四種經(jīng)典架構(gòu)SSH1、SSI1、SSH2、SSI2

      Struts1表現(xiàn)層框架

      入門配置、核心組件、標(biāo)簽庫(kù)、國(guó)際化、數(shù)據(jù)檢驗(yàn)、數(shù)據(jù)庫(kù)開發(fā)、Sitemesh集成、集成Hibernate/iBATIS

      Struts2表現(xiàn)層框架

      入門配置、核心組件、標(biāo)簽庫(kù)、國(guó)際化、數(shù)據(jù)校驗(yàn)、Sitemesh集成轉(zhuǎn)換器、攔截器、集成Hibernate/iBATIS

      Spring業(yè)務(wù)層框架

      入門配置、IoC容器、MVC、標(biāo)簽庫(kù)、國(guó)際化、數(shù)據(jù)校驗(yàn)、數(shù)據(jù)庫(kù)開發(fā)

      Hibernate持久層框架

      MySQL、Oracle、SQLServer iBATIS持久層框架

      MySQL、Oracle、SQLServer

      Web服務(wù)器(Tomcat/Jetty/Resin/JBossWeb)

      Java高級(jí)軟件工程師

      javaWeb開源技術(shù)與框架

      工作流、規(guī)則引擎

      搜索引擎、緩存引擎、任務(wù)調(diào)度、身份認(rèn)證

      報(bào)表服務(wù)、系統(tǒng)測(cè)試、集群、負(fù)載平衡、故障轉(zhuǎn)移

      JavaWeb分布式開發(fā)技術(shù)

      JTA(Java事物管理)

      JAAS(Java驗(yàn)證和授權(quán)服務(wù))

      JNDI(Java命名和目錄服務(wù))

      JavaMail(Java郵件服務(wù))

      JMS(java信息服務(wù))

      WebService(web服務(wù))

      JCA(java連接體系)

      JMS(java管理體系)

      應(yīng)用服務(wù)器(JBossAS/WebLogic/WebSphere)

      JavaEE系統(tǒng)架構(gòu)師

      面向云架構(gòu)(COA)

      COA、SaaS、網(wǎng)格計(jì)算、集群計(jì)算、分布式計(jì)算、云計(jì)算

      面向資源架構(gòu)(ROA)

      ROA、RESI

      面向web服務(wù)架構(gòu)(SOA)

      WebService、SOA、SCA、ESB、OSGI、EAI

      Java設(shè)計(jì)模式

      創(chuàng)建式模式:抽象工廠/建造者/工廠方法/原型/單例

      構(gòu)造型模式:適配器/橋接/組合/裝飾/外觀/享元/代理

      行為型模式:責(zé)任鏈/命令/解釋器/迭代子/中介者/備忘錄/觀察者/狀態(tài)/策略/模板方法/訪問者

      Java與UML建模

      對(duì)象圖、用例圖、組件圖、部署圖、序列圖、交互圖、活動(dòng)圖、正向工程與逆向工程

      CTO首席技術(shù)官

      發(fā)展戰(zhàn)略

      技術(shù)總監(jiān)

      團(tuán)隊(duì)提升

      團(tuán)隊(duì)建設(shè)

      項(xiàng)目管理

      產(chǎn)品管理

      第三篇:大型網(wǎng)站架構(gòu)設(shè)計(jì)及技術(shù)總結(jié)

      大型網(wǎng)站架構(gòu)設(shè)計(jì)及技術(shù)總結(jié)

      隨著中國(guó)大型IT企業(yè)信息化速度的加快,大部分應(yīng)用的數(shù)據(jù)量和訪問量都急劇增加,大型企業(yè)網(wǎng)站正面臨性能和高數(shù)據(jù)訪問量的壓力,而且對(duì)存儲(chǔ)、安全以及信息檢索等等方面都提出了更高的要求??

      本文中,我想通過幾個(gè)國(guó)外大型IT企業(yè)及網(wǎng)站的成功案例,從Web技術(shù)人員角度探討如何積極地應(yīng)對(duì)國(guó)內(nèi)大型網(wǎng)站即將面臨的擴(kuò)展(主要是技術(shù)方面,而較少涉及管理及營(yíng)銷等方面)矛盾。

      一、國(guó)外大型IT網(wǎng)站的成功之道

      (一)MySpace

      今天,MySpace已經(jīng)成為全球眾口皆碑的社區(qū)網(wǎng)站之王。盡管一流和營(yíng)銷和管理經(jīng)驗(yàn)自然是每個(gè)IT企業(yè)取得成功的首要因素,但是本節(jié)中我們卻拋棄這一點(diǎn),而主要著眼于探討在數(shù)次面臨系統(tǒng)擴(kuò)張的緊急關(guān)頭MySpace是如何從技術(shù)方面采取應(yīng)對(duì)策略的。

      第一代架構(gòu)—添置更多的Web服務(wù)器

      MySpace最初的系統(tǒng)很小,只有兩臺(tái)Web服務(wù)器(分擔(dān)處理用戶請(qǐng)求的工作量)和一個(gè)數(shù)據(jù)庫(kù)服務(wù)器(所有數(shù)據(jù)都存儲(chǔ)在這一個(gè)地方)。那時(shí)使用的是Dell雙CPU、4G內(nèi)存的系統(tǒng)。在早期階段,MySpace基本是通過添置更多Web服務(wù)器來對(duì)付用戶暴增問題的。但到在2004年早期,在MySpace用戶數(shù)增長(zhǎng)到五十萬后,其數(shù)據(jù)庫(kù)服務(wù)器已經(jīng)開始疲于奔命了。

      第二代架構(gòu)—增加數(shù)據(jù)庫(kù)服務(wù)器

      與增加Web服務(wù)器不同,增加數(shù)據(jù)庫(kù)并沒那么簡(jiǎn)單。如果一個(gè)站點(diǎn)由多個(gè)數(shù)據(jù)庫(kù)支持,設(shè)計(jì)者必須考慮的是,如何在保證數(shù)據(jù)一致性的前提下讓多個(gè)數(shù)據(jù)庫(kù)分擔(dān)壓力。

      MySpace運(yùn)行在三個(gè)SQL Server數(shù)據(jù)庫(kù)服務(wù)器上—一個(gè)為主,所有的新數(shù)據(jù)都向它提交,然后由它復(fù)制到其它兩個(gè);另兩個(gè)數(shù)據(jù)庫(kù)服務(wù)器全力向用戶供給數(shù)據(jù),用以在博客和個(gè)人資料欄顯示。這種方式在一段時(shí)間內(nèi)效果很好——只要增加數(shù)據(jù)庫(kù)服務(wù)器,加大硬盤,就可以應(yīng)對(duì)用戶數(shù)和訪問量的增加。

      這一次的數(shù)據(jù)庫(kù)架構(gòu)按照垂直分割模式設(shè)計(jì),不同的數(shù)據(jù)庫(kù)服務(wù)于站點(diǎn)的不同功能,如登錄、用戶資料和博客。垂直分割策略利于多個(gè)數(shù)據(jù)庫(kù)分擔(dān)訪問壓力,當(dāng)用戶要求增加新功能時(shí),MySpace只需要投入新的數(shù)據(jù)庫(kù)加以支持。在賬戶到達(dá)二百萬后,MySpace還從存儲(chǔ)設(shè)備與數(shù)據(jù)庫(kù)服務(wù)器直接交互的方式切換到SAN(存儲(chǔ)區(qū)域網(wǎng)絡(luò))—用高帶寬、專門設(shè)計(jì)的網(wǎng)絡(luò)將大量磁盤存儲(chǔ)設(shè)備連接在一起,而數(shù)據(jù)庫(kù)連接到SAN。這項(xiàng)措施極大提升了系統(tǒng)性能、正常運(yùn)行時(shí)間和可靠性。然而,當(dāng)用戶繼續(xù)增加到三百萬后,垂直分割策略也變得難以維持下去。

      第三代架構(gòu)—轉(zhuǎn)到分布式計(jì)算架構(gòu)

      幾經(jīng)折騰,最終,MySpace將目光移到分布式計(jì)算架構(gòu)——它在物理上分布的眾多服務(wù)器,整體必須邏輯上等同于單臺(tái)機(jī)器。拿數(shù)據(jù)庫(kù)來說,就不能再像過去那樣將應(yīng)用拆分,再以不同數(shù)據(jù)庫(kù)分別支持,而必須將整個(gè)站點(diǎn)看作一個(gè)應(yīng)用?,F(xiàn)在,數(shù)據(jù)庫(kù)模型里只有一個(gè)用戶表,支持博客、個(gè)人資料和其他核心功能的數(shù)

      據(jù)都存儲(chǔ)在相同數(shù)據(jù)庫(kù)。

      既然所有的核心數(shù)據(jù)邏輯上都組織到一個(gè)數(shù)據(jù)庫(kù),那么MySpace必須找到新的辦法以分擔(dān)負(fù)荷——顯然,運(yùn)行在普通硬件上的單個(gè)數(shù)據(jù)庫(kù)服務(wù)器是無能為力的。這次,不再按站點(diǎn)功能和應(yīng)用分割數(shù)據(jù)庫(kù),MySpace開始將它的用戶按每百萬一組分割,然后將各組的全部數(shù)據(jù)分別存入獨(dú)立的SQL Server實(shí)例。目前,MySpace的每臺(tái)數(shù)據(jù)庫(kù)服務(wù)器實(shí)際運(yùn)行兩個(gè)SQL Server實(shí)例,也就是說每臺(tái)服務(wù)器服務(wù)大約二百萬用戶。據(jù)MySpace的技術(shù)人員說,以后還可以按照這種模式以更小粒度劃分架構(gòu),從而優(yōu)化負(fù)荷分擔(dān)。

      第四代架構(gòu)—求助于微軟方案

      2005年早期,賬戶達(dá)到九百萬,MySpace開始用微軟的C#編寫ASP.NET程序。在收到一定成效后,MySpace開始大規(guī)模遷移到ASP.NET。

      賬戶達(dá)到一千萬時(shí),MySpace再次遭遇存儲(chǔ)瓶頸問題。SAN的引入解決了早期一些性能問題,但站點(diǎn)目前的要求已經(jīng)開始周期性超越SAN的I/O容量——即它從磁盤存儲(chǔ)系統(tǒng)讀寫數(shù)據(jù)的極限速度。

      第五代架構(gòu)—增加數(shù)據(jù)緩存層并轉(zhuǎn)到支持64位處理器的SQL Server 20052005年春天,MySpace賬戶達(dá)到一千七百萬,MySpace又啟用了新的策略以減輕存儲(chǔ)系統(tǒng)壓力,即增加數(shù)據(jù)緩存層——位于Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器之間,其唯一職能是在內(nèi)存中建立被頻繁請(qǐng)求數(shù)據(jù)對(duì)象的副本,如此一來,不訪問數(shù)據(jù)庫(kù)也可以向Web應(yīng)用供給數(shù)據(jù)。

      2005年中期,服務(wù)賬戶數(shù)達(dá)到兩千六百萬時(shí),MySpace因?yàn)槲覀儗?duì)內(nèi)存的渴求而切換到了還處于beta測(cè)試的支持64位處理器的SQL Server 2005。升級(jí)到SQL Server 2005和64位Windows Server 2003后,MySpace每臺(tái)服務(wù)器配備了32G內(nèi)存,后于2006年再次將配置標(biāo)準(zhǔn)提升到64G。

      事實(shí)上,MySpace的Web服務(wù)器和數(shù)據(jù)庫(kù)仍然經(jīng)常發(fā)生超負(fù)荷,其用戶頻繁遭遇“意外錯(cuò)誤”和“站點(diǎn)離線維護(hù)”等告示,他們不得不在論壇抱怨不停??

      MySpace正是在這樣不斷重構(gòu)站點(diǎn)軟件、數(shù)據(jù)庫(kù)和存儲(chǔ)系統(tǒng)中,才一步步走到今天。事實(shí)上,MySpace已經(jīng)成功解決了很多系統(tǒng)擴(kuò)展性問題,其中存在相當(dāng)?shù)慕?jīng)驗(yàn)值得我們借鑒。MySpace系統(tǒng)架構(gòu)到目前為止保持了相對(duì)穩(wěn)定,但其技術(shù)人員仍然在為SQL Server支持的同時(shí)連接數(shù)等方面繼續(xù)攻堅(jiān),盡可能把事情做到最好。

      (二)Amazon

      亞馬遜書店無疑是電子商務(wù)發(fā)展的里程碑。2000年到現(xiàn)在,世界網(wǎng)絡(luò)業(yè)腥風(fēng)血雨。Amazon曾經(jīng)成為網(wǎng)絡(luò)泡沫的頭號(hào)代表。如今,當(dāng)這個(gè)“最大的泡沫”用幾經(jīng)易改的數(shù)字把自己變成了堅(jiān)實(shí)的IT巨人。

      歷覽Amazon發(fā)展過程,其成功經(jīng)驗(yàn)在于,它創(chuàng)造性地進(jìn)行了電子商務(wù)中每一環(huán)節(jié)的探索,包括系統(tǒng)平臺(tái)的建設(shè),程序編寫、網(wǎng)站設(shè)立、配送系統(tǒng)等等方面。用Amazon當(dāng)家人貝索斯的話說就是,“在現(xiàn)實(shí)世界的商店最有力的武器就是地

      段,地段,地段,而對(duì)于我們來說最重要的三件事就是技術(shù),技術(shù),技術(shù)?!?/p>

      (三)eBay

      eBay是世界聞名的拍賣網(wǎng)站,eBay公司通信部主管凱文?帕斯格拉夫認(rèn)為,“eBay成功的最重要原因在于公司管理和服務(wù)?!?/p>

      其成功的奧秘可以列舉為以下幾點(diǎn):

      ①敢為天下先—在網(wǎng)絡(luò)尚不普及的時(shí)代,eBay率先進(jìn)入網(wǎng)絡(luò)拍賣領(lǐng)域;②依托虛擬商場(chǎng)所產(chǎn)生的特有的“零庫(kù)存”是eBay公司取得成功的另一個(gè)重要原因。該公司的核心業(yè)務(wù)沒有任何庫(kù)存風(fēng)險(xiǎn),所有的商品都是由客戶提供,它只需要負(fù)責(zé)提供虛擬的拍賣平臺(tái)—網(wǎng)絡(luò)和軟件。所以,eBay公司的財(cái)務(wù)報(bào)表上不會(huì)出現(xiàn)“庫(kù)存費(fèi)用”和“保管費(fèi)用”等。

      ③自eBay公司成立開始,它就一直遵循兩條“黃金原則”:建設(shè)虛擬社區(qū),給網(wǎng)民以家的感覺;保證網(wǎng)站穩(wěn)定安全地運(yùn)行。

      二、國(guó)內(nèi)大型網(wǎng)站開發(fā)時(shí)的幾點(diǎn)建議

      從本節(jié)開始,我們將結(jié)合國(guó)內(nèi)外大型IT網(wǎng)站在技術(shù)擴(kuò)展方面的沉痛教訓(xùn)和成功經(jīng)驗(yàn),探討在如今剛剛開始的Web 2.0時(shí)代如何應(yīng)對(duì)國(guó)內(nèi)網(wǎng)站即將面臨的數(shù)據(jù)訪問量增加(甚至是急劇膨脹)的問題,并提出一些供參考的策略和建議。

      (四)搭建科學(xué)的系統(tǒng)架構(gòu)

      構(gòu)建大型的商業(yè)網(wǎng)站絕對(duì)不可能像構(gòu)建普通的小型網(wǎng)站一樣一蹴而就,需要從嚴(yán)格的軟件工程管理的角度進(jìn)行認(rèn)真規(guī)劃,有步驟有邏輯地進(jìn)行開發(fā)。對(duì)于大型網(wǎng)站來說,所采用的技術(shù)涉及面極其廣泛,從硬件到軟件、編程語(yǔ)言、數(shù)據(jù)庫(kù)、Web服務(wù)器、防火墻等各個(gè)領(lǐng)域都有了很高的要求,已經(jīng)不是原來簡(jiǎn)單的html靜態(tài)網(wǎng)站所能比擬的。以著名的Yahoo!為例,他們的每一個(gè)大型網(wǎng)站工程都需要大量相應(yīng)專業(yè)人員的參與。

      (五)頁(yè)面靜態(tài)化

      可不要小看純靜態(tài)化的HTML頁(yè)面!其實(shí)在很多情況下,HTML往往意味著“效率最高、消耗最小”,所以我們盡可能使我們的網(wǎng)站上的頁(yè)面采用靜態(tài)頁(yè)面來實(shí)現(xiàn)。但是,對(duì)于大量?jī)?nèi)容并且頻繁更新的網(wǎng)站,我們無法全部手動(dòng)實(shí)現(xiàn),因此可以開發(fā)相應(yīng)的自動(dòng)化更新工具,例如我們常見的信息發(fā)布系統(tǒng)CMS。像我們經(jīng)常訪問的各個(gè)門戶站點(diǎn)的新聞?lì)l道,甚至他們的其他頻道,都是通過信息發(fā)布系統(tǒng)來管理和實(shí)現(xiàn)的。信息發(fā)布系統(tǒng)可以實(shí)現(xiàn)最簡(jiǎn)單的信息錄入自動(dòng)生成靜態(tài)頁(yè)面,還能具備頻道管理、權(quán)限管理、自動(dòng)抓取等功能,對(duì)于一個(gè)大型網(wǎng)站來說,擁有一套高效、可管理的CMS是必不可少的。

      (六)存儲(chǔ)問題

      存儲(chǔ)也是一個(gè)大問題,一種是小文件的存儲(chǔ),比如圖片這類;另一種是大文件的存儲(chǔ),比如搜索引擎的索引。

      大家知道,對(duì)于Web服務(wù)器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資源的,于是我們有必要將圖片與頁(yè)面進(jìn)行分離,這是基本上大型網(wǎng)站都會(huì)采用的策略,他們都有獨(dú)立的圖片服務(wù)器,甚至很多臺(tái)圖片服務(wù)器。這樣的架構(gòu)可以降低提供頁(yè)面訪問請(qǐng)求的服務(wù)器系統(tǒng)壓力,并且可以保證系統(tǒng)不會(huì)因?yàn)閳D片問題而崩潰,在應(yīng)用服務(wù)器和圖片服務(wù)器上,可以進(jìn)行不同的配置優(yōu)化以保證更

      高的系統(tǒng)消耗和執(zhí)行效率。

      (七)數(shù)據(jù)庫(kù)技術(shù)—集群和庫(kù)表散列

      對(duì)于大型網(wǎng)站而言,使用大型的數(shù)據(jù)庫(kù)服務(wù)器是必須的事情。但是,在面對(duì)大量訪問的時(shí)候,數(shù)據(jù)庫(kù)的瓶頸仍然會(huì)顯現(xiàn)出來,這時(shí)一臺(tái)數(shù)據(jù)庫(kù)將很快無法滿足應(yīng)用,于是我們需要借助于數(shù)據(jù)庫(kù)集群或者庫(kù)表散列技術(shù)。

      在數(shù)據(jù)庫(kù)集群方面,很多數(shù)據(jù)庫(kù)廠商都有自己的解決方案,Oracle、Sybase、SQL Server等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案。因此,你使用了什么樣的數(shù)據(jù)庫(kù),就參考相應(yīng)的解決方案來實(shí)施即可。

      上面提到的數(shù)據(jù)庫(kù)集群由于在架構(gòu)、成本、擴(kuò)張性方面都會(huì)受到所采用數(shù)據(jù)庫(kù)類型的限制,于是我們需要從應(yīng)用程序的角度來考慮改善系統(tǒng)架構(gòu),其中,庫(kù)表散列是常用并且最有效的解決方案。我們?cè)趹?yīng)用程序中安裝業(yè)務(wù)和應(yīng)用或者功能模塊將數(shù)據(jù)庫(kù)進(jìn)行分離,不同的模塊對(duì)應(yīng)不同的數(shù)據(jù)庫(kù)或者表,再按照一定的策略對(duì)某個(gè)頁(yè)面或者功能進(jìn)行更小的數(shù)據(jù)庫(kù)散列,比如用戶表,按照用戶ID進(jìn)行表散列,這樣就能夠低成本的提升系統(tǒng)的性能并且有很好的擴(kuò)展性。在這一方面一個(gè)現(xiàn)成的例子就是搜狐。它的論壇就是采用了這樣的架構(gòu),將論壇的用戶、設(shè)置、帖子等信息進(jìn)行數(shù)據(jù)庫(kù)分離,然后對(duì)帖子、用戶按照板塊和ID進(jìn)行散列數(shù)據(jù)庫(kù)和表,最終可以在配置文件中進(jìn)行簡(jiǎn)單的配置便能讓系統(tǒng)隨時(shí)增加一臺(tái)低成本的數(shù)據(jù)庫(kù)進(jìn)來補(bǔ)充系統(tǒng)性能。

      (八)緩存策略

      這絕對(duì)不單指低級(jí)的緩存技術(shù)相關(guān)的編程,應(yīng)從整個(gè)架構(gòu)角度著眼,深入研究Web服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器的各層級(jí)的緩沖策略,最后才是低級(jí)的緩沖技術(shù)的編程。不同的Web服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器及Web編程語(yǔ)言都有自己不同的緩沖策略。例如數(shù)據(jù)庫(kù)存儲(chǔ)方面,SQL Serve 2005中的主動(dòng)式緩存機(jī)制,Oracle數(shù)據(jù)的cache group技術(shù),Hibernate的緩存包括Session的緩存和SessionFactory的緩存;Web服務(wù)器方面,Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進(jìn)行緩存,這兩種方式均可以有效的提高Apache的訪問響應(yīng)能力,IIS緩沖器技術(shù);至于web開發(fā)語(yǔ)言,所用緩存技術(shù)更存在很大不同,例如ASP.NET 2.0中提出了兩種緩存應(yīng)用程序數(shù)據(jù)和緩存服務(wù)頁(yè)輸出的策略,這兩種緩存技術(shù)相互獨(dú)立但不相互排斥,PHP有Pear的Cache模塊,等等。

      (九)鏡像

      鏡像是大型網(wǎng)站常采用的提高性能和數(shù)據(jù)安全性的方式,鏡像的技術(shù)可以解決不同網(wǎng)絡(luò)接入商和地域帶來的用戶訪問速度差異。在鏡像的細(xì)節(jié)技術(shù)方面,這里不闡述太深,有很多專業(yè)的現(xiàn)成的解決架構(gòu)和產(chǎn)品可選。也有廉價(jià)的通過軟件實(shí)現(xiàn)的思路,比如Linux上的rsync等工具。

      (十)負(fù)載均衡

      負(fù)載均衡將是大型網(wǎng)站解決高負(fù)荷訪問和大量并發(fā)請(qǐng)求采用的終極解決辦法。

      負(fù)載均衡技術(shù)發(fā)展了多年,有很多專業(yè)的服務(wù)提供商和產(chǎn)品可以選擇,基于LAMP

      解決方案的Lighttped+Squid是相當(dāng)不錯(cuò)的解決負(fù)載均衡和加速系統(tǒng)的有效方式。

      (十一)硬件四層交換

      第四層交換使用第三層和第四層信息包的報(bào)頭信息,根據(jù)應(yīng)用區(qū)間識(shí)別業(yè)務(wù)流,將整個(gè)區(qū)間段的業(yè)務(wù)流分配到合適的應(yīng)用服務(wù)器進(jìn)行處理。第四層交換功能就象是虛IP,指向物理服務(wù)器。它傳輸?shù)臉I(yè)務(wù)服從的協(xié)議多種多樣,有HTTP、FTP、NFS、Telnet或其他協(xié)議。這些業(yè)務(wù)在物理服務(wù)器基礎(chǔ)上,需要復(fù)雜的載量平衡算法。在IP世界,業(yè)務(wù)類型由終端TCP或UDP端口地址來決定,在第四層交換中的應(yīng)用區(qū)間則由源端和終端IP地址、TCP和UDP端口共同決定。

      在硬件四層交換產(chǎn)品領(lǐng)域,有一些知名的產(chǎn)品可以選擇,比如Alteon、F5等,這些產(chǎn)品很昂貴,但是物有所值,能夠提供非常優(yōu)秀的性能和很靈活的管理能力。Yahoo中國(guó)當(dāng)初接近2000臺(tái)服務(wù)器使用了三四臺(tái)Alteon就搞定了。(十二)軟件四層交換

      大家知道了硬件四層交換機(jī)的原理后,基于OSI模型來實(shí)現(xiàn)的軟件四層交換也就應(yīng)運(yùn)而生,這樣的解決方案實(shí)現(xiàn)的原理一致,不過性能稍差。但是滿足一定量的壓力還是游刃有余的。

      一個(gè)典型的使用負(fù)載均衡的策略就是,在軟件或者硬件四層交換的基礎(chǔ)上搭建squid集群,這種思路在很多大型網(wǎng)站包括搜索引擎上被采用,這樣的架構(gòu)低成本、高性能還有很強(qiáng)的擴(kuò)張性,隨時(shí)往架構(gòu)里面增減節(jié)點(diǎn)都非常容易。

      (十三)軟件投資問題

      據(jù)報(bào)導(dǎo),目前國(guó)內(nèi)除了一些上市企業(yè)和特別大知名大公司以外,很少有企業(yè)在成本中考慮正版軟件的購(gòu)置費(fèi)用。這種思維極有可能給中國(guó)互聯(lián)網(wǎng)帶來噩夢(mèng)。如果一些公司真正面臨軟件資金方面的困難,完全可以考慮使用開源世界的LAMP解決方案(Linux+Apache+MySQL+Perl、PHP或者Python Web編程語(yǔ)言);否則,隨著我國(guó)加入WTO范圍的不斷擴(kuò)大,盜版打擊必然越來越嚴(yán)。因此,“茍且偷生”必將自食其果。

      另外,隨著網(wǎng)絡(luò)帶寬日漸提升,WEB 2.0技術(shù)必將影響到網(wǎng)絡(luò)世界的幾乎每一個(gè)角落。因此,如何積聚技術(shù)人員進(jìn)行技術(shù)攻關(guān)并進(jìn)一步加強(qiáng)安全防范也成為一個(gè)日益嚴(yán)峻的問題,宜盡早納入到公司的議事日程。

      四、總結(jié)

      中國(guó)電子商務(wù)真正理性發(fā)展的一個(gè)標(biāo)志,是大量的傳統(tǒng)企業(yè)實(shí)實(shí)在在地開始用互聯(lián)網(wǎng)來處理商務(wù)、做生意,而現(xiàn)在這樣的浪潮已經(jīng)開始。北京發(fā)行集團(tuán),聯(lián)合SINA、6688.com等單位共同推出的網(wǎng)上虛擬書店—新新書店就是這樣的一個(gè)標(biāo)志。

      隨著網(wǎng)絡(luò)帶寬日漸提升,隨著網(wǎng)絡(luò)理念和WEB 2.0技術(shù)的斷深入人心,各種B2B、B2C、C2C等電子商務(wù)模式很可能以立體交叉方式整合到各種大型商務(wù)網(wǎng)站中來。因此,作為公司的技術(shù)人員,作為臨危救駕的“白衣騎士”,如何應(yīng)對(duì)海量存儲(chǔ)、海量訪問問題,海量信息檢索的問題,日益嚴(yán)峻的安全問題,等等,已經(jīng)刻不容緩。

      第四篇:基于java技術(shù)的軟件開發(fā)架構(gòu)總結(jié)

      基于java技術(shù)的軟件開發(fā)架構(gòu)總結(jié)

      在具體的實(shí)現(xiàn)中,表現(xiàn)層可為Struts/JSF等,業(yè)務(wù)層、訪問層可為JavaBean或EJB等,資源層一般為數(shù)據(jù)庫(kù)。

      宏觀上的層次就是這樣,在具體現(xiàn)實(shí)中,有如下幾種實(shí)現(xiàn)形式:

      1,輕量級(jí)實(shí)現(xiàn)

      表現(xiàn)層使用基于MVC的框架,比如Struts或JSF 業(yè)務(wù)層使用JavaBean(就是常說的Service)訪問層使用JavaBean(就是常說的DAO)優(yōu)點(diǎn):

      輕量級(jí)實(shí)現(xiàn),簡(jiǎn)單明了? 缺點(diǎn):

      難以無法實(shí)現(xiàn)分布式應(yīng)用?

      以下功能必須通過編程實(shí)現(xiàn)?

      事務(wù)控制? 資源管理(包括組件的創(chuàng)建)?

      線程安全問題?

      安全性?

      2,重量級(jí)J2EE實(shí)現(xiàn)

      表現(xiàn)層依然是基于MVC的框架

      訪問層采用實(shí)體Bean實(shí)現(xiàn),如果可能最好采用CMP,實(shí)現(xiàn)起來更簡(jiǎn)潔。此處的實(shí)體Bean可以考慮采用本地接口

      業(yè)務(wù)層一分為二,服務(wù)控制器可以由會(huì)話Bean充當(dāng),用來封裝業(yè)務(wù)流程(相當(dāng)于輕量級(jí)實(shí)現(xiàn)中的Service),也可以考慮采用本地接口;門面也可以由會(huì)話Bean充當(dāng)(一般來說無狀態(tài)會(huì)話Bean足矣),作為業(yè)務(wù)層的入口,應(yīng)該采用遠(yuǎn)程接口。優(yōu)點(diǎn):

      以下功能可由EJB容器自動(dòng)實(shí)現(xiàn),或通過配置實(shí)現(xiàn)?

      事務(wù)控制?

      遠(yuǎn)程訪問?

      線程安全?

      資源管理?

      安全性?

      可以進(jìn)行分布式應(yīng)用?

      因?yàn)椴捎昧薊JB,故部分特征可以由裝配人員來配置(比如事務(wù),安全性等),不需要在軟件中硬編碼? EJB組件有更好的重用性?

      可利用容器提供的其他企業(yè)級(jí)的功能(比如集群,容錯(cuò),災(zāi)難恢復(fù)等)?

      可以加入MDB(實(shí)現(xiàn)異步通訊)等技術(shù)? 缺點(diǎn):

      開發(fā)難度較高?

      如果不恰當(dāng)?shù)氖褂脤?shí)體Bean,會(huì)造成效率低下。如果采用CMP,則很多數(shù)據(jù)訪問的操作不能直接實(shí)現(xiàn)。?

      缺少良好的開發(fā)環(huán)境?

      軟件可能依賴于具體的EJB容器? EJB容器可能很貴,開發(fā)軟件也可能很貴?

      3,輕量級(jí)和重量級(jí)J2EE的切換

      如果項(xiàng)目有需求,并有充分的時(shí)間,還可以通過在表現(xiàn)層和業(yè)務(wù)層的交界處加入“業(yè)務(wù)代表”(JavaBean + 服務(wù)定位器實(shí)現(xiàn))來對(duì)表現(xiàn)層隱藏對(duì)業(yè)務(wù)層訪問的細(xì)節(jié)(JavaBean和EJB的訪問方式顯然不同),只需替換“業(yè)務(wù)代表”就可以切換輕量級(jí)和重量級(jí)兩種實(shí)現(xiàn)。舉例說明,一般電話上都有一個(gè)P/T開關(guān)(脈沖/音頻開關(guān)),隨著開關(guān)狀態(tài)的不同,撥號(hào)時(shí)電話機(jī)會(huì)判斷是使用脈沖撥號(hào)還是音頻撥號(hào)。

      這種架構(gòu)唯一的缺點(diǎn)就是必須寫兩套實(shí)現(xiàn)代碼??

      4,輕量級(jí)J2EE實(shí)現(xiàn)

      訪問層通過JavaBean調(diào)用ORM框架實(shí)現(xiàn)(Hibernate,iBatis等),代碼簡(jiǎn)潔,功能完備(相對(duì)于EJB 2.x而言),如果用的是Hibernate,可以忽略底層數(shù)據(jù)庫(kù)的差異,如果用的是iBatis,則方便對(duì)SQL進(jìn)行優(yōu)化。

      業(yè)務(wù)層和訪問層依靠AOP框架(如Spring)可以在切面中實(shí)現(xiàn)事務(wù),安全性等功能,同時(shí)不影響業(yè)務(wù)代碼。如果采用Spring,其中已經(jīng)內(nèi)置了事物切面,并可以輕易的與主流ORM框架進(jìn)行整合,實(shí)現(xiàn)聲明式的事物管理。當(dāng)然,更可以使用IoC模式降低組件間的耦合性。優(yōu)點(diǎn):

      可以通過AOP框架實(shí)現(xiàn)事物、安全性等功能,同時(shí)不影響業(yè)務(wù)代碼?

      ORM框架比CMP更靈活,比BMP更簡(jiǎn)潔(相對(duì)于EJB? 2.x而言),運(yùn)行效率也比較高

      如果使用Spring,可以用更簡(jiǎn)單的方式實(shí)現(xiàn)J2EE中比較復(fù)雜的功能?

      無需額外的容器?

      ORM和AOP框架可以找到免費(fèi)的開源實(shí)現(xiàn),降低項(xiàng)目成本(不過也有人認(rèn)為采用開源項(xiàng)目可能綜合成本更高)? 缺點(diǎn):

      非官方框架,缺少文檔、技術(shù)支持和業(yè)界經(jīng)驗(yàn)?

      采用技術(shù)太多,學(xué)習(xí)曲線較高,難以招到合適的程序員(咱們學(xué)員可以考慮在這方面下點(diǎn)功夫,呵呵)?

      某些企業(yè)級(jí)的功能輕量級(jí)框架還不能實(shí)現(xiàn)(或獨(dú)立實(shí)現(xiàn))??????????????????????????????????????????

      測(cè)試、調(diào)試均比較復(fù)雜?

      另類之處:

      使用BMP + Hibernate(具體做法為BMP中的持久化方法,比如ejbLoad, ejbStore等都委托給Hibernate實(shí)現(xiàn))優(yōu)點(diǎn):

      借助于Hibernate強(qiáng)大的ORM功能彌補(bǔ)CMP的不足(特別是EJB-QL)缺點(diǎn):

      事物不好控制

      不倫不類,容易發(fā)生未知的錯(cuò)誤(比如Hibernate自身的緩存可能會(huì)于容易提供的緩存沖突)另類之處:

      將業(yè)務(wù)層(也可能包含訪問層)包裝成Web Services,支持遠(yuǎn)程調(diào)用 優(yōu)點(diǎn):

      借助于Web Services可以實(shí)現(xiàn)松散耦合分布式應(yīng)用,說的大一點(diǎn),就是傳說中的SOA,呵呵 缺點(diǎn):

      Web Services自身效率不高,無狀態(tài),安全性差

      當(dāng)然,即使不分層,也能做出軟件來,但我們應(yīng)該思考怎么做才能最好?如果說分層不好,那么不分層的優(yōu)勢(shì)又在哪里呢??如果說分層有性能的損耗,那么性能損耗在哪里呢??如果不分層,軟件工程思想中的“分而治之”的原則啟不受到了質(zhì)疑?

      有人說,分層是為了減少代碼量,如果分層是為了減少代碼量,那怎么能減少,代碼的重用也許會(huì)減少一些,但是程序更多的是業(yè)務(wù),我們關(guān)心的也只是業(yè)務(wù),試問分層的意義就是為了減少代碼量?

      總之我的觀點(diǎn)就是:軟件分層是必須做的。至于框架,不應(yīng)該問用不用,而應(yīng)該問用什么?要選用實(shí)踐檢驗(yàn)過的框架,畢竟實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。

      二年的J2EE開發(fā)之后,我們應(yīng)該掌握了一些主流的架構(gòu)模式,總結(jié)一下:

      宏觀上講,我們采用了分層的架構(gòu),將軟件分為如下的層次:

      第五篇:Struts2+Hibernate架構(gòu)技術(shù)教程課后參考答案

      第1章

      Struts2框架技術(shù)入門

      1.5 習(xí)題 1.5.1 選擇題

      1.D 2.A 3.C 4.B 5.B 1.5.2 填空題

      1.MVC

      2.Struts1和WebWork 3.IBM 4.FilterDispatcher 5.JSP、Struts2標(biāo)簽

      1.5.3 簡(jiǎn)答題

      1.簡(jiǎn)述MVC設(shè)計(jì)模式的工作流程。答:MVC設(shè)計(jì)模式工作流程是:

      (1)用戶的請(qǐng)求(V)提交給控制器(C);

      (2)控制器接受到用戶請(qǐng)求后根據(jù)用戶的具體需求,調(diào)用相應(yīng)的JavaBean或者EJB(M部分)來進(jìn)行處理用戶的請(qǐng)求;

      (3)控制器調(diào)用M處理完數(shù)據(jù)后,根據(jù)處理結(jié)果進(jìn)行下一步的調(diào)轉(zhuǎn),如跳轉(zhuǎn)到另外一個(gè)頁(yè)面或者其他Servlet。

      2.簡(jiǎn)述Struts2的工作原理。

      答:Struts2中使用攔截器來處理用戶請(qǐng)求,從而允許用戶的業(yè)務(wù)控制器Action與Servlet分離。用戶請(qǐng)求提交后經(jīng)過多個(gè)攔截器攔截后交給核心控制器FilterDispatcher處理,核心控制器讀取配置文件struts.xml,根據(jù)配置文件的信息指定某一個(gè)業(yè)務(wù)控制器Action(POJO類)來處理用戶數(shù)據(jù),業(yè)務(wù)控制器調(diào)用某個(gè)業(yè)務(wù)組件進(jìn)行處理,在處理的過程中可以調(diào)用其他模型組件共同完成數(shù)據(jù)的處理。Action處理完后會(huì)返回給核心控制器FilterDispatcher一個(gè)處理結(jié)果,核心控制器根據(jù)返回的處理結(jié)果讀取配置文件struts.xml,根據(jù)配置文件中的配置,決定下一步跳轉(zhuǎn)到哪一個(gè)頁(yè)面。

      一個(gè)客戶請(qǐng)求在Struts2框架中處理的過程大概有以下幾個(gè)步驟:(1)客戶提交請(qǐng)求到服務(wù)器;

      (2)請(qǐng)求被提交到一系列的過濾器過濾后最后到FilterDispatcher;FilterDispatcher是核心控制器,是基于Struts2中MVC模式的控制器部分;

      (3)FilterDispatcher讀取配置文件struts.xml,根據(jù)配置信息調(diào)用某個(gè)Action來處理客戶請(qǐng)求;

      (4)Action執(zhí)行完畢,返回執(zhí)行結(jié)果,根據(jù)struts.xml的配置找到對(duì)應(yīng)的返回結(jié)果。1.5.4 實(shí)訓(xùn)題

      第2章

      Struts2核心組件詳解 2.7 習(xí)題

      2.7.1 選擇題

      1.B 2.C 3.B 4.D 5.B 6.D 2.7.2 填空題

      1.struts.xml和struts.properties 2.struts.xml、struts.properties和web.xml 3.Action和攔截器 4.非耦合性

      5.IoC方式和非IoC方式

      6.不指定method屬性和指定method屬性 7.表達(dá)式、根對(duì)象和上下文環(huán)境 8.UI標(biāo)簽、非UI標(biāo)簽 9.表單標(biāo)簽和非表單標(biāo)簽 10.數(shù)據(jù)標(biāo)簽和控制標(biāo)簽

      2.7.3 簡(jiǎn)答題

      1.簡(jiǎn)述struts.xml配置文件的作用。

      答:Struts2的核心配置文件是struts.xml,struts.xml具有重要的作用,所有用戶請(qǐng)求被Struts2核心控制器FilterDispatcher攔截,然后業(yè)務(wù)控制器代理通過配置管理類查詢配置文件struts.xml中由哪個(gè)也Action處理。

      2.簡(jiǎn)述Struts2的核心控制器FilterDispatcher的作用。

      答:FilterDispatcher是Struts2框架的核心控制器,該控制器作為一個(gè)Filter運(yùn)行在Web應(yīng)用中,它負(fù)責(zé)攔截所有的用戶請(qǐng)求,當(dāng)用戶請(qǐng)求到達(dá)時(shí),該Filter會(huì)過濾用戶請(qǐng)求。如果用戶請(qǐng)求以action結(jié)尾,該請(qǐng)求將被轉(zhuǎn)入Struts2框架處理。Struts2框架獲得了*.action請(qǐng)求后,將根據(jù)*.action請(qǐng)求的前面部分決定調(diào)用哪個(gè)業(yè)務(wù)控制器組件,例如,對(duì)于login.action請(qǐng)求,Struts2調(diào)用名為login的Action來處理該請(qǐng)求。Struts2應(yīng)用中的Action都被定義在struts.xml文件中,在該文件中定義Action時(shí),定義了該Action的name屬性和class屬性,其中name屬性決定了該Action處理哪個(gè)用戶請(qǐng)求,而class屬性決定了該Action的實(shí)現(xiàn)類。

      3.簡(jiǎn)述Struts2的業(yè)務(wù)控制器Action的作用。答:Action類中包含了對(duì)用戶請(qǐng)求的處理邏輯,因此也把Action稱為Action業(yè)務(wù)控制器。Action是應(yīng)用的核心,業(yè)務(wù)控制器是Struts2中實(shí)現(xiàn)業(yè)務(wù)控制的中心,除了保存用戶的數(shù)據(jù)外,它也負(fù)責(zé)調(diào)用其他模型組件在execute()方法中進(jìn)行數(shù)據(jù)處理。

      2.7.4 實(shí)訓(xùn)題

      第3章

      Struts2的高級(jí)組件

      3.6 習(xí)題 3.6.1 選擇題

      1.A 2.A 3.B 4.C 5.C 3.6.2 填空題

      1.properties 2.native2ascii 3.AOP 4.服務(wù)器端校驗(yàn)

      3.6.3 簡(jiǎn)答題

      1.什么是國(guó)際化,為什么使用國(guó)際化? 答:“國(guó)際化”是指一個(gè)應(yīng)用程序在運(yùn)行時(shí)能夠根據(jù)客戶端請(qǐng)求所來自的國(guó)家/地區(qū)、語(yǔ)言的不同而顯示不同的用戶界面。例如,請(qǐng)求來自于一臺(tái)中文操作系統(tǒng)的客戶端計(jì)算機(jī),則應(yīng)用程序響應(yīng)界面中的各種標(biāo)簽、錯(cuò)誤提示和幫助信息均使用中文文字;如果客戶端計(jì)算機(jī)采用英文操作系統(tǒng),則應(yīng)用程序也應(yīng)能識(shí)別并自動(dòng)以英文界面做出響應(yīng)。

      引入國(guó)際化機(jī)制的目的在于提供自適應(yīng)的、更友好的用戶界面,而并未改變程序的其他功能/業(yè)務(wù)邏輯。人們常用I18N 這個(gè)詞作為“國(guó)際化”的簡(jiǎn)稱,其來源是英文單詞Internationalization 的首末字母I 和N 及它們之間的字符數(shù)18。

      2.簡(jiǎn)述Struts2中實(shí)現(xiàn)國(guó)際化流程的過程。答:(1)不同地區(qū)使用操作系統(tǒng)環(huán)境不同,如中文操作系統(tǒng)、英文操作系統(tǒng)、韓文操作系統(tǒng)等,在獲得客戶端地區(qū)的語(yǔ)言環(huán)境后,struts.xml文件會(huì)找國(guó)際化資源文件,當(dāng)時(shí)中文語(yǔ)言環(huán)境,就加載中文國(guó)際化資源文件。所示國(guó)際化需要編寫支持多個(gè)語(yǔ)言的國(guó)際化資源文件,并且配置struts.xml文件。

      (2)根據(jù)選擇的語(yǔ)言加載相應(yīng)的國(guó)際化資源文件,視圖通過Struts2標(biāo)簽讀取國(guó)際化資源文件把數(shù)據(jù)輸出到頁(yè)面上,完成頁(yè)面的顯示。

      3.什么是攔截器,攔截器的作用是什么?

      答:攔截器(Interceptor)體系是Struts2的一個(gè)重要組成部分,正是大量的內(nèi)置攔截器才提供了Struts2的大部分操作。當(dāng)FilterDispatcher攔截到用戶請(qǐng)求后,大量的攔 截器將會(huì)對(duì)用戶請(qǐng)求進(jìn)行處理,然后才調(diào)用用戶自定義的Action類中的方法來處理請(qǐng)求,比如params攔截器將HTTP請(qǐng)求中的參數(shù)解析出來,將這些解析出來參數(shù)設(shè)置為Action的屬性;servlet-config攔截器直接將HTTP請(qǐng)求中的HttpServletRequest實(shí)例和HttpServletResponse實(shí)例傳給Action;國(guó)際化攔截器i18n將國(guó)際化資源進(jìn)行操作;文件上傳攔截器fileUpload將文件信息傳給Action。另外還有數(shù)據(jù)校驗(yàn)攔截器對(duì)數(shù)據(jù)校驗(yàn)信息進(jìn)行攔截。對(duì)于Struts2的攔截器體系而言,當(dāng)需要使用某個(gè)攔截器時(shí),只需在配置文件struts.xml中配置就可以使用;如果不需要使用該攔截器,也是只需在struts.xml配置文件中取消配置即可。Struts2的攔截器可以理解為一種可插拔式的設(shè)計(jì)思想,所以Struts2框架具有非常好的可擴(kuò)展性。

      4.簡(jiǎn)述在Java Web應(yīng)用開發(fā)Struts2的輸入校驗(yàn)的作用。

      答:在互聯(lián)網(wǎng)上,Web站點(diǎn)是對(duì)外提供服務(wù)的,由于站點(diǎn)的開放性,Web站點(diǎn)保存的數(shù)據(jù)主要都是從客戶端接受過來。輸入數(shù)據(jù)的用戶來自不同的行業(yè),有著不同的教育背景和生活習(xí)慣,從而不能保證輸入內(nèi)容的正確性。例如,用戶操作計(jì)算機(jī)不熟悉、輸入出錯(cuò)、網(wǎng)絡(luò)問題或者惡意輸入等,這些都可能導(dǎo)致數(shù)據(jù)異常。如果對(duì)數(shù)據(jù)不加校驗(yàn),有可能導(dǎo)致系統(tǒng)阻塞或者系統(tǒng)崩潰。

      3.6.4 實(shí)訓(xùn)題

      第5章

      Hibernate框架技術(shù)入門

      5.5 習(xí)題

      5.5.1 選擇題

      1.A 2.B 3.A 5.5.2 填空題

      1.JDBC和ORM 2.hibernate.cfg.xml和hibernate.properties 3.xxx.hbm.xml或者.hbm.xml 4.臨時(shí)狀態(tài)(transient)、持久化狀態(tài)(persistent)和脫管狀態(tài)(detached)

      5.5.3 簡(jiǎn)答題

      1.簡(jiǎn)述Hibernate的特點(diǎn)。答:(1)Hibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC 進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java 程序員可以隨心所欲地使用面向?qū)ο缶幊趟季S來操縱數(shù)據(jù)庫(kù)。Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在JavaEE框架中取代CMP,完成數(shù)據(jù)持久化的重任。(2)Hibernate的目標(biāo)是成為Java中管理數(shù)據(jù)持久性問題的一種完整解決方案。它協(xié)調(diào)應(yīng)用與關(guān)系數(shù)據(jù)庫(kù)的交互,讓開發(fā)者解放出來專注于手中的業(yè)務(wù)問題。

      (3)Hibernate是一種非強(qiáng)迫性的解決方案。開發(fā)者在寫業(yè)務(wù)邏輯與持久化類時(shí),不會(huì)被要求遵循許多Hibernate特定的規(guī)則和設(shè)計(jì)模式。這樣,Hibernate就可以與大多數(shù)新的和現(xiàn)有的應(yīng)用平順地集成,而不需要對(duì)應(yīng)用的其余部分做破壞性的改動(dòng)。

      2.簡(jiǎn)述Hibernate的工作原理。

      答:首先,Configuration讀取Hibernate的配置文件及映射文件中的信息,即加載配置文件和映射文件,并通過Hibernate配置文件生成一個(gè)多線程的SessionFactory對(duì)象,然后,多線程SessionFactory對(duì)象生成一個(gè)線程Session 對(duì)象,Session對(duì)象生成Query對(duì)象或者Transaction對(duì)象;可通過Session對(duì)象的get(),load(),save(),update(),delete()和saveOrUpdate()等方法對(duì)PO進(jìn)行加載、保存、更新、刪除等操作;在查詢的情況下,可通過Session 對(duì)象生成一個(gè)Query對(duì)象,然后利用Query對(duì)象執(zhí)行查詢操作;如果沒有異常,Transaction對(duì)象將提交這些操作結(jié)果到數(shù)據(jù)庫(kù)中。

      5.5.4 實(shí)訓(xùn)題

      第6章

      Hibernate核心組件詳解

      6.11 習(xí)題 6.11.1 選擇題

      1.A 2.A 3.B 6.11.2 填空題

      1.hibernate.cfg.xml和hibernate.properties 2.hbm.xml 3.get()和load()6.11.3簡(jiǎn)答題

      1.簡(jiǎn)述Hibernate配置文件的作用。

      答:Hibernate框架的配置文件用來為程序配置連接數(shù)據(jù)庫(kù)的參數(shù),例如,數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序名,URL,用戶名和密碼等。Hibernate的基本配置文件有兩種:hibernate.cfg.xml和hibernate.properties。前者包含了Hibernate與數(shù)據(jù)庫(kù)的基本連接信息,在Hibernate工作的初始階段,這些信息被先后加載到Configuration和SessionFactory實(shí)例;前者還包含了Hibernate的基本映射信息,即系統(tǒng)中每一個(gè)類與其對(duì)應(yīng)的數(shù)據(jù)庫(kù)表之間的關(guān)聯(lián)信息,在Hibernate工作的初始階段,這些信息通過hibernate.cfg.xml的mapping節(jié)點(diǎn)被加載到Configuration和SessionFactory實(shí)例中。這兩種文件信息包含了Hibernate的所有運(yùn)行期參數(shù)。兩者的配置內(nèi)容基本相同,但前者的使用稍微方便一些,例如,在 hibernate.cfg.xml 中可以定義要用到的xxx.hbm.xml 映射文件列表,而使用hibernate.properties 則需要在程序中以硬編碼方式指明。hibernate.cfg.xml是Hibernate的默認(rèn)配置文件。

      2.簡(jiǎn)述Hibernate的Configuration類的作用。答:Configuration類的主要作用是解析Hibernate的配置文件和持久化映射文件中的信息,即負(fù)責(zé)管理Hibernate的配置信息。Hibernate運(yùn)行時(shí)需要獲取一些底層實(shí)現(xiàn)的基本信息,如數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序類、數(shù)據(jù)庫(kù)的URL等。這些信息定義在Hibernate的配置文件(hibernate.cfg.xml或hibernate.properties)中。然后通過Configuration對(duì)象的buildSessionFactory()方法創(chuàng)建SessionFactory對(duì)象,所以Configuration對(duì)象一般只有在獲取SessionFactory對(duì)象時(shí)需要使用。當(dāng)獲取了SessionFactory對(duì)象之后,由于配置信息已經(jīng)由Hibernate維護(hù)并綁定在返回的SessionFactory中,因此該Configuration已無使用價(jià)值。

      3.簡(jiǎn)述Hibernate的Session的作用。

      答:Session對(duì)象是Hibernate技術(shù)的核心,持久化化對(duì)象的生命周期、事務(wù)的管理和持久化對(duì)象的查詢、更新和刪除都是通過Session對(duì)象來完成的。Hibernate在操作數(shù)據(jù)庫(kù)之前必須先取得Session對(duì)象,相當(dāng)于JDBC在操作數(shù)據(jù)庫(kù)之前必須先取得Connection對(duì)象一樣。Session對(duì)象不是線程安全的(Thread Safe),一個(gè)Session對(duì)象最好只由一個(gè)單一線程來使用。同時(shí)該對(duì)象的生命周期要比SessionFactory要短,一個(gè)應(yīng)用系統(tǒng)中可以自始至終只使用一個(gè)SessionFactory對(duì)象,其生命通常在完成數(shù)據(jù)庫(kù)的一個(gè)短暫的系列操作之后結(jié)束。

      6.11.4實(shí)訓(xùn)題

      第7章

      Hibernate的高級(jí)組件

      7.6 習(xí)題 7.6.1 選擇題

      1.B 2.A 3.C 7.6.2 填空題

      1.一對(duì)一、一對(duì)多和多對(duì)多 2.HQL、CQ、NSQL 3.一級(jí)Cache和二級(jí)Cache 7.6.3簡(jiǎn)答題

      1.簡(jiǎn)述一對(duì)一關(guān)聯(lián)關(guān)系兩種方式的區(qū)別

      答:一對(duì)一關(guān)聯(lián)關(guān)系分為主鍵關(guān)聯(lián)和外鍵關(guān)聯(lián),主鍵關(guān)聯(lián)共享一個(gè)主鍵,外鍵關(guān)聯(lián) 各自都有自己的主鍵,通過一個(gè)表的外鍵關(guān)聯(lián)起來。

      2.簡(jiǎn)述事務(wù)的特性。

      答:事務(wù)具備原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)4 個(gè)屬性,簡(jiǎn)稱ACID。下面對(duì)這4 個(gè)特性分別進(jìn)行說明:

      ? 原子性:將事務(wù)中所做的操作捆綁成一個(gè)原子單元,即對(duì)于事務(wù)所進(jìn)行的數(shù)據(jù)修改等操作,要么全部執(zhí)行,要么全部不執(zhí)行。

      ? 一致性:事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致狀態(tài),而且在相關(guān)數(shù)據(jù)中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時(shí),所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)都應(yīng)該是正確的。

      ? 隔離性:由并發(fā)事務(wù)所做的修改必須與任何其他事務(wù)所做的修改相隔離。事務(wù)查看數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是被另一并發(fā)事務(wù)修改之前的狀態(tài),要么是被另一并發(fā)事務(wù)修改之后的狀態(tài),即事務(wù)不會(huì)查看由另一個(gè)并發(fā)事務(wù)正在修改的數(shù)據(jù)。這種隔離方式也叫可串行性。

      ? 持久性:事務(wù)完成之后,它對(duì)系統(tǒng)的影響是永久的,即使出現(xiàn)系統(tǒng)故障也是如此。

      7.6.4實(shí)訓(xùn)題

      第9章 Spring3框架技術(shù)入門

      9.5習(xí)題 9.5.1 選擇題 1.B 2.A 3.C 9.5.2 填空題

      1.配置文件

      2.BeanFactory接口及其相關(guān)類,ApplicationContext接口及其相關(guān)類 3.設(shè)置注入,構(gòu)造注入

      9.5.3 簡(jiǎn)答題 9.5.4 實(shí)訓(xùn)題

      第10章 Spring3的AOP框架

      10.7習(xí)題 10.7.1 選擇題 1.B 2.D 3.C

      10.7.2 填空題

      1.靜態(tài)AOP,動(dòng)態(tài)AOP 2.通知

      3.靜態(tài)代理,動(dòng)態(tài)代理

      4.前置通知(Before Advice),后置通知(After Advice)

      10.7.3 簡(jiǎn)答題 10.7.4 實(shí)訓(xùn)題

      下載淘寶技術(shù)架構(gòu)發(fā)展總結(jié)(寫寫幫推薦)word格式文檔
      下載淘寶技術(shù)架構(gòu)發(fā)展總結(jié)(寫寫幫推薦).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        ssh架構(gòu)個(gè)人總結(jié)

        (轉(zhuǎn)載)看過了兩三個(gè)SSH搭建的視頻(浪曦風(fēng)中葉老師、尚學(xué)堂李勇老師的兩個(gè)視頻),也跟著視頻把這個(gè)框架搭了兩遍,有點(diǎn)迷迷糊糊的,為了加深印象,我決定不依靠視頻再來搭一遍, 經(jīng)過一天......

        OA辦公系統(tǒng)的主要技術(shù)架構(gòu)

        和您一樣,內(nèi)行青睞萬戶OA OA辦公系統(tǒng)的主要技術(shù)架構(gòu) OA辦公系統(tǒng)是一種重要的應(yīng)用軟件,目前各類應(yīng)用軟件已經(jīng)傾向于組件化的設(shè)計(jì)思想,以降低各邏輯組件間的耦合性。設(shè)計(jì)思想中最......

        淘寶個(gè)人總結(jié)

        篇一:淘寶運(yùn)營(yíng)個(gè)人年終總結(jié) 個(gè)人年終總結(jié) 2012已悄然離去,回想起來,風(fēng)風(fēng)火火的這一年或許可以算的上是自己經(jīng)歷的最大轉(zhuǎn)變的一年,在2012的開始,我仍在校園中晃晃悠悠,每天過的沒......

        校園淘寶總結(jié)

        第一屆校園淘寶之畢業(yè)季 傳溫暖活動(dòng)總結(jié) 5月11日學(xué)生“四成”服務(wù)大廳在新華廣場(chǎng)舉辦了第一屆校園淘寶之畢業(yè)季傳溫暖活動(dòng)。 畢業(yè)季,亦是行李的“遷徙季”。又到一年畢業(yè)季,滿......

        淘寶店鋪總結(jié)

        淘寶店鋪總結(jié) 1 聯(lián)銳廣文圖書專營(yíng)店 主營(yíng)寶貝:少兒雜志商城正版兒童禮盒禮盒裝 2 尚品智業(yè)圖書專營(yíng)店 主營(yíng)寶貝:少兒最新十萬個(gè)為什么全新2010注音彩圖中國(guó)兒童動(dòng)植物百科 3......

        淘寶裝修總結(jié)

        淘寶裝修設(shè)計(jì)總結(jié)01/首頁(yè) 首頁(yè)注重氛圍,尤其的頭部大banner,一定要做出氣勢(shì); 首頁(yè)分類一定要清晰,好的分類能讓頁(yè)面更有調(diào)理; 首圖滿屏有時(shí)候會(huì)有壓抑的感覺,不妨嘗試下950的設(shè)計(jì);......

        淘寶規(guī)則總結(jié)

        淘寶規(guī)則簡(jiǎn)介 一、 正常經(jīng)營(yíng)要注意?--交易基礎(chǔ)規(guī)則 1、 我的賬戶要解綁:如果您已通過支付寶認(rèn)證并且發(fā)布過商品,或您還有正在進(jìn)行中的交易或未處理完的投訴舉報(bào),或您的拍賣押金......

        淘寶開店總結(jié)

        國(guó)際商務(wù)系電子商務(wù)專業(yè)課程總結(jié)報(bào)告 淘寶開店之初體驗(yàn) 小組成員: --《網(wǎng)店建設(shè)與運(yùn)營(yíng)》課程總結(jié)報(bào)告 http://aiailive.taobao.com http://znn0911.taobao.com 1 國(guó)際......