莫竣成,田秀云
(廣東海洋大學(xué)電信學(xué)院,廣東湛江 524088)
隨著全球計算機信息網(wǎng)絡(luò)的應(yīng)用普及和迅速發(fā)展,互聯(lián)網(wǎng)使人類生活方式發(fā)生巨大變化,為國家和地區(qū)的經(jīng)濟(jì)增長提供強大的動力。如今利用電腦、手機等在互聯(lián)網(wǎng)進(jìn)行網(wǎng)上購物的方式深深地改變了傳統(tǒng)線下購物方式,對現(xiàn)代社會生活的影響與日俱增[1]。其中,以淘寶、京東等大型電商平臺為代表,2018 年雙十一購物節(jié)淘寶和京東當(dāng)日成交額分別達(dá)到2 135 億元和1 598 億元,創(chuàng)造各自單日營業(yè)額新紀(jì)錄。在傳統(tǒng)實體經(jīng)濟(jì)面前,這些驚人的單日營業(yè)額難以企及??梢?,網(wǎng)購方式已經(jīng)成為現(xiàn)代信息社會人類喜聞樂見的一種流行生活方式。為此,本文提出基于Java 的網(wǎng)上購物平臺系統(tǒng)設(shè)計,具備注冊登錄、搜索、購物車、訂單、門戶、后臺管理等網(wǎng)上商城的基本功能,而且能處理高并發(fā)問題,系統(tǒng)可用性和穩(wěn)定性高,系統(tǒng)業(yè)務(wù)高可擴展性。
如今,電商平臺開發(fā)技術(shù)發(fā)展迅猛,系統(tǒng)架構(gòu)設(shè)計不斷適應(yīng)現(xiàn)實市場環(huán)境,出現(xiàn)一些能處理高并發(fā)、高可用問題和高可擴展的架構(gòu),如分布式服務(wù)架構(gòu),為開發(fā)應(yīng)用于真實市場環(huán)境的網(wǎng)上商城系統(tǒng)提供架構(gòu)設(shè)計基礎(chǔ)[2]。此外,隨著業(yè)界開源精神的流行,開源框架,編程語言,服務(wù)器和數(shù)據(jù)庫等免費對外開放源碼,一大批熱衷技術(shù)的開發(fā)者貢獻(xiàn)自己的代碼,使開發(fā)技術(shù)日趨成熟。
本系統(tǒng)按業(yè)務(wù)功能邏輯分離前后臺設(shè)計的B2C網(wǎng)上商城平臺,前后臺管理模塊分離,前臺包含有門戶網(wǎng)站、商品搜索、商品詳情展示、用戶購物車、用戶注冊&登錄、訂單查看、訂單提交、訂單支付、廣播公告等展示于買家端的功能頁面;后臺包含有商城整體商品管理、廣告活動管理、側(cè)邊和購物車下方商品推薦、訂單管理、CMS、系統(tǒng)管理等賣家端的功能頁面。
當(dāng)網(wǎng)站的訪問流量很小時,將所有的功能代碼封裝部署到同一個應(yīng)用中,將整體應(yīng)用拆分成多個相互獨立的子應(yīng)用,按表現(xiàn)、業(yè)務(wù)、數(shù)據(jù)訪問分3層結(jié)合MVC 模式開發(fā)[3],這種稱為單一垂直應(yīng)用架構(gòu),如圖1所示。這種傳統(tǒng)架構(gòu)優(yōu)點在于可以減少節(jié)點服務(wù)器的部署和降低開發(fā)成本,提升開發(fā)效率;但隨著網(wǎng)上商城訪問量的增大和業(yè)務(wù)的擴展,此架構(gòu)難以應(yīng)對巨大的訪問壓力和后期業(yè)務(wù)擴展受限且工程量大,單靠提高系統(tǒng)硬件機器性能帶來的效果越來越不明顯,所以傳統(tǒng)的架構(gòu)難以適用于如今復(fù)雜的真實市場環(huán)境。
圖1 單一垂直應(yīng)用架構(gòu)
傳統(tǒng)應(yīng)用架構(gòu)存在很大局限性,難以適用如今的電商市場環(huán)境,因此,本系統(tǒng)采用SOA 分布式服務(wù)架構(gòu),其具有處理高并發(fā)的能力,能靈活響應(yīng)多變的市場需求,能實時監(jiān)控集群容量值和均衡調(diào)度系統(tǒng)資源[4]。
系統(tǒng)將核心業(yè)務(wù)分離為一個個獨立的服務(wù),形成統(tǒng)一管理統(tǒng)一調(diào)度的服務(wù)中心。表現(xiàn)層通過服務(wù)中間件Dubbo與服務(wù)層通信,服務(wù)層將所有服務(wù)注冊到Dubbo的注冊中心,表現(xiàn)層需要在注冊中心訂閱處理本層業(yè)務(wù)所需的服務(wù),并通過遠(yuǎn)程調(diào)用所訂閱的服務(wù)[5]。服務(wù)層與持久層之間的通信,使用了Redis作為數(shù)據(jù)緩存服務(wù)器,提供可靠快速的數(shù)據(jù)訪問,以減少對數(shù)據(jù)庫的訪問壓力。搜索服務(wù)則通過Solr服務(wù)器來管理索引庫,提供大量快速精準(zhǔn)的搜索服務(wù),可滿足各種復(fù)雜的搜索業(yè)務(wù)需求[6]。系統(tǒng)整體架構(gòu)如圖2所示。
圖2 系統(tǒng)整體架構(gòu)
SOA(Service Oriented Architecture)面向服務(wù)的分布式架構(gòu),就是把各個處理不同業(yè)務(wù)的子系統(tǒng)分別拆分為服務(wù)和表現(xiàn)兩個工程,將各個獨立的子系統(tǒng)部署到不同的服務(wù)器上。
此架構(gòu)使商城系統(tǒng)具有較高擴展性,在業(yè)務(wù)擴展時,只需添加處理對應(yīng)的業(yè)務(wù)的服務(wù)工程,免去重構(gòu)系統(tǒng)的繁瑣;靈活調(diào)節(jié)性,體現(xiàn)在能夠隨業(yè)務(wù)的改變來調(diào)整系統(tǒng)的靜態(tài)和動態(tài)資源。系統(tǒng)具備處理高并發(fā)能力和高可用性,是通過搭建服務(wù)器集群,使用主從模型為每一臺主機配置備用機來實現(xiàn),并且使用中間件負(fù)責(zé)資源調(diào)度、實時監(jiān)控服務(wù)和管理服務(wù)器集群容量,提高集群利用率[4]。
Redis 是各大互聯(lián)網(wǎng)公司廣泛使用的緩存中間件,單節(jié)點Redis 服務(wù)器就能達(dá)到非常理想的性能。Redis集群是在網(wǎng)絡(luò)中配置多臺Redis服務(wù)器節(jié)點,節(jié)點間相互共享數(shù)據(jù)的服務(wù)器集群;其能自動根據(jù)哈希值將數(shù)據(jù)切分到不同哈希槽的服務(wù)器節(jié)點上,當(dāng)部分節(jié)點失效或者死機時,通過投票容錯和監(jiān)聽機制,讓從節(jié)點繼續(xù)處理命令請求,直到主機恢復(fù)正常工作。因此,Redis 集群具有高可用性,適應(yīng)復(fù)雜變化的互聯(lián)網(wǎng)環(huán)境[7]。Redis集群架構(gòu)如圖3所示。
圖3 Redis集群架構(gòu)
Solr集群是利用Solr和Zookeeper各自優(yōu)勢集于一體組成的分布式搜索方案,用Zookeeper 作為集群的資源配中心,使集群能夠集中統(tǒng)一配置信息,具備實時搜索和自動負(fù)載均衡的能力,以應(yīng)對系統(tǒng)索引量很大,搜索請求并發(fā)量很高的搜索環(huán)境[6]。Solr 集群架構(gòu)如圖4所示。
圖4 Solr集群架構(gòu)
搜索系統(tǒng)是基于Solr集群設(shè)計的一個分布式搜索引擎,適用于高搜索請求的環(huán)境。為系統(tǒng)的具體業(yè)務(wù)自定義業(yè)務(wù)域,當(dāng)后臺添加商品后,經(jīng)過中文分析器分詞,Solr將關(guān)鍵詞索引添加到索引庫存儲。前臺輸入關(guān)鍵詞搜索,系統(tǒng)調(diào)用搜索服務(wù)處理搜索請求,并返回搜索結(jié)果[6]。
傳統(tǒng)的登錄實現(xiàn)方式適用于只有一個Web 工程時,但是在集群環(huán)境下會出現(xiàn)要求用戶多次登錄的情況。由于本系統(tǒng)在集群環(huán)境下開發(fā),因此,提出的解決方案是配置一個用于管理Session 的服務(wù)器,使用Redis服務(wù)器模擬Session,實現(xiàn)Session的統(tǒng)一管理,解決Session共享出現(xiàn)的節(jié)點上限問題[8]。登錄邏輯基本流程如圖5所示。
圖5 登錄邏輯基本流程
用戶點擊查詢訂單時,瀏覽器發(fā)送查詢訂單請求,服務(wù)器從請求參數(shù)的cookie 中獲取token,調(diào)用SSO服務(wù),根據(jù)token到Redis中查詢用戶信息,若to?ken存在則調(diào)整有效期后返回用戶已登錄,顯示訂單信息;否則token 不存在,跳轉(zhuǎn)到登錄頁面重新登錄[9]。查詢訂單處理邏輯如圖6所示。
圖6 查詢訂單處理邏輯
管理員在后臺可以進(jìn)行商品、內(nèi)容和索引庫的管理,其中,網(wǎng)站所有圖片都是使用FastDFS分布式文件系統(tǒng)存儲,提供統(tǒng)一的訪問方式。FastDFS圖片服務(wù)器是一款如今業(yè)界流行且廣泛應(yīng)用于各大互聯(lián)網(wǎng)公司的開源的分布式文件系統(tǒng),它解決了大數(shù)據(jù)量存儲和負(fù)載均衡等問題等機制[10]。
前臺門戶首頁如圖7所示。
圖7 商城首頁
管理員在后臺系統(tǒng)對商品進(jìn)行管理,新增商品如圖8所示。
圖8 新增商品圖
本文主要介紹了基于Java 編程語言開發(fā)的網(wǎng)上商城平臺系統(tǒng),在其前臺管理系統(tǒng),用戶在商城上搜索商品,查看詳情信息,將其添加到購物車,注冊成為會員,登錄后可以管理購物車和訂單;在后臺管理系統(tǒng),管理員可以對商城的商品、內(nèi)容和索引庫的管理。本設(shè)計實現(xiàn)了一個界面簡潔美觀,交互性友好,具有高安全性、高可用性、能處理高并發(fā)的網(wǎng)上購物平臺系統(tǒng)。