選用了很常見的電商業務來進行SpringCloud Alibaba的實戰。
當然,因為僅僅是為了學習SpringCloud Alibaba,所以對業務進行了大幅度簡化,這里只取一個精簡版的用戶下單業務。
1、電商業務流程
電商系統下單業務流程圖:
這個流程同樣進行了簡化,一般瀏覽完商品可能不會直接下單,而是先加入購物車,這里我們略去了這一環節。
接下來,我們要對業務進行細化,可以通過時序圖來對業務流程進行細化。
2、扣庫存時機
注意看,在我們的泳道圖中,扣庫存是在用戶下訂單之后。
在電商系統里,扣庫存一般主要有兩種方式:
- 下單扣庫存:下單扣庫存是用戶體驗比較好的方式,避免用戶支付的時候發現庫存不足。缺點是不合適商品庫存有限的情況,因為未付款的訂單會影響到其他人購買這款商品。
- 支付扣庫存:支付扣庫存對用戶體驗很不好,因為用戶可能在支付的時候發現庫存不足。但是比較適合秒殺一類的業務,避免未支付的訂單占用庫存。
但是下單減庫存應該設置一個超時的時間,如果在一定時間內沒有完成支付,那么就應該及時釋放庫存。
zai
3、電商業務流程模塊划分
通過上面的時序圖,我們對電商下單的業務已經有了一個比較清楚的認識,接下來,對具體的業務模塊進行划分:
- 1、用戶模塊:需要有一個用戶服務,用於用戶基本信息的管理,包括用戶名、等級等等。
- 2、商品模塊:用戶瀏覽商品,需要有一個 商品模塊來支撐,給用戶展示商品的介紹、價格等等這些信息。
- 3、訂單模塊:用戶下單需要訂單模塊來創建訂單。
- 4、支付模塊:訂單創建完成,需要用戶付款,這里需要有一個 支付模塊 來實現支付功能,用戶成功完成支付之后,需要把訂單的狀態變更為 「已支付」。
- 5、庫存模塊:支付完成,就需要運營人員發貨,這個步驟,需要扣減對應商品的庫存數量,所以要有庫存模塊,發貨完成后,還需要把訂單狀態變更為「已發貨」。
當然,真實的業務比這要復雜很多,我們只考慮一個簡單的用戶下單業務,所以主要業務模塊就是這些。
我們采用縱向划分的服務划分方式,以義務為維度,對服務進行划分。
"簡單的事情重復做,重復的事情認真做,認真的事情有創造性地做!"——
我是三分惡,可以叫我老三/三分/三哥/三子,一個能文能武的全棧開發,咱們下期見!
參考:
【1】:小專欄 SpringCloudAlibaba微服務實戰
【2】:電商系統是如何設計的?
【4】:詳解:電商前端庫存邏輯的設計