商對客模式電商網(wǎng)站設(shè)計與實現(xiàn)

時間:2022-09-09 11:12:21

導(dǎo)語:商對客模式電商網(wǎng)站設(shè)計與實現(xiàn)一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

商對客模式電商網(wǎng)站設(shè)計與實現(xiàn)

摘要:基于微服務(wù)框架搭建的“商對客”商業(yè)模式(B2C商業(yè)模式)的商城平臺,對商城平臺前后端進行分離,前端使用vue.js(視圖層開發(fā)框架)進行頁面渲染,后端采用微服務(wù)框架SpringCloud;每個微服務(wù)單體模塊使用SpringBoot框架進行開發(fā),微服務(wù)單體模塊之間使用消息隊列RabbitMq進行通信,使用Redis技術(shù)進行緩存。該設(shè)計實現(xiàn)了高可用、高并發(fā)和可擴展的全品類商對客模式電商網(wǎng)站,使客戶與商家交易效率提高,給客戶帶來了良好的購物體驗。

關(guān)鍵詞:微服務(wù)架構(gòu);“商對客”商業(yè)模式;SpringCloud

1引言

(Introduction)隨著科學(xué)技術(shù)的日益進步,電子商務(wù)成為社會活動的重要部分,用戶實現(xiàn)了在家一鍵下單,購買支付,一鍵退款,方便了人們的生活。以往的單體應(yīng)用架構(gòu)根本支撐不住如此強大的購物熱潮,在客流量增大的情況下,服務(wù)器常常因為無法承受高并發(fā)量而造成宕機的問題,使用戶體驗感差。而后發(fā)展的分布式架構(gòu)和SOA(粗粒度服務(wù))架構(gòu)擴展性差,耦合性高,也不滿足此系統(tǒng)的需求。基于此,本文開發(fā)的系統(tǒng)商城平臺采用微服務(wù)架構(gòu),按照業(yè)務(wù)被拆分為多個微服務(wù),以松耦合的方式被獨立部署[1],使用Spring(SpringCloud+SpringBoot)框架進行開發(fā),Nginx(輕量級web服務(wù)器)作為反向,Redis(內(nèi)存數(shù)據(jù)庫)作為緩存,MySQL(關(guān)系型數(shù)據(jù)庫)作為后臺數(shù)據(jù)庫;使用RabbitMq(消息隊列)方式提高了全品類網(wǎng)站平臺的響應(yīng)速度,實現(xiàn)了商品顯示、商品搜索、加入購物車、下單購買等功能。

2技術(shù)方案(Technicalsolutions)

2.1微服務(wù)架構(gòu)

2.1.1微服務(wù)微服務(wù)是面向服務(wù)軟件開發(fā)的最新發(fā)展趨勢,其通常采用去中心化的服務(wù)管理方式[2]。它的核心思想是根據(jù)業(yè)務(wù)需求,將業(yè)務(wù)拆分為一個一個的服務(wù),實現(xiàn)去耦合,每個服務(wù)都對應(yīng)唯一的業(yè)務(wù),做到一個服務(wù)只做一件事,服務(wù)單一職責化,能夠被獨立部署到生產(chǎn)環(huán)境。服務(wù)內(nèi)部通過RPC或消息驅(qū)動API通信,對外通過RESTfulAPI輕量交互信息[3]。微服務(wù)架構(gòu)是粗粒度SOA架構(gòu)的升華,其強調(diào)業(yè)務(wù)和功能徹底組件化和服務(wù)化。微服務(wù)的優(yōu)點:(1)服務(wù)獨立,一個服務(wù)只干一件事,獨立部署;(2)開發(fā)簡單,效率提高,團隊之間工作互不干擾;(3)微服務(wù)是松耦合的;(4)易于和第三方集成。微服務(wù)的缺點:(1)開發(fā)和運營人員要處理分布式系統(tǒng)的復(fù)雜性;(2)運維成本提高;(3)數(shù)據(jù)一致性存在問題;(4)服務(wù)間通信成本增大。2.1.2SpringCloud框架簡介SpringCloud是一套基于SpringBoot構(gòu)建的通用工具集[4],它是一系列框架的有序集合,這些框架致力于分布式服務(wù)治理;它本身不會提供具體功能的操作,主要專注于服務(wù)之間的通信、熔斷、監(jiān)控;它有很多組件來支持一套功能[5]。

2.2“商對客”商業(yè)模式

“商對客”(即B2C)模式是企業(yè)對消費者的電子商務(wù)模式,企業(yè)建立自己的網(wǎng)站,在線上通過互聯(lián)網(wǎng)銷售自己的產(chǎn)品,宣傳自己的品牌,進行網(wǎng)絡(luò)推廣和網(wǎng)絡(luò)營銷,使線上的交易配合線下的銷售和宣傳,提升了企業(yè)的服務(wù)質(zhì)量,更好地增強了用戶的黏性。B2C是一種綜合性商城,不僅是一種百貨商店,還是多種服務(wù)商店;不僅具有較大的購物群體,也實現(xiàn)了穩(wěn)定的網(wǎng)絡(luò)平臺,在支付網(wǎng)絡(luò)以及安全體系創(chuàng)建方式上都實現(xiàn)了完整的建設(shè)系統(tǒng),為企業(yè)發(fā)展和人們消費提供了較大方便[6]。

2.3Redis

Redis是基于鍵值對存儲結(jié)構(gòu)的系統(tǒng),類屬于NoSQL[7]。Redis讀寫數(shù)據(jù)的時候不會受到硬盤I/O速度的限制,讀取速度非常快[8]。Redis中的Value支持五種數(shù)據(jù)類型:字符串、字符串列表、字符串集合、有序字符串集合、哈希。Redis支持數(shù)據(jù)備份到磁盤上,且操作具有原子性。

3系統(tǒng)設(shè)計與實現(xiàn)(Systemdesignandimplementation)

3.1整體架構(gòu)

靈耀商城平臺是一個全品類的網(wǎng)站平臺,在MVC架構(gòu)的基礎(chǔ)上,根據(jù)具體功能和實際業(yè)務(wù)需求融入微服務(wù)架構(gòu)。每個微服務(wù)模塊按照業(yè)務(wù)功能進行拆分,每個微服務(wù)的功能職責單一,除通用模塊Common外,其余模塊相互獨立,沒有功能性依賴,其他模塊如要使用則直接調(diào)用對外提供的API訪問接口。根據(jù)業(yè)務(wù)需求,將商城平臺的前后端進行分離開發(fā),并將整個系統(tǒng)按照業(yè)務(wù)功能劃分為多個子系統(tǒng),每個子系統(tǒng)仍然遵循MVC三層架構(gòu)設(shè)計,分為界面層Controller、業(yè)務(wù)邏輯層Service和數(shù)據(jù)訪問層Dao,接口遵循RESTful架構(gòu)風格對外提供服務(wù)。系統(tǒng)為了防止網(wǎng)關(guān)故障從而導(dǎo)致整個系統(tǒng)無法響應(yīng)的問題,設(shè)計了兩個網(wǎng)關(guān),其中一個作為備用網(wǎng)關(guān)。系統(tǒng)前端使用域名訪問,此項目域名使用SwitHosts本地域名解析的方式,端口解析使用Nginx反向的方式,提高了網(wǎng)關(guān)的高可用性,網(wǎng)關(guān)與服務(wù)之間還配置了負載均衡和服務(wù)容錯。為了實現(xiàn)微服務(wù)之間的數(shù)據(jù)同步,使用RabbitMq消息隊列實現(xiàn)消息的異步發(fā)送接收。在系統(tǒng)架構(gòu)中,所有微服務(wù)在Eureka上進行注冊,整個服務(wù)端采用API網(wǎng)關(guān)負載均衡、服務(wù)路由、請求過濾等功能,運用Zuul組件進行服務(wù)路由。為了實現(xiàn)每個服務(wù)的獨立性,降低系統(tǒng)耦合,對外只提供API接口,http遠程調(diào)用組件FeignClient。在此系統(tǒng)中,包括商家運營人員使用的后臺管理系統(tǒng)和用戶使用的前端門戶系統(tǒng)??傮w框架圖如圖1所示。

3.2靈耀商城功能設(shè)計

通過需求分析以及微服務(wù)架構(gòu)設(shè)計思想,系統(tǒng)按照功能需求分為七個獨立的微服務(wù)模塊,如圖2所示。

3.3運營人員后臺管理系統(tǒng)

運營管理人員登錄系統(tǒng)可以實現(xiàn)商品管理、人員管理、銷售管理以及權(quán)限管理。在商品管理中,通過搭建商品微服務(wù)實現(xiàn)分類管理、品牌管理、商品列表及規(guī)格參數(shù)管理。在配置文件中使用Eureka訂閱商品服務(wù),每5s就發(fā)送一次心跳,超時就過期,相關(guān)配置如圖3所示,而后編寫相應(yīng)的代碼進行CRUD處理,前端頁面進行渲染。

3.4前臺門戶網(wǎng)站

