tft每日頭條

 > 科技

 > 電商系統結構簡單介紹

電商系統結構簡單介紹

科技 更新时间:2025-04-17 07:19:27

導讀:電商業務與我們的生活息息相關,大家可能對電商多少也有一些了解,事實上,即使是一個最小化的電商系統,也依然是非常複雜的。

所以,我們先花一點時間,一起以一個創業公司的CTO的視角,設計一個最小化的電商系統,并以此理清電商系統的架構。讓大家對電商系統的業務邏輯、系統架構、核心業務流程有一個基本的認知。

作者:李玥

來源:華章科技

電商系統結構簡單介紹(手把手教你從零設計電商系統)1

新公司很快就成立了,你成了新公司的CTO。關于改變世界,目前唯一能确定的是,首先要做一個電商系統。具體要做成什麼樣,目前還不清楚。你需要與老闆讨論業務需求。

  • 你:“咱們要做的業務模式是C2C、B2C還是B2B呢?”
  • 老闆:“什麼B?什麼C?我不懂你說的那些技術名詞。”
  • 你:“這麼說吧,你要做一個某寶網,還是某東網,還是某848網呢?”
  • 老闆:“不都是一樣的嗎?它們之間有什麼區别?你趕緊做一個出來我看看不就知道了?!”

故事發展到這裡,作為程序員的你是不是有一種似曾相識的感覺?現實就是,需求永遠不明确,永遠在變化,唯一不變的隻有變化。優秀的程序員适應變化,并且擁抱變化。在需求還不太明确的情況下,比較可行的方案就是,首先搭建不太會發生變化的核心系統,然後盡量簡單地實現一個最小化的系統,後續再逐步叠代和完善。

01 設計電商系統的核心流程

接下來,我們一起設計這個電商的核心系統。

遵照軟件工程的一般規律,我們先從需求階段開始。那麼,需求分析應該如何做呢?理想情況下,系統分析師或産品經理應該負責完成需求分析的任務。但是,現實中絕大多數情況下,你得到的所謂的“需求”,很有可能就是一兩句話。需求分析的工作最終往往是由開發者完成的。

很多項目交付以後,仍需要不斷地進行修改和變更,用戶不滿意,開發者也很痛苦,造成這個問題的根本原因其實就是缺失了需求分析的步驟。所以,為了後續工作能夠順利開展,每位開發者都應該掌握一些用于需求分析的方法。

那麼,開發者進行需求分析時應該做些什麼呢?這裡先不介紹那些做需求分析的方法和理論,隻告訴你最重要、最關鍵的一個點:不要一上來就設計功能,而是先明确下面這兩個問題的答案。

  1. 這個系統(或者功能)是給哪些人用的?
  2. 這些人使用這個系統是為了解決什麼問題?

這兩個問題的答案,我們稱之為業務需求。那麼,對于我們将要設計的電商系統,其業務需求又是什麼呢?如果大家很熟悉電商的業務,那麼回答這兩個問題應該很容易。

第一個問題,電商系統是給哪些人用的?首先是買東西的人,即“用戶”;其次是賣東西的人,即“運營”;還有一個非常重要的角色就是出錢的人,即“管理者”(請記住,在設計任何一個系統的時候,管理者的意見都是非常重要的)。綜上所述,電商系統是面向用戶、運營和管理者開發的。

第二個問題,用戶、運營和管理者使用電商系統分别想要解決什麼問題?這個也很容易回答,用戶為了買東西,運營為了賣東西,管理者需要通過系統了解自己所得的收益。

這兩個問題的答案,或者說業務需求,稍加細化後,可以用圖1-1進行清晰的表述。

電商系統結構簡單介紹(手把手教你從零設計電商系統)2

▲圖1-1 電商系統用例圖

圖1-1在UML(統一建模語言)中稱為用例圖(Use Case),是我們進行需求分析的時候所要畫的第一張圖。用例圖可用于回答業務需求中的兩個關鍵問題,即這個系統給誰用?他們用這個系統是為了解決什麼問題?

一般來說,業務需求與我們要設計的系統關系不大。為什麼這麼說呢?因為我們将圖1-1中的用例,放在傳統的商業企業(比如,一個小雜貨鋪、一個線下實體商場或商店,或者一個做電視購物的公司)中也是适用的,所以,做業務需求的主要目的是理清楚業務場景是怎樣的。

