張錦賢
隨著科技發(fā)展,電商平臺在人們?nèi)粘I罘矫娴闹匾匀找骘@著,也引起了業(yè)界關(guān)注。目前我國傳統(tǒng)行業(yè)受管理模式、運營方式等多方面因素限制,向電商化發(fā)展仍然存在較為顯著的問題,同時電商平臺存在技術(shù)老舊,高性能、高可用和高擴展性仍然有待改善的問題,無法同時支持跨平臺和多終端訪問。本文基于信息化、智能化的時代背景,首先對相關(guān)理論進行了廣泛的搜索和整理,在此基礎(chǔ)上運用了類比法和調(diào)研法,對大型電子商務(wù)平臺技術(shù)存在的問題展開研究,意圖達到尋求符合大型電商平臺技術(shù)的研究目的。
經(jīng)過調(diào)研分析之后,本研究得出了如下結(jié)論:在大型電子商務(wù)平臺開發(fā)建設(shè)中可以使用微服務(wù)架構(gòu)技術(shù),將各個功能模塊進行分離,實現(xiàn)高性能,高可用性和高擴展性,同時支持跨平臺訪問和多端設(shè)備訪問。基于此,本文給出了針對性的策略與建議,希望對未來大型電商平臺技術(shù)選型提供借鑒與參考。
(一)研究背景及意義
1.研究背景
隨著全球經(jīng)濟一體化和互聯(lián)網(wǎng)行業(yè)的高速發(fā)展,大型電商平臺作為一種新興業(yè)態(tài)在我國呈現(xiàn)出爆發(fā)式的增長趨勢,在促進我國經(jīng)濟轉(zhuǎn)型升級,穩(wěn)定增長方面也起了越來越重要的推動作用。尤其是近年來疫情帶來的影響,傳統(tǒng)行業(yè)為適應發(fā)展加入轉(zhuǎn)型行列,各種電商平臺也得到了突飛猛進的發(fā)展。
2.研究意義
電商平臺由于消費群體基數(shù)大,往往會導致短期內(nèi)的高并發(fā)產(chǎn)生。軟件開發(fā)具有過程不可逆的特征,所以系統(tǒng)的技術(shù)底層架構(gòu)是否能夠完全滿足業(yè)務(wù)的使用場景,必須要在項目實施之前進行科學、充分地論證。避免后續(xù)項目交付產(chǎn)生重大的技術(shù)風險。
(二)案例分析
1.項目背景
某民營500強企業(yè),目前使用的是傳統(tǒng)的工廠→渠道商→門店→終端消費者的銷售模式。集團謀求全新2C模式發(fā)展,打造自營的電商平臺,通過S2B2C模式,讓品牌商品直達終端消費者和門店,減少中間環(huán)節(jié)的利益鏈條和利潤損耗。
2.項目總體需求
電商平臺系統(tǒng)計劃在上線1年內(nèi)完成1000家的商戶入駐,實現(xiàn)1億GMV和100萬用戶的目標。電商平臺的整體功能包括商家入駐管理、商品管理、用戶管理、團長管理、消費者管理、訂單管理、營銷活動、直播導流、頁面裝修、數(shù)據(jù)分析、財務(wù)系統(tǒng)和ERP管理模塊。另外,計劃在系統(tǒng)上線3個月后進行一次秒殺促銷活動,根據(jù)業(yè)務(wù)量預估會有5萬并發(fā)量。
3.項目技術(shù)要點
平臺的系統(tǒng)結(jié)構(gòu)龐大,但是業(yè)務(wù)模塊要求快速上線,以便能夠快速進行市場推廣,根據(jù)市場的反饋再來調(diào)整系統(tǒng)的功能和營銷的方案,所以本次項目建設(shè)需要采用敏捷開發(fā)模式,系統(tǒng)通過每個小版本進行迭代,整體架構(gòu)需要有很好的可擴展性和兼容性。
因此,本項目對技術(shù)的選型有比較高的要求,要求能夠承受5萬以上的并發(fā)量,并且需要后期基于用戶量做到動態(tài)擴容。同時電商系統(tǒng)具有24小時不能停止運行的特性,本系統(tǒng)對于系統(tǒng)運維和日志管理也有比較高的要求。
基于以上項目背景和要求,我們對本次電商平臺項目建設(shè)中需要用到的相關(guān)技術(shù)架構(gòu)和技術(shù)方案進行分析。
(一)該項目技術(shù)可行性分析的原則
1.先進性
項目采用Java SpringCloud微服務(wù)架構(gòu)和SpringBoot框架進行開發(fā),該框架是業(yè)內(nèi)公認的發(fā)展前沿技術(shù),并且在很多大型的互聯(lián)網(wǎng)公司得到驗證。系統(tǒng)采用Java語言和業(yè)內(nèi)最流行的Spring框架,完全滿足技術(shù)發(fā)展趨勢和先進性。
SpringCloud微服務(wù)架構(gòu)相對于傳統(tǒng)Java架構(gòu)具有以下五點優(yōu)勢。
(1) 松散耦合和容錯性:微服務(wù)架構(gòu)中各個服務(wù)之間是松散耦合的,當一個服務(wù)發(fā)生故障時可以進行快速定位和修復,不會影響整個系統(tǒng)的正常運行。
(2)彈性伸縮:微服務(wù)架構(gòu)中,每一個服務(wù)都可以獨立部署和擴容,可以根據(jù)業(yè)務(wù)需求快速添加或刪除服務(wù),提高了系統(tǒng)的彈性和可伸縮性。
(3)更好的維護性和可測試性:由于微服務(wù)架構(gòu)中服務(wù)的職責單一,相對獨立,因此對服務(wù)的維護和測試也更加容易。
(4) 靈活的技術(shù)選型:微服務(wù)架構(gòu)中,不同的服務(wù)可以采用不同的技術(shù)棧,可以根據(jù)業(yè)務(wù)需求選擇最合適的技術(shù),提高了開發(fā)效率和系統(tǒng)性能。
(5)動態(tài)更新和版本控制:微服務(wù)架構(gòu)中,每個服務(wù)都是一個獨立的模塊,可以進行獨立的更新和版本控制,避免整個系統(tǒng)因為一個小的更改而進行大規(guī)模的重構(gòu)。
2.適應性
項目采用SpringCloud的consul注冊中心,采用動態(tài)配置方式和自動負載均衡的方式,滿足系統(tǒng)配置和動態(tài)擴展。
3.穩(wěn)定性
項目采用微服務(wù)架構(gòu),每個服務(wù)都有幾個實例在運行,并且分布于各個虛擬機或容器,不存在單點故障問題。由于系統(tǒng)采用可伸縮的架構(gòu),在高并發(fā)的時候,可以動態(tài)的增加資源來抵御性能的涌浪,處理旺季高并發(fā)。系統(tǒng)并且提供了分布式作業(yè)系統(tǒng),可以很好地處理大量報表集中的問題。
4.安全性
系統(tǒng)在架構(gòu)的安全性上,對外訪問只提供了Https的網(wǎng)關(guān),只有一個入口,可以很好地保障傳輸過程。
在系統(tǒng)內(nèi)部的認證上,采用了JWT的Token機制,保障分布式認證和內(nèi)部認證的安全性,系統(tǒng)采用了完善的日志機制,記錄各種風險的操作,保障在事前事后能做審計和記錄。
(二)技術(shù)選型
1.技術(shù)選型總概況如圖1所示。
2.項目開發(fā)語言選型
項目的后端語言采用Java為開發(fā)語言,具有穩(wěn)定性和較完善的生態(tài)圈,是目前后臺開發(fā)的主流語言。
3.分布式框架選型
項目后臺開發(fā)框架采用springboot框架和springcloud分布式微服務(wù)框架,springboot是springmvc的改進和敏捷版本,是目前主流的框架。
SpringCloud是目前主流的微服務(wù)框架,目前在互聯(lián)網(wǎng)大平臺得到廣泛的應用,滴滴打車平臺和美團均采用了springcloud框架。
4.前端框架
前端H5和管理平臺采用Vue.js作為開發(fā)框架。Vue.js是最近兩年發(fā)展迅猛的框架,在開發(fā)效率和穩(wěn)定性都非常好,是目前前端主流開發(fā)的3大框架。
5.ORM框架
現(xiàn)代系統(tǒng)開發(fā)使用的數(shù)據(jù)庫都需要使用ORM,本次采用了Mybatis作為ORM框架,其采用的ORM轉(zhuǎn)換、性能處理及SQL映射的方便性和靈活性都非常好。
(三)總體架構(gòu)
1.總體框架如圖2所示。
2.接入層管理
接入層主要采用Nginx處理接入。通過采用雙Nginx入口的方式,在負責均衡和性能上有突出的表現(xiàn)。
在微服務(wù)的網(wǎng)關(guān)接入層,需要進行動態(tài)網(wǎng)關(guān)路由,因此采用了Springcloud的組件Zuul,可以根據(jù)發(fā)現(xiàn)服務(wù)Consul注冊的微服務(wù)進行動態(tài)路由。
3.中間件層
中間件層主要包括發(fā)現(xiàn)服務(wù)和緩存服務(wù),發(fā)現(xiàn)服務(wù)Consul主要保障分布式治理的CAP原則,包括了統(tǒng)一的配置管理、統(tǒng)一發(fā)現(xiàn)服務(wù)、統(tǒng)一的故障檢測服務(wù)。當微服務(wù)向Consul注冊的時候,Consul會自動做健康檢查和統(tǒng)一的發(fā)現(xiàn)服務(wù)。在Consul注冊的機器中,Zuul能主動發(fā)現(xiàn),并且多臺機器能進行自動負載均衡處理。
Redis服務(wù)主要進行緩存和內(nèi)部隊列安排,在一些推送、輪詢的業(yè)務(wù)處理上,將數(shù)據(jù)庫的壓力釋放在Redis上,并且用戶體驗更好。
4.微服務(wù)結(jié)構(gòu)
微服務(wù)是核心的業(yè)務(wù)架構(gòu),每個業(yè)務(wù)功能均采用Springboot框架,并且服務(wù)和服務(wù)之間調(diào)用通過Feign進行調(diào)用。
每個微服務(wù)均可以注冊到Consol服務(wù)發(fā)現(xiàn)中,并且可以自動負載均
本文筆者在擔任企業(yè)見習項目經(jīng)理一職期間,帶領(lǐng)項目團隊,通過對項目的開發(fā)語言選型、前后端開發(fā)框架、ORM框架、數(shù)據(jù)庫分表分庫框架和系統(tǒng)的整體架構(gòu)等技術(shù)做全面分析,為后續(xù)項目實施、測試提供技術(shù)指引,有利于項目建設(shè),從而提高項目的可行性和成功率,同時也給同類型項目提供案例借鑒。
作者單位:廣州商學院
基金項目:廣東省高等教育學會“十四五”規(guī)劃2021年度高等教育研究課題“大學生德智體美勞全面而有個性發(fā)展評價改革研究——大學生德智體美勞評價平臺探究與設(shè)計”(21GQN62);2020年度廣東省普通高校特色創(chuàng)新項目(自然科學)“校園網(wǎng)絡(luò)安全態(tài)勢感知關(guān)鍵技術(shù)研究”(2020KTSCX169)。