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

正文內(nèi)容

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

  

【正文】 .. 7 . 異步通信 .................................................................................................................... 8 . 非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ) ...................................................................................................... 9 . 監(jiān)控、預(yù)警系統(tǒng) ......................................................................................................... 9 . 配置統(tǒng)一管理 ............................................................................................................10 . 數(shù)據(jù)擴(kuò)展性探討和總結(jié) .....................................................................................................10 . WebX.................................................................................................................................12 . 總述 ..........................................................................................................................12 . pipeline 與 valve.....................................................................................................18 . action 與 screen ......................................................................................................21 . 一個(gè)框架應(yīng)用 ............................................................................................................25 第 1 頁(yè) 1. 淘寶 技術(shù) . 淘寶總述 淘寶網(wǎng),是一個(gè)在線商品數(shù)量突破 一億,日均成交額超過(guò)兩億元人民幣,注冊(cè)用戶接近八千萬(wàn)的大型電子商務(wù)網(wǎng)站,是亞洲最大的購(gòu)物網(wǎng)站。要先選擇操作系統(tǒng),然后才是操作系統(tǒng)基礎(chǔ)上的應(yīng)用軟件。 應(yīng)用服務(wù)器 在確定了服務(wù)器的硬件、服務(wù)器的操作系統(tǒng)之后,下面我們來(lái)說(shuō)說(shuō)業(yè)務(wù)系統(tǒng)的構(gòu)建。而商業(yè)軟件的選擇就是 IBM 的 WebSphere 和 BEA 的 WebLogic。在今天來(lái)說(shuō), Lighty 也會(huì)是一個(gè)非常好的選擇。 Oracle 是一款優(yōu)秀的、廣泛采用的商業(yè)數(shù)據(jù)庫(kù)管理軟件。但是,考慮到淘寶網(wǎng)自己的需求和大并發(fā)量的壓力,這些系統(tǒng)都選擇了自主開(kāi)發(fā)框架。這些開(kāi)源軟件的采用為我們構(gòu)建應(yīng)用系統(tǒng)提供了很大的幫助。這和商業(yè)軟件是一樣的。 對(duì)于企業(yè)級(jí)系統(tǒng)、互聯(lián)網(wǎng)應(yīng)用來(lái)說(shuō),采用開(kāi)源軟件不僅可以降低成本,更重要的是能夠真正了解軟件的內(nèi)部工作機(jī)制。公司的 session 框架采用的是 client cookie實(shí)現(xiàn),主要將狀態(tài)保存到了 cookie 里面,這樣就使得應(yīng)用節(jié)點(diǎn)本身不需要保存任何狀態(tài)信息 , 這樣在系統(tǒng)用戶變多的時(shí)候,就可以通過(guò)增加更多的應(yīng)用節(jié)點(diǎn)來(lái)達(dá)到水平擴(kuò)展的目的 。 對(duì)于一些讀寫(xiě)比不高,同時(shí)對(duì)數(shù)據(jù)安全性需求不高的數(shù)據(jù),我們可以將其緩存起來(lái)從而減少對(duì)底層 數(shù)據(jù)庫(kù)的訪問(wèn) , 比如統(tǒng)計(jì)商品的訪問(wèn)次數(shù) , 統(tǒng)計(jì) API 的調(diào)用量等等 , 可以采用先寫(xiě)內(nèi)存緩存然后延遲持久化到數(shù)據(jù)庫(kù),這樣可以大大減少對(duì)數(shù)據(jù)庫(kù)的寫(xiě)壓力。但是拆分也給系統(tǒng)帶來(lái)了問(wèn)題,就是子系統(tǒng)之間如何通信的問(wèn)題,而具體的通信方式有哪些呢?一般有同步通信和異步通信,這里我們首先來(lái)說(shuō)下同步通信,下面的主題 “ 消息系統(tǒng) ” 會(huì)說(shuō)到異步通信。 第 7 頁(yè) . 數(shù)據(jù)庫(kù)拆分 在前面 “ 應(yīng)用拆分 ” 主題中,我們提到了一個(gè)大型互聯(lián)網(wǎng)應(yīng)用需要進(jìn)行良好的拆分,而那里我們 僅僅說(shuō)了 “ 應(yīng)用級(jí)別 ” 的拆分,其實(shí)我們的互聯(lián)網(wǎng)應(yīng)用除了應(yīng)用級(jí)別的拆分以外,還有另外一個(gè)很重要的層面就是存儲(chǔ)如何拆分的。 拿公司目前的情況來(lái)說(shuō),公司目前也正在從昂貴的高端存儲(chǔ)(小型機(jī) +ORACLE)切換到 MYSQL, 切換到 MYSQL 以后,勢(shì)必會(huì)遇到垂直分區(qū)(分庫(kù))以及水平分區(qū)( Sharding)的問(wèn)題,因此目前公司根據(jù)自己的業(yè)務(wù)特點(diǎn)也開(kāi)發(fā)了自己的 TDDL 框架,此框架主要解決了分庫(kù)分表對(duì)應(yīng)用的透明化以及 異構(gòu)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)復(fù)制。 第 9 頁(yè) . 非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ) 在一個(gè)大型的互聯(lián)網(wǎng)應(yīng)用當(dāng)中,我們會(huì)發(fā)現(xiàn)并不是所有的數(shù)據(jù)都是結(jié)構(gòu)化的,比如一些配置文件,一個(gè)用戶對(duì)應(yīng)的動(dòng)態(tài),以及一次交易的快照等信息,這些信息一般不適合保存到RDBMS 中,它們更符合一種 Keyvalue 的結(jié)構(gòu),另外還有一類數(shù)據(jù),數(shù)據(jù)量非常的大,但是實(shí)時(shí)性要求不高,此時(shí)這些數(shù)據(jù)也需要通過(guò)另外的一種存儲(chǔ)方式進(jìn)行存儲(chǔ),另外一些靜態(tài)文件,比如各個(gè)商品的圖片,商品描述等信息,這些信息因?yàn)楸容^大,放入 RDBMS 會(huì)引起讀取性能問(wèn)題,從而影響到其它的數(shù)據(jù)讀取性 能,因此這些信息也需要和其它信息分開(kāi)存儲(chǔ),而一般的互聯(lián)網(wǎng)應(yīng)用系統(tǒng)都會(huì)選擇把這些信息保存到分布式文件系統(tǒng)中,因此公司目前也開(kāi)發(fā)了自己的分布式文件系統(tǒng) TFS, TFS 目前限制了文件大小為 2M,適合于一些小于 2M 數(shù)據(jù)的存放。 . 配置統(tǒng)一管理 一個(gè)大型的分布式應(yīng)用,一般都是有很多節(jié)點(diǎn)構(gòu)成的,如果每次一個(gè)新的節(jié)點(diǎn)加入都要更改其它節(jié)點(diǎn)的配置,或者每次刪除一個(gè)節(jié)點(diǎn)也要更改配置的話,這樣不僅不利于系統(tǒng)的維護(hù)和管理,同時(shí)也更加容易引入錯(cuò)誤。最大的問(wèn)題在于數(shù)據(jù)分割的規(guī)則,無(wú)規(guī)則的水平分割肯定會(huì)帶來(lái)數(shù)據(jù)合并的開(kāi)銷,而按照業(yè)務(wù)規(guī)則拆分,會(huì)因?yàn)橘I家和賣家的查詢需求不同而導(dǎo)致數(shù)據(jù)不能分割,唯一可行的火花是把訂單雙份保存,買家賣家各自一份,只是成本比較高,而且對(duì)數(shù)據(jù)同步的要求非常高。說(shuō)到底,回歸本源。軟件或服務(wù)的可測(cè)試性是對(duì)測(cè)試人員的關(guān)注、可維護(hù)性和可管理性是對(duì)運(yùn)維人員的關(guān)注,而一個(gè)框架的易用性是對(duì)所有使用人員的關(guān)注。 2020 年,很多 可以做的事情,面向服務(wù)系統(tǒng)的隔離和降級(jí)、系統(tǒng)可維護(hù)性的提高、協(xié)程和異步模式在 web 應(yīng)用的全面使用…… 免責(zé)聲明:我很現(xiàn)實(shí),為解決問(wèn)題和完成工作不擇手段,并且不懂架構(gòu)是什么意思,以上觀點(diǎn)如有雷同,純屬巧合!如有異議,歡迎拍磚! . WebX . 總述 . Webx 簡(jiǎn)單概括 WebX 是阿里巴巴的內(nèi)部框架,“就是把頁(yè)面與 Service 層之間的一些 Servlet 等公共的東西抽象出來(lái),提供相應(yīng)的服務(wù)以提高開(kāi)發(fā)效率(《接口測(cè)試之 Webx 簡(jiǎn)介》 — 何曉峰 )”,可以看出, Webx 和傳統(tǒng)的 servletaction 模式的 HettpServlet 為基礎(chǔ),對(duì)其中的公用的抽象 第 13 頁(yè) 整理后,得到一個(gè)輕量級(jí)的 web 開(kāi)發(fā)框架。 對(duì) webx 層做接口測(cè)試 , 就是對(duì) action 與 screen 來(lái)做測(cè)試,它們的區(qū)別是: (1) screen 就相當(dāng)于 select 查詢,比如請(qǐng)求一個(gè)鏈接 ,就會(huì)有 GetUserScreen 中的 execute 方法來(lái)獲得用戶信息,然后將其渲染到 ge 顯示到頁(yè)面。 所有配置文件都放在 WEBINF 目錄下。對(duì)于程序的排錯(cuò)至關(guān)重要。 2) 稱為 Servlet Path。 webx3 包含的東西很多,也不依附于 struts、 webwork 或 spring mvc 等框架的原有模型,完全基于自己的一套模型和機(jī)制,但從主線條上看是非常簡(jiǎn)單明 了的,總結(jié)為一點(diǎn)就是通過(guò)pipeline 與 valve 把各種處理和擴(kuò)展串聯(lián)起來(lái) , 形成對(duì) web 請(qǐng)求和返回過(guò)程中所有點(diǎn)的支持。 if (executingIndex ) { Valve valve = valves[executingIndex]。 executedIndex == executingIndex) { if (()) { ({} execution was interrupted by {}: {}, new Object[] { descCurrentPipeline(), descCurrentValve(), valve })。 setLoggingContext / ! 分析 URL,取得 target。 breakUnlessTargetRedirected / /loop /services:pipeline 從以上配置代碼不然發(fā)現(xiàn),這種 schema 還包含了流程控制的元素,除了各個(gè) valve 的順序執(zhí)行,還可以進(jìn)行循環(huán)和 條件控制。 } 不同的執(zhí)行器通過(guò) Adapter 的模式統(tǒng)一為 Module, 實(shí)現(xiàn) execute 方法,完成對(duì) Action 或Screen 的調(diào)用。 return。 } catch (InvocationTargetException e) { throw (Exception) ()。 skipIfInvalid = ()。 if (valid) { try { return (().getRawType(), 第 25 頁(yè) context .getExtraObject(), null)。 Action 開(kāi)發(fā) 作用: action 一般用于處理 form 提交,處理完之后再將結(jié)果給一個(gè)模板去進(jìn)行渲染。 import 。 import 。 ( 4) Action 類的實(shí)現(xiàn)如下: package 。 } } } return null。 Group group = (groupName, groupInstanceKey)。 2) action 參數(shù)自動(dòng)注入 以上代碼可以看出,反射調(diào)用中最核心的是對(duì)各種方法所需參數(shù)的自動(dòng)注入,比如一個(gè) action 的方法: public void doGreeting(FormGroup(simple) SimpleObject simple, Navigator nav) 第 24 頁(yè) webx 可以自動(dòng)通過(guò)用戶提交的 request 組裝成業(yè)務(wù)對(duì)象 SimpleObjec 和導(dǎo)航類 Navigator,這個(gè)特性非常神奇,也很實(shí)用。 } // 特別處理:防止對(duì) primitive 類型設(shè)置 null Class? paramType = ().getParameterTypes()[i]。 1) 類的反射與執(zhí)行 從上面分析可以得知,所有 Action 和 Screen 的調(diào)用都是通過(guò) Module 來(lái) execute 的,這樣勢(shì)必需要反射各個(gè) Action 和 Screen, webx 通過(guò)構(gòu)造 MethodInvoker 這個(gè)類來(lái)統(tǒng)一處理類的反射和執(zhí)行,它的核心方法是 invoke,源碼如下: public void invoke(Object moduleObject, Logger log) throws Exception { Object[] args = new Object[]。今后會(huì)對(duì)幾個(gè)核心的 valve 作進(jìn)一步詳細(xì)分解,這樣才能有利于在具體開(kāi)發(fā)中得心應(yīng)手 。假如 request 和 session 中的 token 不匹配, 則出錯(cuò),或顯示 expired 頁(yè)面。 } } } finally { executingIndex。 第 19 頁(yè) } (this)。其實(shí) webx 的 pipeline 和 j2ee 的 filter 和 webwork 的 interceptor 很類似,只不過(guò) pipeline 與 valve 更加純粹,干脆就不區(qū)分哪些為攔截,哪些為核心業(yè)務(wù)處理,直接把所有處理都統(tǒng)一為 valve。 3) Webx Controller Servlet 激活 pipeline,繼而調(diào)用 AnalyzeURLValve 來(lái)分析 /logi 是什么意思。 上面的為文件下的文件和我們的接口測(cè)試沒(méi)有太大關(guān)系,接口測(cè)試要測(cè)試的地方在下面的目錄中: src/main/java/… /module。隨著應(yīng)用變得 復(fù)雜,還會(huì)創(chuàng)建其它的配置文件。 示例代碼: 按照
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1