下面就來分析電商系統的業務流程。很顯然,電商系統最主要的業務流程,一定是購物流程。購物流程很簡單,具體流程如圖1-2所示。

所有電商的購物流程幾乎都是如此,下面就來分析一下這個流程。

電商系統結構簡單介紹(手把手教你從零設計電商系統)3

▲圖1-2 電商系統購物流程圖

流程從用戶選購商品開始,用戶首先在App中浏覽商品,找到心儀的商品之後,把商品添加到購物車,選完商品之後,打開購物車,提交訂單。下單結算之後,用戶就可以支付了。支付成功後,運營人員會為已經支付的訂單發貨,為用戶郵寄相應的商品。最後,用戶收到商品并确認收貨。至此,一個完整的購物流程就結束了。

02 根據流程劃分功能模塊

接下來,我們再進一步細化電商購物的業務流程,看一下電商系統是如何實現該流程的。圖1-3所示的是細化之後的電商系統購物流程時序圖(Sequence Diagram)。

電商系統結構簡單介紹(手把手教你從零設計電商系統)4

▲圖1-3 電商系統購物流程時序圖

下面就來詳細講解圖1-3所示的時序圖中的各個步驟。

  1. 用戶浏覽商品,這個步驟需要通過一個商品模塊來展示商品詳情頁,用戶可以從中獲取所浏覽商品的詳細介紹和價格等信息。
  2. 然後,用戶把選好的商品加入購物車,這個步驟需要使用一個購物車模塊來維護用戶購物車中的商品。
  3. 接下來是用戶下單,這個步驟需要基于一個訂單模塊來創建新訂單。訂單創建好了之後,系統需要把訂單中的商品從購物車中删減掉。
  4. 訂單創建完成後,系統需要引導用戶付款,即發起支付流程,可通過一個支付模塊來實現支付功能,用戶成功完成支付之後,系統需要把訂單的狀态變更為“已支付”。
  5. 成功支付之後,運營人員就可以發貨了,發貨之後,系統需要扣減對應商品的庫存數量,這個步驟需要基于一個庫存模塊來實現庫存數量的變更,同時系統還需要把訂單狀态變更為“已發貨”。
  6. 最後,用戶收到商品,在系統中确認收貨,系統需要把訂單狀态變更為“已收貨”,流程結束。

這個流程涉及5大功能模塊,即商品、購物車、訂單、支付和庫存,這5大模塊就是一個電商系統中的核心功能模塊。

當然,僅有這5個模塊是不夠的,因為我們隻分析了“購物”這個最主要的流程,并沒有完全涵蓋業務需求中的全部用例,比如,運營人員進貨、管理者查看報表等還沒有覆蓋到。

相比購物流程,剩下的幾個用例和流程都相對簡單一些,我們可以采用同樣的方法來分析其他的功能模塊。這裡将省略分析過程,直接給出我們所要實現的電商系統的功能模塊劃分(如圖1-4所示)。

電商系統結構簡單介紹(手把手教你從零設計電商系統)5

▲圖1-4 電商系統功能模塊劃分

圖1-4使用了UML中的包圖(Package Diagram)來表示電商系統的功能模塊。

整個系統按照功能,可以劃分為10個模塊,除了購物流程中涉及的商品、訂單、購物車、支付和庫存這5個模塊之外,還補充了促銷、用戶、賬戶、搜索推薦和報表這5個模塊,這些都是構建一個電商系統必不可少的功能模塊。下面就來逐一說明每個模塊需要實現的功能。

  1. 商品:維護和展示商品的相關信息。
  2. 訂單:維護訂單信息和訂單狀态,計算訂單金額。
  3. 購物車:維護用戶購物車中商品的信息。
  4. 支付:負責與系統内外部的支付渠道對接,實現支付功能。
  5. 庫存:維護商品的庫存信息。
  6. 促銷:制定促銷規則,計算促銷優惠信息。
  7. 用戶:維護系統的用戶信息,注意,用戶模塊是一個業務模塊,一般不負責用戶的登錄和認證,這是兩個完全不同的功能。
  8. 賬戶:賬戶模塊負責維護用戶的賬戶信息。
  9. 搜索推薦:提供商品搜索功能,并負責各種商品列表頁和促銷頁的組織和展示,簡單地說就是,搜索推薦決定用戶優先看到哪些商品。
  10. 報表:實現數據統計和分析功能,生成報表,為管理者進行經營分析和決策提供數據信息。

