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