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