阿里巴巴中文站架構(gòu)設(shè)計(jì)實(shí)踐(何崚)_第1頁(yè)
阿里巴巴中文站架構(gòu)設(shè)計(jì)實(shí)踐(何崚)_第2頁(yè)
阿里巴巴中文站架構(gòu)設(shè)計(jì)實(shí)踐(何崚)_第3頁(yè)
阿里巴巴中文站架構(gòu)設(shè)計(jì)實(shí)踐(何崚)_第4頁(yè)
阿里巴巴中文站架構(gòu)設(shè)計(jì)實(shí)踐(何崚)_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

gmailcomom我我n阿里巴巴中文站架構(gòu)師n阿里巴巴B2B網(wǎng)站優(yōu)化領(lǐng)域負(fù)責(zé)人ormancetunningErlangoglehelingmailcomnn業(yè)務(wù):n國(guó)內(nèi)最大的網(wǎng)上批發(fā)市場(chǎng)n供應(yīng)商的網(wǎng)店-旺鋪n會(huì)員工作平臺(tái)–work平臺(tái)n誠(chéng)信商人社區(qū)(行業(yè)資訊,sns,生意經(jīng),博客,論壇)n誠(chéng)信保障服務(wù)n……WithoutEJBervletEJB(SLSB,CMP,MDB),O去EJB重構(gòu):Spring+iBatis+Webx,Antx,底層架構(gòu):iSearch,MQ+ESB,數(shù)據(jù)挖掘,CMSn性能和海量數(shù)據(jù)問(wèn)題?數(shù)據(jù)切分和分布式存儲(chǔ)解決了網(wǎng)站海量數(shù)據(jù)的問(wèn)題。n安全問(wèn)題?鏡像站解決了網(wǎng)站的災(zāi)備問(wèn)題nnn數(shù)據(jù)層n挑戰(zhàn)n業(yè)務(wù)層n挑戰(zhàn)n展現(xiàn)層n挑戰(zhàn)App100App1App2App3SearchEngineeKVServiceApp100App1App2App3SearchEngineeKVService 文檔數(shù)據(jù)庫(kù),Schemafree的結(jié)構(gòu)化數(shù)據(jù)檢索/管理場(chǎng)景n業(yè)務(wù)模型的各個(gè)字段分布在不同數(shù)據(jù)源n數(shù)據(jù)架構(gòu)現(xiàn)狀n數(shù)據(jù)架構(gòu)非常復(fù)雜n在不同的場(chǎng)景采用了多種類(lèi)型關(guān)系數(shù)據(jù)庫(kù),搜索引擎,提供商業(yè)搜索服務(wù)oumn?對(duì)開(kāi)發(fā)人員能力提出很高的要求?網(wǎng)站應(yīng)用組裝業(yè)務(wù)模型的數(shù)據(jù)需要查詢多種數(shù)據(jù)源?例如商品模型的圖片屬性由數(shù)據(jù)庫(kù)遷至圖片銀行?數(shù)據(jù)源改造也會(huì)導(dǎo)致相關(guān)應(yīng)用的大面積重構(gòu)?數(shù)據(jù)水平切分n在網(wǎng)站應(yīng)用集群和底層數(shù)據(jù)源之間,構(gòu)建?層代理,統(tǒng)?數(shù)據(jù)層n統(tǒng)?數(shù)據(jù)層的特性n模型數(shù)據(jù)映射n現(xiàn)業(yè)務(wù)模型各屬性與底層不同類(lèi)型數(shù)據(jù)源的模型數(shù)據(jù)映射n統(tǒng)?的查詢和更新APIn性能優(yōu)化策略n字段延遲加載,按需返回設(shè)置n基于熱點(diǎn)緩存平臺(tái)的二級(jí)緩存。n異步并行的查詢數(shù)據(jù):異步并行加載模型中來(lái)自不同數(shù)據(jù)源的字段 nAPIAPIAPIAPIDocumentL2Cache異步并行查詢并發(fā)控制保險(xiǎn)絲XXModelXXXModelApp1App2App3App100查查詢更新nngnnnUDSL系映射UDSL數(shù)據(jù)類(lèi)型的數(shù)據(jù)源,各個(gè)數(shù)據(jù)源的訪問(wèn)方式是什么加載UDSLDSL,組裝模型DSL型各字段和各數(shù)據(jù)源的數(shù)據(jù)路由,UDSL在查詢數(shù)據(jù)時(shí)通過(guò)閱讀DSnd式xectfielddescnUDSL采用統(tǒng)?的查詢/更新API,統(tǒng)?了不同數(shù)據(jù)源的查詢方式基于模型表達(dá)式的查詢方式:?商品模型的行業(yè)屬性是否等于“服裝”支持按模型屬性的結(jié)果排序支持限定結(jié)果返回條數(shù)和返回哪些字段和JPA非常不同的是:字段。n持久化API(PersistAPI):提供簡(jiǎn)單的接口?Dml.insert(product),Dml.update(product),Dml.delete(product)?Dml.insertOrUpdate(product)數(shù)據(jù)層數(shù)據(jù)層UDSL:性能優(yōu)化不同字段可能會(huì)來(lái)自不同的數(shù)據(jù)源,組裝對(duì)象成本很高nUDSL的性能優(yōu)化策略nnnnnn架設(shè)L2Cache.數(shù)據(jù)層數(shù)據(jù)層UDSL:熱點(diǎn)緩存背景nnn段可能會(huì)來(lái)自不同的數(shù)據(jù)源,組裝對(duì)象成本很高nn熱點(diǎn)規(guī)則過(guò)期規(guī)則idid數(shù)據(jù)層熱點(diǎn)規(guī)則過(guò)期規(guī)則idid數(shù)據(jù)層UDSL:熱點(diǎn)緩存設(shè)計(jì)nnnnnnnn則成Cachekey。he查詢結(jié)果數(shù)據(jù)的ID列表。KV集群數(shù)據(jù)層數(shù)據(jù)層UDSL:熱點(diǎn)緩存規(guī)則設(shè)置n熱點(diǎn)規(guī)則設(shè)置SL熱點(diǎn)規(guī)則過(guò)期規(guī)則n通過(guò)UDSLCriteriaAPI調(diào)用傳入的查詢條件表達(dá)式來(lái)匹配熱點(diǎn)熱點(diǎn)匹配:Query.find(Product.category.eq(‘服裝’)).orderby(Product.salenum.desc).limit(100).list();n默認(rèn)根據(jù)查詢條件生成key?Key:Query.find(Product.category.eq(‘服裝’)).orderby(Product.salenum.desc).limit(100)nn緩存結(jié)果集合所有對(duì)象的主鍵列表n緩存結(jié)果集合所有對(duì)象的主鍵列表exKV?使用Index,建接緩存至KV/更新索引ididCacheKeyCacheKeyCacheKey數(shù)據(jù)層UDSL:熱點(diǎn)緩存緩存失效機(jī)制數(shù)據(jù)層UDSL:熱點(diǎn)緩存緩存失效機(jī)制nnnMQMQ列nn常要查詢多個(gè)數(shù)據(jù)源先查詢第?個(gè)數(shù)據(jù),查完后再查下?個(gè)數(shù)據(jù)借鑒Ajax的思想運(yùn)用到數(shù)據(jù)服務(wù)層異步的并行加載同?業(yè)務(wù)場(chǎng)景中對(duì)不同數(shù)據(jù)源的查詢nAjaxseo的影響n減少了Ajax異步發(fā)起的http請(qǐng)求 n許進(jìn)行資源共享是是是否是否否nn?可以配置訪問(wèn)并發(fā)閥值?例如某IP段單位時(shí)間內(nèi)n自我保護(hù)DSLCretriaAPI數(shù)的過(guò)數(shù)據(jù)層數(shù)據(jù)層數(shù)據(jù)層架構(gòu)改造回顧API訪問(wèn)異構(gòu)數(shù)據(jù),使得數(shù)據(jù)源對(duì)應(yīng)用透明,大大降低了數(shù)據(jù)架構(gòu)的復(fù)雜度,提升了開(kāi)發(fā)和維護(hù)的效率大MappingDSL改造較小,無(wú)需面積重構(gòu)MappingDSL配置,對(duì)應(yīng)用透明,無(wú)需大面構(gòu)升對(duì)同?場(chǎng)景的不同數(shù)據(jù)查詢實(shí)施時(shí)間n中文站按照域名劃分為應(yīng)用n大部分業(yè)務(wù)由中文站主應(yīng)用提供服務(wù)nn結(jié)果:n應(yīng)用/故障隔離n可做應(yīng)用讀寫(xiě)分離nnn將公共代碼封裝成二方庫(kù),供應(yīng)用依賴n最大限度的代碼重用合作網(wǎng)站AppWebAppnApp.二方庫(kù)升級(jí)會(huì)導(dǎo)致所有依賴應(yīng)用升級(jí).只修改實(shí)現(xiàn)不改接口也要大面積升級(jí)n二方庫(kù)不適合作為Open合作網(wǎng)站AppWebAppnApp.二方庫(kù)升級(jí)會(huì)導(dǎo)致所有依賴應(yīng)用升級(jí).只修改實(shí)現(xiàn)不改接口也要大面積升級(jí)n二方庫(kù)不適合作為OpenAPI提供方式.解決思路:采用遠(yuǎn)程RPC服務(wù)取代二方庫(kù)XXX服務(wù)XXX服務(wù)XX服務(wù)中心XXX服務(wù)XXX服務(wù)WebAppnn問(wèn)題n二方庫(kù)發(fā)布升級(jí)困難Open服務(wù)(WebService,JSonnAPIJSonnAPI .服務(wù)實(shí)現(xiàn)改變不會(huì)導(dǎo)致大面積發(fā)布.阿里巴巴高性能服務(wù)框架Dubbo.所有公共模塊改造成Dubbo服務(wù).服務(wù)按產(chǎn)品線劃分部署,每個(gè)產(chǎn)品線都有.服務(wù)化中心提供的服務(wù)通過(guò)OpenAPI供.網(wǎng)站應(yīng)用調(diào)用服務(wù)快速構(gòu)建業(yè)務(wù)層業(yè)務(wù)層服務(wù)化帶來(lái)的開(kāi)發(fā)模式的轉(zhuǎn)變n減少了跨業(yè)務(wù)線合作溝通成本nnnAPInnnnn錄接dg.o_idXX模型G dg.o_idXX模型G C.m_id=MX.m_id=M.idA.m_id=M.idXX模型P會(huì)員模型Mnnn條件n全站主要業(yè)務(wù)模型+模型間關(guān)聯(lián)條件>無(wú)向圖n由已知圖中任?模型數(shù)據(jù)可以推導(dǎo)出其他模型數(shù)據(jù)n網(wǎng)站大部分頁(yè)面的應(yīng)用場(chǎng)景都是這?關(guān)系圖的遍歷過(guò)程 ??即模型圖中所有業(yè)務(wù)模型和對(duì)應(yīng)的服務(wù)化中心的查詢服務(wù)接口方法業(yè)業(yè)務(wù)層模型關(guān)系圖框架ModelMap&MappingDSLn通過(guò)單?查詢條件獲取應(yīng)用場(chǎng)景所有的關(guān)聯(lián)數(shù)據(jù)?通過(guò)商品ID獲取商品詳情頁(yè)面的所有關(guān)聯(lián)數(shù)據(jù)業(yè)業(yè)務(wù)層模型關(guān)系圖框架ModelMap&QueryAPIpn模型圖遍歷API:通過(guò)?次查詢關(guān)聯(lián)獲取各服務(wù)中心的所有相關(guān)模型?通過(guò)初始的查詢條件遍歷獲取模型圖中指定模型數(shù)據(jù)?根據(jù)商品ID獲取商品詳情所需的所有數(shù)據(jù)?查詢條件表達(dá)式是基于模型屬性的邏輯表達(dá)式?返回結(jié)果是包含模型對(duì)象結(jié)果集的MapMapmodelMapModelQueryqueryproductId1111’,‘product,member’);業(yè)務(wù)層業(yè)務(wù)層業(yè)務(wù)層架構(gòu)改造回顧務(wù)也成為網(wǎng)PI務(wù)模型API有頁(yè)的快速開(kāi)發(fā)。展示層展示層建站需求受開(kāi)發(fā)瓶頸制約Yn擴(kuò)展了CMS系統(tǒng)的模板標(biāo)簽,使得用戶能以模板標(biāo)簽的方式訪問(wèn)查詢服務(wù)n網(wǎng)站運(yùn)營(yíng)中CMS的Html編輯框中用模板標(biāo)簽調(diào)查詢服務(wù)取數(shù)據(jù),所見(jiàn)即所 得的編輯頁(yè)面eg.$Product=$ProductService.getProductById(id)nn組件(Component):構(gòu)成網(wǎng)站展示的基本單元LWebRegionRegionnnnPluginjarnnvaclass表單描述文件Form.xml (可選)Spring配置bean.xml (可選)網(wǎng)站應(yīng)用Plugin(插件)網(wǎng)站應(yīng)用結(jié)構(gòu):?組件參數(shù),模板,處理Java類(lèi),服務(wù)接口頁(yè)面模板文件*.vm組件所需的java類(lèi)*.class(actionclass)nn頁(yè)面由上而下劃分為幾個(gè)段(Segment)n每個(gè)段有自己的布局(Layout)n每個(gè)布局(Layout)劃分為幾個(gè)區(qū)域(Region)nnnn每個(gè)區(qū)域可以放置多個(gè)版塊(Widget)onPageSegmentLayoutRegionWidgetjson面默認(rèn)的結(jié)構(gòu)。nn主題(Theme):?套頁(yè)面(Page)集合+?種皮膚(Skin)風(fēng)格n?定義了?個(gè)站點(diǎn)下有哪些頁(yè)面(Page),站點(diǎn)用哪個(gè)皮膚(Skin)主題,提供給不同角色的用戶配不同主題nnnUserPage皮膚(skin)在組件框架中?種特殊的組件,對(duì)應(yīng)著?套站點(diǎn)的css,供用戶選擇保存在用nboJSON鋪nn創(chuàng)建站點(diǎn)nnn nboJSON鋪nn創(chuàng)建站點(diǎn)nnn nnDubboJSON服務(wù)DubboJSON服務(wù)nnn運(yùn)營(yíng)使用行業(yè)化組件庫(kù)提供的組件服務(wù)n所見(jiàn)即所得構(gòu)建行業(yè)化站點(diǎn)和推廣專(zhuān)題站存頁(yè)面部分區(qū)域nnKey規(guī)則事件過(guò)期過(guò)期規(guī)則緩存讀寫(xiě)自動(dòng)過(guò)期n存頁(yè)面部分區(qū)域nnKey規(guī)則事件過(guò)期過(guò)期規(guī)則緩存讀寫(xiě)自動(dòng)過(guò)期nnKV集群逐出 ?組件實(shí)例對(duì)應(yīng)數(shù)據(jù)變更時(shí)nnngetCachen?根據(jù)組件Sid生成?自動(dòng)過(guò)期?事件過(guò)期?組件結(jié)構(gòu)定義發(fā)生變更時(shí)nn網(wǎng)站運(yùn)營(yíng)力度加大,力nnnnn新發(fā)布,過(guò)程較慢CSSJS要,沒(méi)有走瀏覽器緩存生效的需要,CSS,JS文件URL后帶上時(shí)間戳參數(shù),避免走瀏覽器 stylestylenUED上傳CSS/JS到獨(dú)角獸平臺(tái)Sn應(yīng)用服務(wù)器保存?份CSS/JS文件版本號(hào)的索引,器取最新的版本號(hào)n頁(yè)面模板引入靜態(tài)資源時(shí),使用獨(dú)角獸提供的宏聲明需要合并的靜態(tài)資源?#url(‘a(chǎn).css,b.css,c.css’),請(qǐng)求文件名會(huì)轉(zhuǎn)換成a1.3-b1.2-c.1.0.css ?下?次同樣請(qǐng)求走緩存。展現(xiàn)層展現(xiàn)層展現(xiàn)層架構(gòu)改造回顧 (eg,會(huì)員名片)1.頁(yè)面組件化,將頁(yè)面版塊定義為可以接入到頁(yè)面的組件 用用戶可以裝修自己的旺鋪的內(nèi)容和展示風(fēng)格1.定義頁(yè)面(Page)可支持哪些組件(Widget)2.定義頁(yè)面的布局(layout)和主題(theme)3.定義組件(Widget)可支持版塊操作(view,edit)ServiceTag,CMS,組件服務(wù)平臺(tái):1.通過(guò)servicetag標(biāo)簽獲取頁(yè)面數(shù)據(jù),通過(guò)CMS系統(tǒng)編輯發(fā)布站點(diǎn)。2.通過(guò)組件庫(kù)提供的組件定制行業(yè)化站點(diǎn)1)使用公共組件庫(kù)板塊提供定制參數(shù),實(shí)現(xiàn)調(diào)整板塊展示內(nèi)容3)使用公共組件庫(kù)提供的版塊拖拽生成頁(yè)面,站點(diǎn)。s快頁(yè)面響應(yīng)速度,提升用戶體驗(yàn)tag創(chuàng)建主題樣式 XX模型xx中心XX服務(wù)中心

溫馨提示

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

評(píng)論

0/150

提交評(píng)論