




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
大型電商分布式彌設計與優(yōu)化本文主題為電商網(wǎng)站架構(gòu)案例,將介紹如何從電商網(wǎng)站的需求,到單機架構(gòu),逐步演變?yōu)槌S玫?、可供參考的分布式架?gòu)原型。除具備功能需求外,還具備一定的高性能、高可用、可伸縮、可擴展等非功能質(zhì)量需求(架構(gòu)目標)。本文大綱:使用電商案例的原因電商網(wǎng)站需求網(wǎng)站初級架構(gòu)系統(tǒng)容量估算網(wǎng)站架構(gòu)分析網(wǎng)站架構(gòu)優(yōu)化根據(jù)實際需要,進行改造、擴展、支持千萬PV,是沒問題的。使用電商案例的原因分布式大型網(wǎng)站,目前看主要有幾類:大型門戶(比如網(wǎng)易、新浪等);SNS網(wǎng)站(比如校內(nèi)、開心網(wǎng)等);電商網(wǎng)站(比如阿里巴巴、京東商城、國美在線、汽車之家等)。大型門戶一般是新聞類信息,可以使用CDN、靜態(tài)化等方式優(yōu)化。而開心網(wǎng)等交互性比較多,可能會引入更多的NoSQL、分布式緩存、使用高性能的通信框架等。電商網(wǎng)站具備以上兩類的特點,比如產(chǎn)品詳情可以采用CDN,靜態(tài)化,交互性高的需要采用NoSQL等技術(shù)。因此,我們采用電商網(wǎng)站作為案例,進行分析。電商網(wǎng)站需求客戶需求:?建立一個全品類的電子商務網(wǎng)站(B2C),用戶可以在線購買商品,可以在線支付,也可以貨到付款;?用戶購買時可以在線與客服溝通;?用戶收到商品后,可以給商品打分和評價;?目前有成熟的進銷存系統(tǒng),需要與網(wǎng)站對接;?希望能夠支持3?5年,業(yè)務的發(fā)展;?預計3?5年用戶數(shù)達到1000萬;?定期舉辦雙11、雙12、三八男人節(jié)等活動;?其他的功能參考京東或國美在線等網(wǎng)站??蛻艟褪强蛻簦粫嬖V你具體要什么,只會告訴你他想要什么,我們很多時候要引導、挖掘客戶的需求。好在提供了明確的參考網(wǎng)站。因此,下一步要進行大量的分析,結(jié)合行業(yè)以及參考網(wǎng)站,給客戶提供方案。其它的這里暫不展開。需求功能矩陣需求管理傳統(tǒng)的做法,會使用例圖或模塊圖(需求列表)進行需求的描述。這樣做常常忽視掉一個很重要的需求(非功能需求),因此推薦大家使用需求功能矩陣,進行需求描述。本電商網(wǎng)站的需求矩陣如下:網(wǎng)站需求功能需求彳砌能需求 1全品婪的電子商務網(wǎng)站分癸宦瑾j商品管理方便進行參品類帝理(靈潔性)網(wǎng)站訪問速厘要快c高性號、圖片存儲的要求(暉畐那圖片)用戶可以在學冥商品舎員筈理?購物車(結(jié)算功能良好炯物體驗(可審性(性鏈)在壤支忖或蛍到時款寥種在線支付方式支付過程要支全?故搖加密(安全性)多種支村接口列旳換(靈活註,曠匿性)可以在拔與窯服溝通妙客服功能可葩;即HtiKR |商品打分評價目前有質(zhì)熟的進捎存環(huán)對接進第存屆于釣束案性儲時孕蠢姻T性「劃醴支持斤5年.業(yè)務的發(fā)癮屆幵購伸垢性.可IT展性汩5年相戶數(shù)達到丄000萬約束祭件舉辦艱口 三八男人初活動活動琶理.秒義卻訪冋備(可£鏈)實時性賽求(高性能)畚圣京東或國芋在線畚考案件 |以上是對電商網(wǎng)站需求的簡單舉例,目的是說明:需求分析的時候,要全面,大型分布式系統(tǒng)重點考慮非功能需求;2.描述一個簡單的電商需求場景,使大家對下一步的分析設計有個依據(jù)。使用集群對應用服務器進行冗余,實現(xiàn)高可用(負載均衡設備可與應用一塊部署);使用數(shù)據(jù)庫主備模式,實現(xiàn)數(shù)據(jù)備份和高可用。系統(tǒng)容量預估預估步驟:1?注冊用戶數(shù)-日均UV量-每日的PV量-每天的并發(fā)量;峰值預估:平常量的2?3倍;根據(jù)并發(fā)量(并發(fā),事務數(shù)),存儲容量計算系統(tǒng)容量??蛻粜枨螅?~5年用戶數(shù)達到1000萬注冊用戶;每秒并發(fā)數(shù)預估:每天的UV為200萬(二八原則);每日每天點擊瀏覽30次;PV量:200*30=6000萬;集中訪問量:24*0.2=4.8小時會有6000萬*0.8=4800萬(二八原則);每分并發(fā)量:4.8*60=288分鐘,每分鐘訪問4800/288=16.7萬(約等于);每秒并發(fā)量:16.7萬/60=2780(約等于);假設:高峰期為平常值的三倍,則每秒的并發(fā)數(shù)可以達到8340次;1毫秒=1.3次訪問。沒好好學數(shù)學后悔了吧??。ú恢酪陨纤闶欠裼绣e誤,呵呵??)服務器預估(以Tomcat服務器舉例):按一臺Web服務器,支持每秒300個并發(fā)計算。平常需要10臺服務器(約等于);[Tomcat默認配置是150]高峰期:需要30臺服務器;容量預估:70/90原則系統(tǒng)CPU—般維持在70%左右的水平,高峰期達到90%的水平,是不浪費資源,并比較穩(wěn)定的。內(nèi)存,IO類似。以上預估僅供參考,因為服務器配置,業(yè)務邏輯復雜度等都有影響。在此CPU、硬盤、網(wǎng)絡等不再進行評估。網(wǎng)站架構(gòu)分析根據(jù)以上預估,有幾個問題:?需要部署大量的服務器,高峰期計算,可能要部署30臺Web服務器。并且這三十臺服務器,只有秒殺,活動時才會用到,存在大量的浪費。?所有的應用部署在同一臺服務器,應用之間耦合嚴重。需要進行垂直切分和水平切分。?大量應用存在冗余代碼。?月服務器Session同步耗費大量內(nèi)存和網(wǎng)絡帶寬。?數(shù)據(jù)需要頻繁訪問數(shù)據(jù)庫,數(shù)據(jù)庫訪問壓力巨大。大型網(wǎng)站一般需要做以下架構(gòu)優(yōu)化(優(yōu)化是架構(gòu)設計時,就要考慮的,一般從架構(gòu)/代碼級別解決,調(diào)優(yōu)主要是簡單參數(shù)的調(diào)整,比如JVM調(diào)優(yōu);如果調(diào)優(yōu)涉及大量代碼改造,就不是調(diào)優(yōu)了,屬于重構(gòu)):?業(yè)務拆分?應用集群部署(分布式部署,集群部署和負載均衡)?多級緩存?單點登錄(分布式Session)?數(shù)據(jù)庫集群(讀寫分離,分庫分表)?服務化?消息隊列?其它技術(shù)網(wǎng)站架構(gòu)優(yōu)化1業(yè)務拆分根據(jù)業(yè)務屬性進行垂直切分,劃分為產(chǎn)品子系統(tǒng)、購物子系統(tǒng)、支付子系統(tǒng)、評論子系統(tǒng)、客服子系統(tǒng)、接口子系統(tǒng)(對接如進銷存、短信等外部系統(tǒng))。根據(jù)業(yè)務子系統(tǒng)進行等級定義,可分為核心系統(tǒng)和非核心系統(tǒng)。?核心系統(tǒng):產(chǎn)品子系統(tǒng)、購物子系統(tǒng)、支付子系統(tǒng);非核心:評論子系統(tǒng)、客服子系統(tǒng)、接口子系統(tǒng)。如上圖每個應用單獨部署核心系統(tǒng)和非核心系統(tǒng)組合部署2應用集群部署(分布式,集群,負載均衡)分布式部署:將業(yè)務拆分后的應用單獨部署,應用直接通過RPC進行遠程通信;集群部署:電商網(wǎng)站的高可用要求,每個應用至少部署兩臺服務器進行集群部署;3多級緩存緩存按照存放的位置一般可分為兩類本地緩存和分布式緩存。本案例采用二級緩存的方式,進行緩存的設計。一級緩存為本地緩存,二級緩存為分布式緩存。(還有頁面緩存,片段緩存等,那是更細粒度的劃分)—級緩存,緩存數(shù)據(jù)字典,和常用熱點數(shù)據(jù)等基本不可變有規(guī)則變化的信息;二級緩存緩存需要的所有緩存。當一級緩存過期或不可用時,訪問二級緩存的數(shù)據(jù)。如果二級緩存也沒有,則訪問數(shù)據(jù)庫。緩存的比例,一般1:4,即可考慮使用緩存。(理論上是1:2即可)。根據(jù)業(yè)務特性可使用以下緩存過期策略:緩存自動過期緩存觸發(fā)過期
用戶第一次登錄時,將會話信息(用戶Id和用戶信息),比如以用戶ID為Key,寫入分布式Session;用戶再次登錄時,獲取分布式Session,是否有會話信息,如果沒有則調(diào)到登錄頁;一般采用Cache中間件實現(xiàn),建議使用Redis,因此它有持久化功能,方便分布式Session宕機后,可以從持久化存儲中加載會話信息;存入會話時,可以設置會話保持的時間,比如15分鐘,超過后自動超時;結(jié)合Cache中間件,實現(xiàn)的分布式Session,可以很好的模擬Session會話。5數(shù)據(jù)庫集群(讀寫分離,分庫分表)大型網(wǎng)站需要存儲海量的數(shù)據(jù),為達到海量數(shù)據(jù)存儲,高可用,高性能一般采用冗余的方式進行系統(tǒng)設計。一般有兩種方式讀寫分離和分庫分表。讀寫分離:一般解決讀比例遠大于寫比例的場景,可采用一主一備,一主多備或多主多備方式。本案例在業(yè)務拆分的基礎上,結(jié)合分庫分表和讀寫分離。如下圖:業(yè)務拆分后:每個子系統(tǒng)需要單獨的庫;如果單獨的庫太大,可以根據(jù)業(yè)務特性,進行再次分庫,比如商品分類庫,產(chǎn)品庫;分庫后,如果表中有數(shù)據(jù)量很大的,則進行分表,一般可以按照ID,時間等進行分表;(高級的用法是一致性Hash);在分庫,分表的基礎上,進行讀寫分離。相關(guān)中間件可參考Cobar(阿里,目前已不在維護),TDDL(阿里),Atlas(奇虎360),MyCat(在Cobar基礎上,國內(nèi)很多牛人,號稱國內(nèi)第一開源項目)。
用戶下單后,寫入消息隊列,后直接返回客戶端;庫存子系統(tǒng):讀取消息隊列信息,完成減庫存;配送子系統(tǒng):讀取消息隊列信息,進行配送。目前使用較多的MQ有ActiveMQ、RabbitMQ、ZeroMQ、MSMQ等,需要根據(jù)具體的業(yè)務場景進行選擇。建議可以研究下RabbitMQ。更多詳情可參考社群過往文章:RabbitMQ高級指南:從配置、使用到高可用集群搭建大話消息隊列的流派之爭一網(wǎng)打盡消息隊列在大型分布式系統(tǒng)中的實戰(zhàn)精髓網(wǎng)易蜂巢微服務架構(gòu):用RabbitMQ實現(xiàn)輕量級通信8其它架構(gòu)(技術(shù))除了以上介紹的業(yè)務拆分、應用集群、多級緩
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山東省安全員C證考試(專職安全員)題庫附答案
- 2025-2030年中國硅藻泥行業(yè)前景趨勢調(diào)研及發(fā)展戰(zhàn)略分析報告
- 2025-2030年中國真絲絲巾產(chǎn)業(yè)市場運行趨勢及投資戰(zhàn)略研究報告
- 2025-2030年中國電鎘行業(yè)發(fā)展狀況及營銷戰(zhàn)略研究報告
- 陜西財經(jīng)職業(yè)技術(shù)學院《工業(yè)通風與除塵技術(shù)》2023-2024學年第二學期期末試卷
- 西昌學院《材料力學類》2023-2024學年第二學期期末試卷
- 泰州學院《分布式數(shù)據(jù)庫系統(tǒng)》2023-2024學年第二學期期末試卷
- 湖南吉利汽車職業(yè)技術(shù)學院《橋梁施工技術(shù)》2023-2024學年第二學期期末試卷
- 上海立達學院《廣告策劃與新媒體設計》2023-2024學年第二學期期末試卷
- 蘇州幼兒師范高等??茖W?!夺t(yī)學生物化學B》2023-2024學年第二學期期末試卷
- 兩辦意見八硬措施煤礦安全生產(chǎn)條例宣貫學習課件
- 教師課堂教學語言技能范例課件
- 《體育與健康說課》課件
- 人教版化學九年級下冊同步練習:第九單元 溶液
- 華南師范大學附屬小學招聘教師筆試真題2022
- 山東女子學院《C語言程序設計》2022-2023學年期末試卷
- 2020年中國人身保險產(chǎn)品研究報告
- 常見織帶花鏈的排法和穿棕方法
- 《化工工程制圖》完整教案
- 心肌梗死后心衰病例分享
- 洪恩識字識字卡(001-100)可直接打印剪裁
評論
0/150
提交評論