這裡需要特别說明的是,促銷模塊是電商系統中最複雜的一個模塊。各種優惠券、滿減、返現等促銷規則,每一條都非常複雜,再加上這些規則往往還要疊加計算,有時甚至會複雜到連制定促銷規則的人都算不清楚。

所有電商公司無一例外都曾因為促銷規則制定失誤,導緻商品實際售價遠低于成本價,使公司受到一定程度的損失。盡管如此,五花八門的促銷活動依然是提升銷量最有效的手段,因此需要充分利用。

作為電商系統的設計者,我們需要把促銷規則的變化和複雜性控制在促銷模塊内部,不能因為一個促銷模塊而導緻整個電商系統都變得非常複雜,否則設計和實現将會很難。

一種可行的做法是,把促銷模塊與其他模塊的接口設計得相對簡單和固定,這樣系統的其他模塊就不會因為新的促銷規則改變而随之進行改變。

在創建訂單時,訂單模塊需要把商品和價格信息傳給促銷模塊,促銷模塊返回一個可以使用的促銷列表,用戶選擇對應的促銷和優惠,訂單模塊把商品、價格、促銷優惠等信息,再次傳給促銷模塊,促銷模塊再返回促銷之後的價格。在最終生成的訂單中,系統隻需要記錄訂單使用了哪幾種促銷規則,以及最終的促銷價格就可以了。

這樣,無論促銷模塊如何變化,訂單和其他模塊的業務邏輯都不需要随之改變。

至此,我們就完成了一個電商系統的概要設計,大家對電商系統應該也有了一個初步的了解。

03 小結

下面就來回顧一下一個電商系統的設計中所包含的核心要點。

首先,電商系統面向的角色是:用戶、運營人員和管理者。這三個角色對電商系統的需求是:用戶通過系統來購物,運營人員負責商品的銷售,管理者關注系統中的經營數據。

電商系統最核心的流程是用戶購物的流程,購物流程從用戶浏覽選購商品開始,加購、下單、支付、運營人員發貨、用戶确認收貨,至此電商系統的購物流程結束。

細化這個流程之後,我們可以分析出支撐這個流程的核心功能模塊:商品、訂單、購物車、支付和庫存。除此之外,一個完整的電商系統還包括促銷、用戶、賬戶、搜索推薦和報表這些必備的功能模塊。

作為一名開發者,在做需求分析的時候,需要把握的一個要點是:不要一上來就設計功能,而是要先理清業務需求。這也是本文反複強調的兩個問題:這個系統是給哪些人用的?他們分别用這個系統來解決什麼問題?這樣就可以确保做出來的系統大體上不會偏離用戶的預期。

最後,在講解系統功能模塊劃分的時候,介紹了一個能夠有效降低系統複雜度的設計經驗。那就是,如果系統業務是複雜而多變的,那麼請盡量識别出這部分複雜業務的邊界,将複雜業務控制在一個模塊内部,從而避免将這種複雜度擴散到整個系統中去。

關于作者:李玥,美團基礎技術部高級技術專家,極客時間《後端存儲實戰課》《消息隊列高手課》等專欄作者。曾在浪潮集團、當當網、京東零售等公司任職。從事互聯網電商行業基礎架構領域的架構設計和研發工作多年,曾多次參與雙十一和618電商大促。專注于分布式存儲、雲原生架構下的服務治理、分布式消息和實時計算等技術領域,緻力于推進基礎架構技術的創新與開源。

本文摘編自《電商存儲系統實戰:架構設計與海量數據處理》,經出版方授權發布。(ISBN:978-7-111-69741-1)

電商系統結構簡單介紹(手把手教你從零設計電商系統)6

延伸閱讀《電商存儲系統實戰》

推薦語:基于實戰案例系統講解電商系統的存儲設計,詳細分析不同規模存儲系統的構建方法。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved