2019-07-06
電商行業技術特點;
①技術新:(NoSql推廣首在社區(qū)網站和(hé)電商項目),發展快(kuài),需求推動技術的(de)革新。
②技術範圍廣:除了(le)java,像淘寶前端還(hái)使用(yòng)了(le)PHP,數據庫MySQL或者oracle,nosql,服務器端使用(yòng)Linux,服務器安全、系統安全
③分(fēn)布式:以前是在一台機器上做(zuò)運算(suàn),現在是分(fēn)散到很多(duō)機器上,最後彙總起來(lái)。(集中式向分(fēn)布式進行考慮)由需求來(lái)推動
④高(gāo)并發、集群、負載均衡、高(gāo)可(kě)用(yòng):由并發問題采用(yòng)集群進行處理(lǐ),其中,集群會涉及服務器的(de)主從以及分(fēn)布問題,使用(yòng)負載均衡。(權重高(gāo)低)高(gāo)可(kě)用(yòng)是對(duì)用(yòng)戶而言,用(yòng)戶的(de)服務不中斷(系統升級,服務不中斷,淘寶每周更新2次)。
⑤海量數據:雙11,570億的(de)背後,訂單有多(duō)少?浏覽次數有多(duō)少?商品會有多(duō)少?活動相關數據?
⑥業務複雜(zá):不要簡單的(de)認爲是:商品展示出來(lái)後,加入購(gòu)物(wù)車後購(gòu)買就完成了(le)。後台特别複雜(zá),比如優惠(包郵、滿減)
⑦系統安全:系統上線必須通(tōng)過系統安全部門審核通(tōng)過。前年CSDN數據洩露。快(kuài)捷酒店(diàn)數據洩露(通(tōng)過身份證就可(kě)以查看你的(de)開房(fáng)記錄)。近幾年,安全意識逐步在提高(gāo)。
電商網站需求;
客戶需求:
建立一個(gè)全品類的(de)電子商務網站(B2C),用(yòng)戶可(kě)以在線購(gòu)買商品,可(kě)以在線支付,也(yě)可(kě)以貨到付款;
用(yòng)戶購(gòu)買時(shí)可(kě)以在線與客服溝通(tōng);
用(yòng)戶收到商品後,可(kě)以給商品打分(fēn),評價;
目前有成熟的(de)進銷存系統;需要與網站對(duì)接;
希望能夠支持3~5年,業務的(de)發展;
預計3~5年用(yòng)戶數達到1000萬;
定期舉辦雙11,雙12,三八男(nán)人(rén)節等活動;
其他(tā)的(de)功能參考京東或國美(měi)在線等網站。
客戶就是客戶,不會告訴你具體要什(shén)麽,隻會告訴你他(tā)想要什(shén)麽,我們很多(duō)時(shí)候要引導,挖掘客戶的(de)需求。好在提供了(le)明(míng)确的(de)參考網站。因此,下(xià)一步要進行大(dà)量的(de)分(fēn)析,結合行業,以及參考網站,給客戶提供方案。
需求功能矩陣
需求管理(lǐ)傳統的(de)做(zuò)法,會使用(yòng)用(yòng)例圖或模塊圖(需求列表)進行需求的(de)描述。這(zhè)樣做(zuò)常常忽視掉一個(gè)很重要的(de)需求(非功能需求),因此推薦大(dà)家使用(yòng)需求功能矩陣,進行需求描述。
圖片存儲的(de)要求(海量小圖片)用(yòng)戶可(kě)以在線購(gòu)買商品會員(yuán)管理(lǐ),購(gòu)物(wù)車,結算(suàn)功能良好購(gòu)物(wù)體驗(可(kě)用(yòng)性,性能)在線支付或貨到付款多(duō)種在線支付方式支付過程要安全,數據加密(安全性)多(duō)種支付接口靈活切換(靈活性,擴展性)可(kě)以在線與客服溝通(tōng)在線客服功能可(kě)靠性:即時(shí)通(tōng)訊商品打分(fēn)評價商品評論 目前有成熟的(de)進銷存系統對(duì)接進銷存屬于約束條件對(duì)接時(shí)要考慮數據一緻性,魯棒性支持3~5年,業務的(de)發展 屬于約束條件伸縮性,可(kě)擴展性3~5年用(yòng)戶數達到1000萬 約束條件舉辦雙11,雙12,三八男(nán)人(rén)節等活動活動管理(lǐ),秒殺突增訪問流量(可(kě)伸縮)實時(shí)性要求(高(gāo)性能)參考京東或國美(měi)在線 參考條件
以上是對(duì)電商網站需求的(de)簡單舉例,目的(de)是說明(míng)(1)需求分(fēn)析的(de)時(shí)候,要全面,大(dà)型分(fēn)布式系統重點考慮非功能需求;(2)描述一個(gè)簡單的(de)電商需求場(chǎng)景,使大(dà)家對(duì)下(xià)一步的(de)分(fēn)析設計有個(gè)依據。
、網站初級架構
一般網站,剛開始的(de)做(zuò)法,是三台服務器,一台部署應用(yòng),一台部署數據庫,一台部署NFS文件系統。
這(zhè)是前幾年比較傳統的(de)做(zuò)法,之前見到一個(gè)網站10萬多(duō)會員(yuán),垂直服裝設計門戶,N多(duō)圖片。使用(yòng)了(le)一台服務器部署了(le)應用(yòng),數據庫以及圖片存儲。出現了(le)很多(duō)性能問題。
如下(xià)圖:
但是,目前主流的(de)網站架構已經發生了(le)翻天覆地的(de)變化(huà)。一般都會采用(yòng)集群的(de)方式,進行高(gāo)可(kě)用(yòng)設計。至少是下(xià)面這(zhè)個(gè)樣子。
(1) 使用(yòng)集群對(duì)應用(yòng)服務器進行冗餘,實現高(gāo)可(kě)用(yòng);(負載均衡設備可(kě)與應用(yòng)一塊部署)
使用(yòng)數據庫主備模式,實現數據備份和(hé)高(gāo)可(kě)用(yòng);
、系統容量預估
預估步驟:
注冊用(yòng)戶數-日均UV量-每日的(de)PV量-每天的(de)并發量;
峰值預估:平常量的(de)2~3倍;
根據并發量(并發,事務數),存儲容量計算(suàn)系統容量。
客戶需求:3~5年用(yòng)戶數達到1000萬注冊用(yòng)戶;
每秒并發數預估:
每天的(de)UV爲200萬(二八原則);
每日每天點擊浏覽30次;
PV量:200*30=6000萬;
集中訪問量:24*0.2=4.8小時(shí)會有6000萬*0.8=4800萬(二八原則);
每分(fēn)并發量:4.8*60=288分(fēn)鐘(zhōng),每分(fēn)鐘(zhōng)訪問4800/288=16.7萬(約等于);
每秒并發量:16.7萬/60=2780(約等于);
假設:高(gāo)峰期爲平常值的(de)三倍,則每秒的(de)并發數可(kě)以達到8340次。
1毫秒=1.3次訪問;
沒好好學數學後悔了(le)吧?!(不知道以上算(suàn)是否有錯誤,呵呵~~)
服務器預估:(以tomcat服務器舉例)
按一台web服務器,支持每秒300個(gè)并發計算(suàn)。平常需要10台服務器(約等于);[tomcat默認配置是150]
高(gāo)峰期:需要30台服務器;
容量預估:70/90原則
系統CPU一般維持在70%左右的(de)水(shuǐ)平,高(gāo)峰期達到90%的(de)水(shuǐ)平,是不浪費資源,并比較穩定的(de)。内存,IO類似。
以上預估僅供參考,因爲服務器配置,業務邏輯複雜(zá)度等都有影(yǐng)響。在此CPU,硬盤,網絡等不再進行評估。
、網站架構分(fēn)析
根據以上預估,有幾個(gè)問題:
需要部署大(dà)量的(de)服務器,高(gāo)峰期計算(suàn),可(kě)能要部署30台Web服務器。并且這(zhè)三十台服務器,隻有秒殺,活動時(shí)才會用(yòng)到,存在大(dà)量的(de)浪費。
所有的(de)應用(yòng)部署在同一台服務器,應用(yòng)之間耦合嚴重。需要進行垂直切分(fēn)和(hé)水(shuǐ)平切分(fēn)。
大(dà)量應用(yòng)存在冗餘代碼
服務器SESSION同步耗費大(dà)量内存和(hé)網絡帶寬
數據需要頻(pín)繁訪問數據庫,數據庫訪問壓力巨大(dà)。
大(dà)型網站一般需要做(zuò)以下(xià)架構優化(huà)(優化(huà)是架構設計時(shí),就要考慮的(de),一般從架構/代碼級别解決,調優主要是簡單參數的(de)調整,比如JVM調優;如果調優涉及大(dà)量代碼改造,就不是調優了(le),屬于重構):
業務拆分(fēn)
應用(yòng)集群部署(分(fēn)布式部署,集群部署和(hé)負載均衡)
多(duō)級緩存
單點登錄(分(fēn)布式Session)
數據庫集群(讀寫分(fēn)離,分(fēn)庫分(fēn)表)
服務化(huà)
消息隊列
其他(tā)技術
、網站架構優化(huà)
1業務拆分(fēn)
根據業務屬性進行垂直切分(fēn),劃分(fēn)爲産品子系統,購(gòu)物(wù)子系統,支付子系統,評論子系統,客服子系統,接口子系統(對(duì)接如進銷存,短信等外部系統)。
根據業務子系統進行等級定義,可(kě)分(fēn)爲核心系統和(hé)非核心系統。核心系統:産品子系統,購(gòu)物(wù)子系統,支付子系統;非核心:評論子系統,客服子系統,接口子系統。
業務拆分(fēn)作用(yòng):提升爲子系統可(kě)由專門的(de)團隊和(hé)部門負責,專業的(de)人(rén)做(zuò)專業的(de)事,解決模塊之間耦合以及擴展性問題;每個(gè)子系統單獨部署,避免集中部署導緻一個(gè)應用(yòng)挂了(le),全部應用(yòng)不可(kě)用(yòng)的(de)問題。
等級定義作用(yòng):用(yòng)于流量突發時(shí),對(duì)關鍵應用(yòng)進行保護,實現優雅降級;保護關鍵應用(yòng)不受到影(yǐng)響。
2應用(yòng)集群部署(分(fēn)布式,集群,負載均衡)
分(fēn)布式部署:将業務拆分(fēn)後的(de)應用(yòng)單獨部署,應用(yòng)直接通(tōng)過RPC進行遠(yuǎn)程通(tōng)信;
集群部署:電商網站的(de)高(gāo)可(kě)用(yòng)要求,每個(gè)應用(yòng)至少部署兩台服務器進行集群部署;
負載均衡:是高(gāo)可(kě)用(yòng)系統必須的(de),一般應用(yòng)通(tōng)過負載均衡實現高(gāo)可(kě)用(yòng),分(fēn)布式服務通(tōng)過内置的(de)負載均衡實現高(gāo)可(kě)用(yòng),關系型數據庫通(tōng)過主備方式實現高(gāo)可(kě)用(yòng)。
3 多(duō)級緩存
緩存按照(zhào)存放的(de)位置一般可(kě)分(fēn)爲兩類本地緩存和(hé)分(fēn)布式緩存。本案例采用(yòng)二級緩存的(de)方式,進行緩存的(de)設計。一級緩存爲本地緩存,二級緩存爲分(fēn)布式緩存。(還(hái)有頁面緩存,片段緩存等,那是更細粒度的(de)劃分(fēn))
一級緩存,緩存數據字典,和(hé)常用(yòng)熱(rè)點數據等基本不可(kě)變/有規則變化(huà)的(de)信息,二級緩存緩存需要的(de)所有緩存。當一級緩存過期或不可(kě)用(yòng)時(shí),訪問二級緩存的(de)數據。如果二級緩存也(yě)沒有,則訪問數據庫。
緩存的(de)比例,一般1:4,即可(kě)考慮使用(yòng)緩存。(理(lǐ)論上是1:2即可(kě))。
4,單點登錄(分(fēn)布式Session)
系統分(fēn)割爲多(duō)個(gè)子系統,獨立部署後,不可(kě)避免的(de)會遇到會話(huà)管理(lǐ)的(de)問題。一般可(kě)采用(yòng)Session同步,Cookies,分(fēn)布式Session方式。電商網站一般采用(yòng)分(fēn)布式Session實現。
再進一步可(kě)以根據分(fēn)布式Session,建立完善的(de)單點登錄或賬戶管理(lǐ)系統。
流程說明(míng)
用(yòng)戶第一次登錄時(shí),将會話(huà)信息(用(yòng)戶Id和(hé)用(yòng)戶信息),比如以用(yòng)戶Id爲Key,寫入分(fēn)布式Session;
用(yòng)戶再次登錄時(shí),獲取分(fēn)布式Session,是否有會話(huà)信息,如果沒有則調到登錄頁;
一般采用(yòng)Cache中間件實現,建議(yì)使用(yòng)Redis,因此它有持久化(huà)功能,方便分(fēn)布式Session宕機後,可(kě)以從持久化(huà)存儲中加載會話(huà)信息;
存入會話(huà)時(shí),可(kě)以設置會話(huà)保持的(de)時(shí)間,比如15分(fēn)鐘(zhōng),超過後自動超時(shí);
結合Cache中間件,實現的(de)分(fēn)布式Session,可(kě)以很好的(de)模拟Session會話(huà)。
數據庫集群(讀寫分(fēn)離,分(fēn)庫分(fēn)表)
大(dà)型網站需要存儲海量的(de)數據,爲達到海量數據存儲,高(gāo)可(kě)用(yòng),高(gāo)性能一般采用(yòng)冗餘的(de)方式進行系統設計。一般有兩種方式讀寫分(fēn)離和(hé)分(fēn)庫分(fēn)表。
讀寫分(fēn)離:一般解決讀比例遠(yuǎn)大(dà)于寫比例的(de)場(chǎng)景,可(kě)采用(yòng)一主一備,一主多(duō)備或多(duō)主多(duō)備方式。
本案例在業務拆分(fēn)的(de)基礎上,結合分(fēn)庫分(fēn)表和(hé)讀寫分(fēn)離
業務拆分(fēn)後:每個(gè)子系統需要單獨的(de)庫;
如果單獨的(de)庫太大(dà),可(kě)以根據業務特性,進行再次分(fēn)庫,比如商品分(fēn)類庫,産品庫;
分(fēn)庫後,如果表中有數據量很大(dà)的(de),則進行分(fēn)表,一般可(kě)以按照(zhào)Id,時(shí)間等進行分(fēn)表;(高(gāo)級的(de)用(yòng)法是一緻性Hash)
在分(fēn)庫,分(fēn)表的(de)基礎上,進行讀寫分(fēn)離;
相關中間件可(kě)參考Cobar(阿裏,目前已不在維護),TDDL(阿裏),Atlas(奇虎360),MyCat(在Cobar基礎上,國内很多(duō)牛人(rén),号稱國内第一開源項目)。
電商網站後台功能模塊分(fēn)析;
後台:各類主要信息的(de)概要統計,包括客戶信息、 訂單信息、商品信息、庫存信息、評論和(hé)最近反饋等。
商品模塊:
1.商品管理(lǐ):商品和(hé)商品包的(de)添加、修改、 删除、複制、批處理(lǐ)、商品計劃上下(xià)架、SEO、商品多(duō)媒體上傳等,可(kě)以定義商品是實體還(hái)是虛拟,可(kě)以定義是否預訂、是否缺貨銷售等。
2.商品目錄管理(lǐ):樹形的(de)商品目錄組織管理(lǐ),并可(kě)以設置關聯/商品推薦。
3.商品類型管理(lǐ):定義商品的(de)類型,設置自定義屬性項、SKU項和(hé)商品評論項。
4.品牌管理(lǐ):添加、修改、删除、上傳品牌 LOGO。
5.商品評論管理(lǐ):回複、删除。
銷售模塊:
1.促銷管理(lǐ):分(fēn)爲目錄促銷、購(gòu)物(wù)車促銷和(hé) 優惠券促銷三類,可(kě)以随意定義不同的(de)促銷規則,滿足日常促銷活動:購(gòu)物(wù)折扣、購(gòu)物(wù)贈送積分(fēn)、購(gòu)物(wù)贈送優惠券、購(gòu)物(wù)免運輸費、特價商品、特定會員(yuán)購(gòu)買特定商品、折上折、買二送一等。 2.禮券管理(lǐ):添加、發送禮券
3.關聯/推薦管理(lǐ)――基于規則引擎,可(kě)以支持多(duō)種推薦類型,可(kě)手工添加或者自動評估商品。
訂單模塊:
1.訂單管理(lǐ):可(kě)以編輯、解鎖、取消訂單、 拆分(fēn)訂單、添加商品、移除商品、确認可(kě)備貨等,也(yě)可(kě)對(duì)因促銷規則發生變化(huà)引起的(de)價格變化(huà)進行調整。訂單處理(lǐ)完可(kě)發起退貨、換貨流程。
2.支付:常用(yòng)于訂單支付信息的(de)查看和(hé)手工 支付兩種功能。手工支付訂單,常用(yòng)于“款到發貨”類型的(de)訂單,可(kě)理(lǐ)解爲對(duì)款到發貨這(zhè)類訂單的(de)一種補登行爲。
3.結算(suàn):提供商家與第三方物(wù)流公司的(de)結算(suàn) 功能,通(tōng)常是月(yuè)結。同時(shí),結算(suàn)功能也(yě)是常用(yòng)來(lái)對(duì)“貨到付款”這(zhè)一類型訂單支付後的(de)數據進行對(duì)帳
庫存模塊:
1.庫存管理(lǐ):引入庫存的(de)概念,不包括銷售 規則爲永遠(yuǎn)可(kě)售的(de)商品,一個(gè)SKU對(duì)應一個(gè)庫存量。庫存管理(lǐ)提供增加、減少等調整庫存量的(de)功能;另外,也(yě)可(kě)對(duì)具具體的(de)SKU設置商品的(de)保留數量、***小庫存量、再進貨數量。每條SKU商品的(de)具體庫存操作都會記錄在庫存明(míng)細記錄裏邊。
2.查看庫存明(míng)細記錄。
3.備貨/發貨:創建備貨單、打印備貨單、打印發貨單、打印EMS快(kuài)遞單、完成發貨等一系列物(wù)流配送的(de)操作。
4.退/換貨:對(duì)退/換貨的(de)訂單進行收貨流程的(de)處理(lǐ)。
内容模塊:
1.内容管理(lǐ):包括内容管理(lǐ)以及内容目錄管理(lǐ)。内容目錄由樹形結構組織管理(lǐ)。類似于商品目錄的(de)樹形結構,可(kě)設置目錄是否爲鏈接目錄。
2.無限制創建獨立内容網頁,比如關于我們,聯系我們。
3.廣告管理(lǐ):添加、修改、删除、上傳廣告、 定義廣告有效時(shí)限。
4.可(kě)自由設置商城(chéng)導航欄目以及欄目内容、欄目鏈接。
客戶模塊:
1.客戶管理(lǐ):添加、删除、修改、重設密碼、 發送郵件等。 2.反饋管理(lǐ):删除、回複。
3.消息訂閱管理(lǐ):添加、删除、修改消息組 和(hé)消息、分(fēn)配消息組、查看訂閱人(rén)。 4.會員(yuán)資格:添加、删除、修改。
系統模塊:
1.安全管理(lǐ):管理(lǐ)員(yuán)、角色權限分(fēn)配和(hé)安全日志
2.系統屬性管理(lǐ):用(yòng)于管理(lǐ)自定義屬性。可(kě)關聯模塊包括商品管理(lǐ)、商品目錄管理(lǐ)、内容管理(lǐ)、客戶管理(lǐ)。
3.運輸與區(qū)域:運輸公司、運輸方式、運輸 地區(qū)。 4.支付管理(lǐ):支付方式、支付曆史。 5.包裝管理(lǐ):添加、修改、删除。
6.數據導入管理(lǐ):商品目錄導入、商品導入、 會員(yuán)資料導入。 7.郵件隊列管理(lǐ):監控郵件發送情況,删除 發送異常郵件。
報表模塊:
缺省數個(gè)統計報表,支持時(shí)間段過濾、支持按不同狀态過濾、支持HTML、PDF和(hé)Excel格式的(de)導出和(hé)打印。 1.用(yòng)戶注冊統計 2.低庫存彙總 3.缺貨訂單 4.訂單彙總 5.退換貨
責任編輯:中山網站建設
【網訊網絡】國家高(gāo)新技術企業》十年專注軟件開發,網站建設,網頁設計,APP開發,小程序,微信公衆号開發,定制各類企業管理(lǐ)軟件(OA、CRM、ERP、訂單管理(lǐ)系統、進銷存管理(lǐ)軟件等)!服務熱(rè)線:0760-88610046、13924923903,http://www.wansion.net
下(xià)一篇:如何做(zuò)好Android開發性能優化(huà)
*請認真填寫需求,我們會在24小時(shí)内與您取得(de)聯系。