![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SN2Y2NzIGZxImZmZDZ4UDMmZmN4MWO2MDZkNzNkBDMk9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
妖貓商城是一個采用微服務架構springcloud 實作的電商項目。
本項目實作了權限管理、商品管理(商品、屬性、品牌、類目)等,并實作了商品詳情頁到支付的整個流程。
主要采用的技術如下:
redis:利用redis實作了微服務下的登入,商品詳情頁的緩存。
rockemq:利用rocketmq 實作了分布式事務
mongodb:利用mongodb存儲購物車
nacos:注冊和配置中心
sentinel: 降級、熔斷、限流
zookeeper:分布式鎖
等
分布式事務:異步消息解耦
交易建立成功後,訂單、券、庫存必須保證一緻性,促銷服務、商品服務、訂單服務是分庫部署的,傳統單體的事務就不能滿足要求了。這裡采用基于消息異步復原的方式,首先開始建立訂單,訂單的狀态為不可見,然後進行鎖券、減庫存的操作,操作失敗,發送復原消息,下遊的促銷和商品服務收到復原消息,進行復原操作。
支付的流程:
跳到支付寶支付成功後,首先更新支付記錄的狀态為成功,然後發送消息通知訂單系統。
訂單服務收到支付服務的通知,然後更新訂單狀态,發送訂單成功消息,通知下遊的服務做訂單成功的處理。
消息的消費:
消費過程不能保證不出異常,這裡做的方式是首先将消息存儲到本地消息表,這時候消息隊列的使命就完成了,然後背景異步的去處理消息。
定時任務去處理消費失敗的消息,本地消息表裡添加了一個處理次數的字段,當處理次數達到一定數量的時候,則該消息标記為死亡,待技術人員修複問題後,重新去處理該失敗的消息。
其次消息的消費還要保證幂等性。
妖貓商城背景:主要實作了系統管理、促銷管理、商品管理
系統管理包含使用者、角色、資源。
資源分兩種菜單和動作,菜單資源控制着前端的菜單是否添加路由并顯示,動作控制着url和頁面上的按鈕是否顯示。
權限服務首先需要開啟@EnableHttpAuth
@EnableHttpAuth
public class ProductConfig {
其次需要在配置檔案上添加,這樣該服務就開啟了權限保護,接下來在背景接口上隻需添加@LoginAuth("授權辨別")
permission:
enabled: true
前端的控制按鈕的顯示需要指令 v-action:授權辨別 。
商品管理:分為類目、品牌、屬性、商品添加、商品管理
背景類目:商品類目一般分為前端類目和背景類目,目前隻實作了背景類目
品牌:品牌和商品類目是多對多的關系。
屬性:屬性分為銷售屬性和普通屬性,銷售屬性影響商品的價格。
商品添加:
點選立即購買,未登入會引導去登入,登入成功後,就可以進入訂單送出界面
點選結算,就會跳到支付頁面,按流程向下,會看到這個頁面
點選确認支付後,并輸入交易密碼,支付成功,點選完成,就會傳回到我們的頁面
支付結果頁面
本地環境搭建:
點選startup即可啟動
2、rocketmq啟動
windows 需要配置環境變量
分别啟動nameserver和broker
3、fastdfs:可以參考下面這篇文章
4、mongo:可以參考下面這篇文章
5、内網映射:支付傳回和通知的位址,需要内網映射。
6、redis和zookeeper也需要搭建好。
pay-service下支付寶的沙箱環境配置需要修改成你的配置:
然後修改這些服務的相關配置檔案
建立各個服務的資料表
啟動所有的服務。
背景管理:
安裝依賴。
$ yarn install
如果網絡狀況不佳,可以使用 cnpm 進行加速,并使用 cnpm 代替 yarn
$ yarn run serve
啟動完成後會自動打開浏覽器通路
前端wap源碼:
同樣需要執行yarn install和yarn run serve運作。