劉權(quán)賡
摘 要:秒殺在各大電商系統(tǒng)中是一種常見的營銷策略。本文按照自上而下的結(jié)構(gòu)化開發(fā)思想,著重考慮系統(tǒng)的可靠性和可擴(kuò)展性,針對(duì)秒殺系統(tǒng)的系統(tǒng)架構(gòu)、功能模塊、數(shù)據(jù)流及業(yè)務(wù)流進(jìn)行了分析論述。
關(guān)鍵詞:秒殺;高并發(fā)系統(tǒng);架構(gòu)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-2064(2019)19-0028-02
0 引言
隨著電子商務(wù)的不斷發(fā)展,秒殺作為一種嶄新的互聯(lián)網(wǎng)營銷模式也日益受到關(guān)注。由于秒殺這種網(wǎng)絡(luò)促銷行為能夠在短時(shí)間內(nèi)聚集大量人氣,所以對(duì)企業(yè)具有極高的商業(yè)價(jià)值。但也由于很多電子商務(wù)平臺(tái)對(duì)于秒殺模塊本身設(shè)計(jì)上的不足,使得在推廣秒殺活動(dòng)時(shí),無法有效應(yīng)付因活動(dòng)時(shí)激增的用戶訪問量導(dǎo)致的平臺(tái)運(yùn)行不穩(wěn)定問題,如訪問超時(shí)、響應(yīng)速度慢,甚至服務(wù)癱瘓等。
秒殺模塊的建立必定對(duì)系統(tǒng)有非常高的要求,系統(tǒng)除了應(yīng)對(duì)在短時(shí)間內(nèi)網(wǎng)絡(luò)流量激增問題的同時(shí),還要確保系統(tǒng)的穩(wěn)定性,高擴(kuò)展性,高并發(fā)性,安全性等。在高負(fù)載、高并發(fā)的情境下需要對(duì)系統(tǒng)進(jìn)行軟硬件方面采取各種優(yōu)化手段,保證系統(tǒng)的正常運(yùn)行。本文以軟件工程的角度,按照自上而下的結(jié)構(gòu)化開發(fā)思想,對(duì)秒殺系統(tǒng)的整體架構(gòu)進(jìn)行了詳細(xì)論述。
1 系統(tǒng)設(shè)計(jì)
模塊化的設(shè)計(jì)是的應(yīng)用系統(tǒng)的內(nèi)部構(gòu)造以及功能得到了劃分[1,2],方便了對(duì)系統(tǒng)的開發(fā)流程的設(shè)計(jì)和管理以及開發(fā)進(jìn)度的安排和管理,此外還能加快任務(wù)的開發(fā),提高系統(tǒng)的可維護(hù)性,降低了系統(tǒng)內(nèi)部功能之間的耦合度。
秒殺系統(tǒng)的功能主要包括用戶登錄,商品列表首頁展示,商品詳情頁顯示,秒殺功能,用戶訂單展示等功能[3,5]。具體可分為6個(gè)模塊,即登錄模塊、用戶模塊、商品模塊、秒殺模塊、訂單模塊、異常處理模塊。功能層次圖如圖1所示。
1.1 登錄模塊
登錄模塊中包括了首先應(yīng)該登錄購物秒殺系統(tǒng)之后才可以進(jìn)行商品的秒殺功能的使用。沒有登錄直接訪問商品列表也可以訪問但是秒殺的功能不能被執(zhí)行,也是秒殺功能執(zhí)行的最初的前提條件[6]。
登錄模塊中進(jìn)行輸入賬戶密碼的限制,賬戶應(yīng)為用戶的手機(jī)號(hào),有長度以及用戶的輸入是不是數(shù)字的限制。密碼最少是長度為6位的字符串。不符合登錄格式要求的進(jìn)行提示。
1.2 用戶模塊
用戶模塊中包括了用戶基本信息的管理,如用戶的電話、姓名、登錄密碼設(shè)置、收貨地址等基本信息。用戶的部分基本信息在秒殺動(dòng)作完成之后在訂單詳情界面中顯示。
1.3 商品模塊
商品模塊中包括了商品基本信息的管理,如商品的編號(hào)、名稱、庫存數(shù)量、單價(jià)等基本信息。商品模塊是購物秒殺系統(tǒng)中的重要角色,秒殺商品列表中的商品是從所有商品中抽取出來做活動(dòng)的個(gè)體,秒殺的數(shù)量和商品的庫存量之間有密切關(guān)系。
1.4 秒殺模塊
秒殺模塊是整個(gè)秒殺系統(tǒng)的重點(diǎn)。秒殺功能能夠執(zhí)行的前提條件有如下幾點(diǎn)要求:
(1)用戶登錄成功并保存了用戶token信息。(2)秒殺的商品數(shù)量大于零。(3)系統(tǒng)時(shí)間在該商品的秒殺開始時(shí)間和結(jié)束時(shí)間之間等。
只有滿足以上幾點(diǎn)要求用戶才能夠執(zhí)行秒殺的功能,系統(tǒng)才允許執(zhí)行秒殺的業(yè)務(wù)邏輯。
1.5 訂單模塊
訂單模塊包含訂單詳情的預(yù)覽。訂單的產(chǎn)生方式是用戶執(zhí)行完成秒殺的操作之后,進(jìn)行減庫存下訂單的后臺(tái)業(yè)務(wù)邏輯的執(zhí)行,生成的訂單信息反饋給該用戶。訂單的內(nèi)容包括下單時(shí)間、訂單價(jià)格、收貨人姓名、電話、地址等信息。
1.6 異常處理模塊
異常處理模塊中主要用于添加統(tǒng)一的異常代碼以及異常信息并進(jìn)行歸類。通常的包含有異常代碼很異常信息。
(1)通用的異常碼。服務(wù)端異常、參數(shù)校驗(yàn)異常、請(qǐng)求非法、訪問太頻繁等。(2)登錄模塊中的異常碼。Session不存在或者已經(jīng)失效、登錄密碼不能為空、手機(jī)號(hào)不能為空、手機(jī)號(hào)格式錯(cuò)誤、手機(jī)號(hào)不存在、密碼錯(cuò)誤等。(3)商品模塊中的異常碼。商品庫存不足等。(4)訂單模塊中的異常碼。訂單不存在等。(5)秒殺模塊中的異常碼。商品已經(jīng)秒殺完畢、不能重復(fù)秒殺、秒殺失敗等。
2 系統(tǒng)架構(gòu)
秒殺系統(tǒng)采用分布式的系統(tǒng)架構(gòu),其中的組件包括Keepalived做負(fù)載均衡和高可用,nginx做請(qǐng)求的分流轉(zhuǎn)發(fā)和緩存,使用Apache的tomcat做服務(wù)器的集群。具體的架構(gòu)部署如圖2所示。
2.1 系統(tǒng)數(shù)據(jù)流圖
秒殺系統(tǒng)中的數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,表達(dá)出系統(tǒng)的邏輯功能和數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程。系統(tǒng)頂層數(shù)據(jù)流圖如圖3所示。
2.2 系統(tǒng)用例
秒殺系統(tǒng)角色使用該系統(tǒng)的用戶,用例包括登錄,秒殺商品列表的瀏覽,以及商品詳情的瀏覽,商品詳情中可以看到該商品的秒殺詳細(xì)信息,用戶可以進(jìn)行秒殺操作并生成訂單查看訂單狀態(tài),收貨人信息等。系統(tǒng)用例圖采用UML的設(shè)計(jì)思想和設(shè)計(jì)規(guī)范進(jìn)行制作。
2.3 系統(tǒng)E-R圖
經(jīng)過對(duì)購物秒殺系統(tǒng)分析后得出系統(tǒng)共有四個(gè)實(shí)體,分別為用戶、商品、訂單、秒殺商品。確定實(shí)體集之后,對(duì)實(shí)體的屬性進(jìn)行分析后得出:
(1)實(shí)體集“用戶”包括編號(hào),姓名,地址,創(chuàng)建日期,電話等屬性。(2)實(shí)體集“商品”包括編號(hào),名稱,庫存,單價(jià)等屬性。(3)實(shí)體集“秒殺商品”包括編號(hào),名稱,數(shù)量,開始時(shí)間,結(jié)束時(shí)間,原價(jià)等屬性。(4)實(shí)體集“訂單詳情”包括編號(hào),創(chuàng)建時(shí)間,創(chuàng)建方式,狀態(tài),名稱,收獲地址,支付時(shí)間等屬性。
實(shí)體以及實(shí)體之間的關(guān)聯(lián)關(guān)系如圖4所示。
3 結(jié)語
秒殺在各大電商系統(tǒng)中是一種常見的營銷策略。隨著淘寶雙十一交易額一年比一年上漲,秒殺活動(dòng)熱度也隨之不斷上升,這同時(shí)也給電商技術(shù)人員帶來嚴(yán)峻的挑戰(zhàn)。本文對(duì)購物秒殺系統(tǒng)進(jìn)行了分析,按照結(jié)構(gòu)化開發(fā)思想,針對(duì)秒殺系統(tǒng)的系統(tǒng)架構(gòu)、功能模塊、數(shù)據(jù)流及業(yè)務(wù)流進(jìn)行了詳細(xì)論述。良好的架構(gòu)設(shè)計(jì)可以減少開發(fā)難度和后期使用風(fēng)險(xiǎn)。通過對(duì)購物秒殺系統(tǒng)的研究,對(duì)主流大型網(wǎng)站為提高并發(fā)量和系統(tǒng)性能開展相關(guān)工作也有借鑒意義。
參考文獻(xiàn)
[1] 嚴(yán)偉.計(jì)算機(jī)網(wǎng)絡(luò)(第五版)[M].清華大學(xué)出版社,2012.
[2] Sathiyamoorthi,Murali Bhaskaran.Web Caching Through Modified Cache Replacement Algorithm[C].International Conference on Recent Trends In Information Technology,2012:35-38.
[3] 李京文.中國電子商務(wù)發(fā)展現(xiàn)狀與未來趨勢(shì)[J].河北學(xué)刊,2016,24(1):107-109.
[4] 陳康賢.大型分布式網(wǎng)站架構(gòu)設(shè)計(jì)與實(shí)踐(第三版)[M].電子工業(yè)出版社,2014,9:34-76.
[5] 阿里巴巴集團(tuán)成長集編委會(huì)[M].逆流而上-阿里巴巴技術(shù)成長之路.第二版.電子工業(yè)出版社,2017:216-387.
[6] Joshua Bloch.Effective Java.2E. Radioelektronika International Conference[C].2009:147-230.