1. 程式人生 > >基於微服務的分散式電商系統-妖貓商城

基於微服務的分散式電商系統-妖貓商城

妖貓商城是一個採用微服務框架springcloud 實現的電商專案。

本專案實現了許可權管理、商品管理(商品、屬性、品牌、類目)等,並實現了商品詳情頁到支付的整個流程。

主要採用的技術如下:

redis:利用redis實現了微服務下的登入,商品詳情頁的快取。

rockemq:利用rocketmq 實現了分散式事務

mongodb:利用mongodb儲存購物車

nacos:註冊和配置中心

sentinel: 降級、熔斷、限流

zookeeper:分散式鎖

 

分散式事務:非同步訊息解耦

交易建立成功後,訂單、券、庫存必須保證一致性,促銷服務、商品服務、訂單服務是分庫部署的,傳統單體的事務就不能滿足要求了。這裡採用基於訊息非同步回滾的方式,首先開始建立訂單,訂單的狀態為不可見,然後進行鎖券、減庫存的操作,操作失敗,傳送回滾訊息,下游的促銷和商品服務收到回滾訊息,進行回滾操作。

 

支付的流程:

跳到支付寶支付成功後,首先更新支付記錄的狀態為成功,然後傳送訊息通知訂單系統。

訂單服務收到支付服務的通知,然後更新訂單狀態,傳送訂單成功訊息,通知下游的服務做訂單成功的處理。

訊息的消費:

消費過程不能保證不出異常,這裡做的方式是首先將訊息儲存到本地訊息表,這時候訊息佇列的使命就完成了,然後後臺非同步的去處理訊息。

定時任務去消費處理失敗的訊息,本地訊息表裡添加了一個處理次數的欄位,當處理次數達到一定數量的時候,則該訊息標記為死亡,待技術人員修復問題後,在重新去處理該失敗的訊息。

其次訊息的消費還要保證冪等性。

 

妖貓商城後臺:主要實現了系統管理、促銷管理、商品管理

系統管理包含使用者、角色、資源。

 

 

資源分兩種選單和動作,選單資源控制著前端的選單是否新增路由並顯示,動作控制著url和頁面上的按鈕是否顯示。

關於許可權在服務上首先新增@EnableHttpAuth

@EnableHttpAuth
public class ProductConfig {

其次配置檔案上新增,這樣該服務就開啟了許可權保護,接下來在後臺介面上只需新增@LoginAuth("授權標識")

permission:
  enabled: true

前端的控制按鈕的顯示需要指令 v-action:授權標識 。

 

商品管理:分為類目、品牌、屬性、商品新增、商品管理

後臺類目:商品類目一般分為前端類目和後臺類目,目前只實現了後臺類目

 

品牌:品牌和商品類目是多對多的關係。

屬性:屬性分為銷售屬性和普通屬性,銷售屬性影響商品的價格。

商品新增:

 

 

前臺可以通過連結:http://localhost:8080/#/goods?id=22 (id替換成新建立的商品id)進入商品詳情頁

 

點選立即購買,未登入會引導去登入,登入成功後,就可以進入訂單提交介面

 

點選結算,就會跳到支付頁面,按流程向下,會看到這個頁面

點選確認支付後,並輸入交易密碼,支付成功,點選完成,就會返回到我們的頁面

支付結果頁面

 

本地環境搭建:

後臺服務原始碼地址:https://gitee.com/suzhe/ymall.git

後臺管理系統原始碼地址:https://gitee.com/suzhe/ymall-manage.git

前臺wap原始碼地址:https://gitee.com/suzhe/ymall-webapp.git

個別軟體的windows版本:https://pan.baidu.com/s/1TGk4CbPCII2CdwJePutC4A

1、註冊中心nacos:官網 https://nacos.io/zh-cn/docs/quick-start.html

點選startup即可啟動

2、rocketmq啟動

windows 需要配置環境變數

分別啟動nameserver和broker

3、fastdfs:可以參考下面這篇文章

https://my.oschina.net/suzheworld/blog/2991071

4、mongo:可以參考下面這篇文章

https://my.oschina.net/suzheworld/blog/3031248

5、內網對映:支付返回和通知的地址,需要內網對映。

https://natapp.cn/

6、redis和zookeeper也需要搭建好。

然後修改這些服務的相關配置檔案

然後啟動所有的服務。

 

後臺管理:

安裝依賴。

$ yarn install

如果網路狀況不佳,可以使用 cnpm 進行加速,並使用 cnpm 代替 yarn

$ yarn run serve

啟動完成後會自動開啟瀏覽器訪問

 

前端wap原始碼:

同樣需要執行yarn install和yarn run serve執