freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

淘寶技術(shù)及webx3框架分析第一版(更新版)

  

【正文】 Webx 規(guī)范,是這么區(qū)分的,但是 action 與 screen 能做同樣的事,有時(shí)候開(kāi)發(fā)可能不太會(huì)去嚴(yán)格的區(qū)別它們,有些開(kāi)發(fā)主要關(guān)注能實(shí)現(xiàn)功能即可。持久層使用 ibatis, Bean 容器使用的是 Spring。天網(wǎng)在控制了所有的美軍的武器裝備后不久,獲得自我意識(shí),并且認(rèn)定人類是它存 在的威脅。 關(guān)注系統(tǒng)和人的交互 還有一個(gè)故事,在 數(shù)據(jù)層的前期版本,為了做到透明的路由,曾經(jīng)采用無(wú) SQL 的方式,所有的數(shù)據(jù)庫(kù)訪問(wèn)都是寫代碼來(lái)做。 因?yàn)閿?shù)據(jù)量大,造成數(shù)據(jù)庫(kù)壓力大,天然想到的是分散壓力,其辦法就是分庫(kù)分表。 . 數(shù)據(jù)擴(kuò)展性探討和總結(jié) 金融危機(jī)是電子商務(wù)的機(jī)遇,所以 09 年是淘寶高速發(fā)展的一年。我們都知道根據(jù) CAP 理論,一致性,可用性和分區(qū)容錯(cuò)性 3者不能同時(shí)滿足,最多只能同時(shí)滿足兩個(gè),我們傳統(tǒng)的關(guān)系數(shù)據(jù)采用了 ACID 的事務(wù)策略,而 ACID 的事務(wù)策略更加講究的是一種高一致性而降低了可用性的需求,但是互聯(lián)網(wǎng)應(yīng)用往往 對(duì)可用性的要求要略高于一致性的需求,這個(gè)時(shí)候我們就需要避免采用數(shù)據(jù)的 ACID 事務(wù)策略,轉(zhuǎn)而采用 BASE 事務(wù)策略, BASE 事務(wù)策略是基本可用性,事務(wù)軟狀態(tài)以及最終一致性的縮寫,通過(guò) BASE 事務(wù)策略,我們可以通過(guò)最終一致性來(lái)提升系統(tǒng)的可用性,這也是目前很多 NOSQL 產(chǎn)品所采用的策略,包括 facebook 的 cassandra,apache hbase,google bigtable 等,這些產(chǎn)品非常適合一些非結(jié)構(gòu)化的數(shù)據(jù),比如 keyvalue 形式的數(shù)據(jù)存儲(chǔ),并且這些產(chǎn)品有個(gè)很好的優(yōu)點(diǎn)就是水平伸縮性。 好了 , 既然說(shuō)到了異步通信 ,那么 “ 消息中間件 ” 就要登場(chǎng)了 ,采用異步通信這其實(shí)也是關(guān)系到系統(tǒng)的伸縮性 , 以及最大化的對(duì)各個(gè)子系統(tǒng)進(jìn)行解耦 。 好了,確定了這個(gè)小節(jié)的主題之后,我們回顧一下,一個(gè)互聯(lián)網(wǎng)應(yīng)用從小變大的過(guò)程中遇到的一些問(wèn)題,通過(guò)遇到的問(wèn)題來(lái)引出我們拆分 RDBMS 的重要性。 上面所說(shuō)的都是拆分的好處,但是拆分以后必 然的也會(huì)帶來(lái)新的問(wèn)題,除了剛才說(shuō)的子系統(tǒng)通信問(wèn)題外,最值得關(guān)注的問(wèn)題就是系統(tǒng)之間的依賴關(guān)系,因?yàn)橄到y(tǒng)多了,系統(tǒng)的依賴關(guān)系就會(huì)變得復(fù)雜,此時(shí)就需要更好的去關(guān)注拆分標(biāo)準(zhǔn),比如能否將一些有依賴的系統(tǒng)進(jìn)行垂直化,使得這些系統(tǒng)的功能盡量的垂直,這也是目前公司正在做的系統(tǒng)垂直化,同時(shí)一定要注意系統(tǒng)之間的循環(huán)依賴,如果出現(xiàn)循環(huán)依賴一定要小心,因?yàn)檫@可能導(dǎo)致系統(tǒng)連鎖啟動(dòng)失敗。另外寶貝詳情頁(yè)面相對(duì)也更新比較少,因此也適合放到緩存中來(lái)減低 DB 負(fù)載。 公司 cookie 框架采用的是“ 多值 cookie” ,就是一個(gè)組合鍵對(duì)應(yīng)多個(gè) cookie 的值 , 這樣不僅可以防止 cookie 數(shù)量超過(guò) 20, 同時(shí)還節(jié)省了 cookie 存儲(chǔ)有效信息的空間,因?yàn)槟J(rèn)每個(gè) cookie 都會(huì)有大約 50 個(gè)字節(jié)的元信息來(lái)描述 cookie。希望國(guó)內(nèi)能有更多的企業(yè)在使用開(kāi)源軟件的同時(shí),也能開(kāi)源自身的一些軟件,或者能夠成為一些開(kāi)源軟件的貢獻(xiàn)者。至于第二個(gè)問(wèn)題,我想跟第一個(gè)問(wèn)題一樣,關(guān)鍵是組織和規(guī)劃而不在是否開(kāi)源,并且在很多著名的開(kāi)源軟件背后,會(huì)有廠商在進(jìn)行支持。 假設(shè)你有 1000 臺(tái)應(yīng)用服務(wù)器,如果你每臺(tái)服務(wù)器上采用的不是 JBoss AS 或者其他開(kāi)源的軟件,而是使用商業(yè)的 Oracle BEA 的 Weblogic 或者 IBM 的 WebSphere,那么為這 1000 臺(tái)機(jī)器的應(yīng)用購(gòu)買 License 的費(fèi)用是非常高的??赡苡信笥严雴?wèn),作為一個(gè)如此大規(guī)模的網(wǎng)站,淘寶網(wǎng)的 Web 展現(xiàn)層采用的是什么框架,是怎么實(shí)現(xiàn)的呢?曾經(jīng)也有 第 3 頁(yè) 到淘寶的應(yīng)聘者問(wèn)過(guò)我這個(gè)問(wèn)題,他問(wèn)我說(shuō)是不是用的 struts。而 MySQL 是一款非常 優(yōu)秀的開(kāi)源數(shù)據(jù)庫(kù)管理軟件,非常適合用多臺(tái) PC Server 組成多點(diǎn)的存儲(chǔ)節(jié)點(diǎn)陣列 (這里我所指的不是 MySQL自身提供的集群功能 ),每單位的數(shù)據(jù)存儲(chǔ)成本也非常的低廉。雖然功能上沒(méi)有 Apache 強(qiáng)大,但是在不少場(chǎng)景下,性能是非常出色、強(qiáng)于 Apache 的。也給現(xiàn)在的開(kāi)發(fā)人員提供了更多的選擇。還有一些是 C/C++構(gòu)建的應(yīng)用或者是 Java構(gòu)建的 Standalone 的應(yīng)用。 Linux 操作系統(tǒng)從 1991 年第一次正式被公布到現(xiàn)在已經(jīng)走過(guò)了十七個(gè)年頭,在 PC Server 上有廣泛的應(yīng)用。下面介紹一下淘寶網(wǎng)中應(yīng)用的開(kāi)源軟件。那么下面,我就從應(yīng)用服務(wù)器操作系統(tǒng)、應(yīng)用服務(wù)器軟件、 Web Server、數(shù)據(jù)庫(kù)、開(kāi) 發(fā)框架等幾個(gè)方面來(lái)介紹一下淘寶網(wǎng)中開(kāi)源軟件的應(yīng)用。可以說(shuō),現(xiàn)在 Linux 和 FreeBSD 這兩個(gè)系統(tǒng)難分伯仲,很難說(shuō)哪個(gè)一定比另外一個(gè)要優(yōu)秀很多、能夠全面的超越對(duì)手,應(yīng)該是各有所長(zhǎng)。 JBoss AS是 RedHat的一個(gè)開(kāi)源的支持 JEE規(guī)范的應(yīng)用服務(wù)器。 在應(yīng)用服務(wù)器前端,我們采用了 Web Server 做了一次轉(zhuǎn)發(fā),我們選擇的 Web 服務(wù)器是大名鼎鼎的 Apache。 數(shù)據(jù)庫(kù) 說(shuō)完了我們采用的操作系統(tǒng)、應(yīng)用服務(wù)器、 WebServer 后,下面就來(lái)談?wù)勎覀兊臄?shù)據(jù)庫(kù)。 一個(gè)互聯(lián)網(wǎng)應(yīng)用,除了服務(wù)器的操作系統(tǒng), Web Server 軟件,應(yīng)用服務(wù)器軟件,數(shù)據(jù)庫(kù)軟件外,我們還會(huì)涉及到一些其他的系統(tǒng),比如一些中間件系統(tǒng)、文件存儲(chǔ)系統(tǒng)、搜索、分布式框架、緩存系統(tǒng)等等。淘寶網(wǎng)的Web 展現(xiàn)層的框架用的是集團(tuán)內(nèi)部自主開(kāi)發(fā)的一套 Web 框架。 淘寶網(wǎng)的開(kāi)源觀 對(duì)于開(kāi)源軟件的應(yīng)用,有些人可能擔(dān)心質(zhì)量的問(wèn)題,有些人可能擔(dān)心軟件本身發(fā)展更新的問(wèn)題,等等。在選擇一個(gè)開(kāi)源產(chǎn)品的時(shí)候,我會(huì)考慮以下幾點(diǎn): 1. 這個(gè)軟件目前的功能和它的 RoadMap 2. 軟件本身的架構(gòu) 3. 該軟件開(kāi)發(fā)的活躍度 4. 該開(kāi)源軟件是否是遵守該領(lǐng)域內(nèi)的國(guó)際規(guī)范的 5. 在同類產(chǎn)品中,要挑選有比較優(yōu)勢(shì)的。試想一下,假如我們?cè)?session中保存了大量與客戶端的狀態(tài)信息的話,那么當(dāng)保存狀態(tài)信息的 server 宕機(jī)的時(shí)候,我們?cè)趺崔k ? 通常來(lái)說(shuō),我們都是通過(guò)集群來(lái)解決這個(gè)問(wèn)題,而通常所說(shuō)的集群,不僅有負(fù)載均衡,更重要的是要有失效 恢復(fù) failover,比如 tomcat 采用的集群節(jié)點(diǎn)廣播復(fù)制, jboss 采用的配對(duì)復(fù)制等 session 狀態(tài)復(fù)制策略,但是集群中的狀態(tài)恢復(fù)也有其缺點(diǎn),那就是嚴(yán)重影響了系統(tǒng)的伸縮性 , 系統(tǒng)不能通過(guò)增加更多的機(jī)器來(lái)達(dá)到良好的水平伸縮,因?yàn)榧汗?jié)點(diǎn)間 session的通信會(huì)隨著節(jié)點(diǎn)的增多而開(kāi)銷增大,因此要想做到應(yīng)用本身的伸縮性,我們需要保證應(yīng)用的無(wú)狀態(tài)性,這樣集群中的各個(gè)節(jié)點(diǎn)來(lái)說(shuō)都是相同的,從而是的系統(tǒng)更好的水平伸縮。 一般來(lái)說(shuō)緩存根據(jù)與應(yīng)用程序的遠(yuǎn)近程度不同可以分為 : local cache 和 remote cache。但是,兄弟們都清楚,好景不長(zhǎng),隨著系統(tǒng)用戶的不斷增加,系統(tǒng)的訪問(wèn)壓力越來(lái)越多,同時(shí)隨著系統(tǒng)發(fā)展,為了滿足用戶的需求,原有的系統(tǒng)需要增加新的功能進(jìn)來(lái),系統(tǒng)變得越來(lái)越復(fù)雜的時(shí)候,我們會(huì)發(fā)現(xiàn)系統(tǒng)變得越來(lái)越難維護(hù),難擴(kuò)展,同時(shí)系統(tǒng)伸縮性和可用性也會(huì)受到影響。在 ,公司幾乎所有的邏輯都放在一個(gè)系統(tǒng)中,這樣導(dǎo)致的問(wèn)題就是系統(tǒng)擴(kuò)展和修改非常麻煩,并且更加致命的是隨著公司業(yè)務(wù)量的增加,如果按照 的架構(gòu)已經(jīng)沒(méi)有辦法支撐以后公司的快速發(fā)展,因此大家決定對(duì)整個(gè)系統(tǒng)進(jìn)行拆分 , 版本的系統(tǒng)對(duì)整個(gè)系統(tǒng)進(jìn)行了水平和垂直兩個(gè)方向的拆分,水平方向上,按照功能分為交易,評(píng)價(jià),用戶,商品等系統(tǒng),同樣垂直 方向上,劃分為業(yè)務(wù)系統(tǒng),核心業(yè)務(wù)系統(tǒng)以及 基礎(chǔ)服務(wù),這樣以來(lái),各個(gè)系統(tǒng)都可以獨(dú)立維護(hù)和獨(dú)立的進(jìn)行水平伸縮,比如交易系統(tǒng)可以在不影響其它系統(tǒng)的情況下獨(dú)立的進(jìn)行水平伸縮以及功能擴(kuò)展 。但是好景還是不長(zhǎng),有一天我們發(fā)現(xiàn) master 這哥們撐 不住了,它負(fù)載老高了,汗流浹背,隨時(shí)都有翹掉的風(fēng)險(xiǎn),這個(gè)時(shí)候就需要咱們垂直分區(qū)啦(也就是所謂的分庫(kù)),比如將商品信息,用戶信息,交易信息分別存儲(chǔ)到不同的數(shù)據(jù)庫(kù)中,同時(shí)還可以針對(duì)商品信息的庫(kù)采用 master, salve 模式, OK,通過(guò)分庫(kù)以后,各個(gè)按照功能拆分的數(shù)據(jù)庫(kù)寫壓力被分擔(dān)到了不同的 server 上面,這樣數(shù)據(jù)庫(kù)的壓力終于有恢復(fù)到正常狀態(tài)。首先我們想想,假如系統(tǒng)有 A和 B兩個(gè)子系統(tǒng)構(gòu)成,假如 A 和 B是同步通信的話,那么要想使得系統(tǒng)整體伸縮性提高必須同時(shí)對(duì) A和 B 進(jìn)行伸縮,這就影響了對(duì)整個(gè)系統(tǒng)進(jìn)行 scale ,同步調(diào)用還會(huì)影響到可用性,從數(shù)學(xué)推理的角度來(lái)說(shuō), A 同步調(diào)用 B,如果 A 可用,那么 B 可用,逆否命題就是如果 B不可用,那么 A也不可用,這將大大影響到系統(tǒng)可用性, 再次,系統(tǒng)之間異步通信以后可以大大提高系統(tǒng)的響應(yīng)時(shí)間,使得每個(gè)請(qǐng)求的響應(yīng)時(shí)間變短,從而提高用戶體驗(yàn),因此異步在提高了系統(tǒng)的伸縮性以及可用性的同時(shí),也大大的增強(qiáng)了請(qǐng)求的響應(yīng)時(shí)間(當(dāng)然了,請(qǐng)求的總體處理時(shí)間也許不會(huì)變少)。 因?yàn)橐粋€(gè)大型的分布式系統(tǒng)中勢(shì)必會(huì)涉及到各種各樣的設(shè)備,比如網(wǎng)絡(luò)交換機(jī),普通 PC機(jī),各種型號(hào)的網(wǎng)卡,硬盤,內(nèi)存等等,而這些東東都在數(shù)量非常多的時(shí)候,出現(xiàn)錯(cuò)誤的概率也會(huì)變大,因此我們需要時(shí)時(shí)刻刻監(jiān)控系統(tǒng)的狀態(tài),而監(jiān)控也有粒度的粗細(xì)之分,粒度粗一點(diǎn)的話,我們需要對(duì)整個(gè)應(yīng)用系統(tǒng)進(jìn)行監(jiān)控,比如目前的系統(tǒng)網(wǎng)絡(luò)流量是多少,內(nèi)存利用率是多少, IO, CPU 的負(fù)載是多少,服務(wù)的訪問(wèn)壓力是多少,服務(wù)的響應(yīng)時(shí)間是多少等這 一系列的監(jiān)控,而細(xì)粒度一點(diǎn)的話,我們就需對(duì)比如應(yīng)用中的某個(gè)功能,某個(gè) URL 的訪問(wèn)量是 第 10 頁(yè) 多,每個(gè)頁(yè)面的 PV 是多少,頁(yè)面每天占用的帶寬是多少,頁(yè)面渲染時(shí)間是多少,靜態(tài)資源比如圖片每天占用的帶寬是多少等等進(jìn)行進(jìn)一步細(xì)粒度的監(jiān)控。 對(duì)于一個(gè)電子商務(wù)網(wǎng)站來(lái)講,訂單是最核心的數(shù)據(jù),也是增長(zhǎng)最快的數(shù)據(jù)。有了訂單的先例,首先想到了讀寫分離,因?yàn)槌杀究梢宰龅汀? 另外一個(gè)在 2020 年的感觸是業(yè)界服務(wù)化的實(shí)施情況,很多組織都在實(shí)施服務(wù)化,系統(tǒng)層 第 12 頁(yè) 面都很成功,通信、負(fù)載均衡、消息系統(tǒng)、服務(wù)容器等都有很多成果,但是實(shí)施一段時(shí)間以后的效果并不是非常好,依賴復(fù)雜,變更混亂,效率低下。 關(guān)注可用性 還有一個(gè)感觸是業(yè)界對(duì)可用性這個(gè)基本指標(biāo)的關(guān)注度不夠。 Webx 里面有三個(gè)比較重要的概念, action, screen, control,下面分別來(lái)做介紹,看圖。如圖: . Webx 的目錄結(jié)構(gòu)及重要的文件 由于 webx 是基于標(biāo)準(zhǔn)的 JavaEE Web 應(yīng)用規(guī)范,因此它的目錄結(jié)構(gòu)是我們熟悉的 B/S 結(jié)構(gòu)。 :即管道,它是由一個(gè)或多個(gè)“閥門 Valve”構(gòu)成的。 . Webx 執(zhí)行的流程 當(dāng)在瀏覽器里敲入 時(shí),在 Webx 中發(fā)生了哪些事呢? Webx 按照以下流程執(zhí)行這個(gè)請(qǐng)求,得到請(qǐng)求的頁(yè)面。 2)依次查找 screen 類: . Login (如果找不到,嘗試下一 個(gè)) (如果找不到,嘗試下一個(gè)) (如果找不到,嘗試下一個(gè)) Default (如果找不到,嘗試下一個(gè)) TemplateScreen (系統(tǒng)默認(rèn) screen,不可能找不到的) 執(zhí)行 screen 類,并渲染 screen 模板。 } try { executingIndex++。 } finally { if (()) { (...Exited {}: {}, descCurrentValve(), valve)。 通過(guò)以上的機(jī)制,把一個(gè)個(gè) valve 串聯(lián)起來(lái),從而形成 webx的各種核心流程和擴(kuò)展,關(guān)于如何配置 pipeline 和 valve 這塊, webx 采用自定義的 schema 的方式,如以下例子所示: services:pipeline xmlns= ! 初始化 turbine rundata,并在 pipelineContext 中設(shè)置可能會(huì)用到的對(duì)象 (如 rundata、 utils),以便 valve 取得。 plconditions:targetextensioncondition extension=do / performAction / performScreen / /when when ! 讀取資源文件。 下面具體解析一下這幾點(diǎn): Module 與 Adapter 請(qǐng)求響應(yīng)的 Action和返回渲染的 Screen都需要開(kāi)發(fā)者根據(jù)具體 業(yè)務(wù)邏輯定制相應(yīng)的類,勢(shì)必要解決如何管理、組織和調(diào)用這些類的問(wèn)題。 i++) { Object value。 ()) { value = getPrimitiveDefaultValue(paramType)。 //確保 group 存在 groupName = getGroupConfig(()).getName()。 if (().getRawType().isAssignableFr om()) { skipModuleExecutionIfNecessary(valid, field)。 WebX 基本的組合模式是: velocity+spring+ibits。 imp
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1