3.4.1搜索搭建搜索微服務(wù)模塊,實現(xiàn)用戶搜索某個商品。通過使用注解@EnableFeignClients開啟feign組件,定期在Eureka的注冊中心拉取搜索服務(wù),在resources的配置文件中也需要配置相應(yīng)的Eureka客戶端服務(wù),用于向Eureka訂閱相關(guān)服務(wù)。由于復(fù)雜的業(yè)務(wù)和海量數(shù)據(jù)以及高并發(fā)需求,為了提高搜索速度,搜索功能使用Elasticsearch全文檢索技術(shù),實現(xiàn)實時搜索以及分詞搜索并支持多用戶,例如搜索手機,查詢后前端頁面進行渲染如圖4所示。3.4.2購物車搭建購物車微服務(wù)。如果用戶還未登錄,用戶瀏覽商品添加購物車時,添加到本地瀏覽器的Localstorage中,支付時跳轉(zhuǎn)到登錄頁面;如果用戶已經(jīng)登錄,用戶在選擇到自己心儀的產(chǎn)品時想加入購物車,則在添加商品時會添加到Redis中,并且查看購物車時,會先查看本地瀏覽器中是否有數(shù)據(jù),若沒有數(shù)據(jù)就直接調(diào)用Redis中的數(shù)據(jù);若有數(shù)據(jù)則將二者數(shù)據(jù)合并,最后更新到數(shù)據(jù)層MySQL數(shù)據(jù)庫中。購物車可以添加多個數(shù)量,如果不滿意可以刪除訂單或者移到“我的關(guān)注”中。用戶選擇好之后,系統(tǒng)會自動計算好選擇商品的總金額,用于用戶進行結(jié)算下單,如圖5所示。3.4.3用戶注冊登錄搭建用戶注冊微服務(wù),實現(xiàn)用戶注冊。用戶注冊采用短信驗證碼的方式,通過用戶名、密碼、確認密碼、手機號以及短信驗證碼的方式進行注冊,添加信息到數(shù)據(jù)庫中。為了防止密碼泄露,使用非對稱加密的方式對密碼進行加密保存到數(shù)據(jù)庫中。搭建登錄認證微服務(wù),實現(xiàn)用戶登錄。根據(jù)注冊的用戶名和密碼進行登錄,前端獲取用戶名和密碼,后端根據(jù)用戶名查詢到相對應(yīng)的用戶id,使用相同的鹽進行加密并與數(shù)據(jù)庫中密碼項進行比較,若相同,則登錄成功。

3.5數(shù)據(jù)庫設(shè)計

根據(jù)業(yè)務(wù)需求進行數(shù)據(jù)庫設(shè)計。(1)用戶注冊相關(guān)信息,便可添加用戶信息到用戶表中,登錄時查詢用戶表是否有響應(yīng)的數(shù)據(jù)信息;(2)用戶登錄網(wǎng)站,瀏覽和查詢商品,商品的顯示按照不同通用規(guī)格參數(shù)和特有規(guī)格參數(shù)進行劃分;(3)用戶添加購物車,若登錄,便可添加至購物車信息表中,進行下單便可在訂單信息表中添加訂單信息,在訂單頁面進行查看。詳細E-R圖如圖6所示。

4結(jié)論(Conclusion)

本文主要實現(xiàn)了基于微服務(wù)架構(gòu)的一個B2C商業(yè)模式的靈耀商城的開發(fā),滿足了系統(tǒng)高并發(fā)、高可用、可擴展的需求,以及大規(guī)模用戶網(wǎng)上購物下單的基本功能需求。此前,系統(tǒng)的基本功能已開發(fā)完成,在進一步調(diào)試改進中。

參考文獻(References)

[1]馮志勇,徐硯偉,薛霄,等.微服務(wù)技術(shù)發(fā)展的現(xiàn)狀與展望[J].計算機研究與發(fā)展,2020,57(5):1103-1122.

[2]吳化堯,鄧文俊.面向微服務(wù)軟件開發(fā)方法研究進展[J].計算機研究與發(fā)展,2020,57(3):525-541.

[3]黃顯琛.基于微服務(wù)架構(gòu)的系統(tǒng)設(shè)計與實現(xiàn)[J].信息技術(shù)與信息化,2020,11(3):16-17.

[4]劉斌.基于SpringCloud的電信綜合服務(wù)保障系統(tǒng)微服務(wù)改造之路[J].中小企業(yè)管理與科技,2019(11):90-91.

[5]周永圣,候峰裕,孫雯,等.基于SpringCloud微服務(wù)架構(gòu)的進銷存管理系統(tǒng)的設(shè)計與實現(xiàn)[J].工業(yè)控制計算機,2018,31(11):129-130,133.

[6]謝孝淼.基于JAVA技術(shù)的B2C電子商城網(wǎng)站系統(tǒng)設(shè)計與實現(xiàn)[J].信息通信,2016(02)102-103.

[7]秦溧,艾青.基于Redis技術(shù)的頁面緩存研究[J].科技風,2021(12):74-76.

[8]張斌,任富彬,沈煒.基于SpringCloud的食品安全溯源系統(tǒng)的設(shè)計與實現(xiàn)[J].軟件工程,2019,22(8):27-30.

作者:張林 單位:中國科學(xué)技術(shù)大學(xué)計算機科學(xué)與技術(shù)學(xué)院