基於電商中臺架構 商品系統設計 一

2021-10-10 02:46:55 字數 2901 閱讀 4861

二、 概念定義

三、技術設計

四、 總結

為什麼採用中臺架構前幾篇已經說明了,這裡就介紹一下基礎層和平台層的功能。

商品管理:商品的基本操作

商品收藏:管理使用者收藏的商品

商品快照:儲存商品編輯的每乙個快照版本

活動打標:根據不同的活動對映到商品屬性上不同標記

銷量管理:商品的銷量統計、以及排序操作

瀏覽歷史:使用者瀏覽記錄

搜尋:不同維度對商品的搜尋

item代表產品 sku代表商品

舉例:item對應蘋果7手機 但蘋果7有黑色、白色 則sku對應黑色的蘋果7手機

對應關係如下:

前端商品:面向使用者的,在**展示銷售的,它是乙個虛擬的概念。

後端商品:面向倉庫實體商品的,比如一台電腦就建立乙個後端商品。它和倉庫有著緊密的關係,同步庫存,入庫出庫等操作都要同步到該商品資訊。

前端商品和後端商品有個對映關係,比如前端商品為電腦,則後端商品會對應乙個電腦。

後端組合商品:有些商品是可以單個售賣,也可以打包售賣,比如電腦套裝優惠,這個套裝就是乙個組合商品a,他是由電腦b、滑鼠c、鍵盤d組成。

所以這裡就有乙個對映關係a->(1b,1c,1d)。此時如果需要在**售賣,則可以建立乙個前端商品和a進行關聯。

這裡關聯關係就包括:前端商品和後端商品的對映關係、後端組合商品和單個商品的關係。根據這個關係可以確定該商品在哪些倉庫有庫存、該發貨幾個等等。

商品每次編輯都會儲存乙份快照,一來可以記錄操作日誌,二來可以追溯,比如訂單會存乙個快照商品版本,根據該版本找到下單當時的商品資訊。

打標其實就是乙個標記,比如乙個商品參加的十幾個活動,那麼怎麼在商品上儲存,我們可以使用乙個long型字段flag來儲存,long是64位,每一位代表一種型別的活動,0代表否,1代表是,通過對flag進行二進位制操作即可完成活動資訊更新。

類目也分為前後端類目,前端類目就是面向使用者,具有導航功能,而且易變。

後端類目是和商品直接關聯,很穩定。前後端類目有對映關係。

商品關聯的屬性,舉例:黑色蘋果7手機,他具有屬性為顏色,屬性值為黑色。

歷史表就是已經刪除了的商品資料表,那為什麼要把刪除的資料儲存下來,這就是電商系統的設計原則,任何表的資料只邏輯刪除,不進行物理刪除。所以很多表都會加上is_delete欄位標記是否被刪除。

但是商品表為什麼要新建一張表,這裡有兩點,1)商品表中有唯一鍵約束,(seller_id,item_code),如果刪除了放在原表,商家再次同步該商品時,因為這兩個字段相同,會影響唯一鍵約束,但又不能真正刪除,所以就將資料移至歷史表。2)商品表資料日積月累會越來越龐大,將刪除的資料遷出有利於提高原表的效能。

商品作為電商交易中的物件,對其任何的改動都至關重要,所以儲存快照一方面是把每次的更改記錄都儲存下來。另一方面是存在類似於交易訂單的場景,需要當時商品的資訊,以便處理投訴、維權。

那麼快照資料更加龐大,因為每一次的改動都會生成乙份資料,所以不能存在資料庫,而是採用外部儲存。查詢的時候需要itemid+snapshotversion,商品id和快照版本進行查詢。

首先定義乙個活動型別列舉類,說明每一位代表什麼活動。其他型別也可以,反正就是標記該商品具有某種屬性。

假如flag=0;現在商品參加某個活動,flag第三位代表該活動,則打標過程為;

flag=flag | (1 << 2)

去標同樣的邏輯。

不僅是商品表,在工作中我們會經常遇到,在需求不斷迭代的過程中,肯定會有新增欄位的需求,但如果我們新增的字段都不是關鍵字段的話(不用於檢索),比如商品表如果後端商品現在需要儲存長寬高、質量、以及一些產地等資訊,我們就可以通過擴充套件欄位的方式解決,而且還免去了對線上表加列的操作。擴充套件欄位feature其實就是json格式的字串,預留一定長度,待後面有需求在往裡面加鍵值對。

比如說加之前是這樣存的:

加了產地後就變為

但更新的時候一定注意要帶版本更新,否則併發情況將會發生資料覆蓋。這也是另外乙個設計原則,資料庫所有表都要加version欄位的原因:資料更新樂觀鎖控制。

銷量其實不是作為商品本身的乙個屬性,因為銷量是根據交易訂單成交量來動態計算出來的,但是一般電商**都會有根據銷量排序的需求,那這個怎麼實現呢。肯定是搜尋引擎來做,因為搜尋條件太多,排序條件太多,資料庫索引也支援不了各種組合查詢、排序。所以我們就根據業務需求,一般銷量一天統計一次就滿足需求了。在商品索引中新增乙個銷量字段,每天定時任務從訂單裡面統計銷量,然後再以訊息的方式,推送到搜尋引擎,搜尋排序的時候搜尋引擎就能幫我們實現這個功能。

類目設計將在後續文章詳細介紹。包括前台類目、後台類目、類目樹構建、類目快取設計、類目屬性等等。

搜尋設計將在後續文章詳細介紹。搜尋設計包括搜尋引擎選型、儲存結構設計、索引構建、搜尋、以及通用搜尋框架等等。

本文介紹了商品系統分層設計,以及每一層對應的功能和功能設計。後續還會對商品系統中設計要點、細節進行詳細介紹,比如類目、搜尋。此外,在實現中還涉及了許多中介軟體的封裝使用,所以後續還會對通用元件(通用搜尋框架、訊息框架)進行介紹。

如何設計乙個電商系統 三 商品系統

商品系統中的問題 商品系統主要就使用來維護商品的基本資訊,下面列出介個主要的版塊 商品管理 商品審核 商品 站 搜尋及批量還原 刪除操作 商品批量操作 商品分類 商品分類 商品分類的crud 商品型別 商品型別 商品的規格 引數的資訊維護 品牌管理 品牌名稱搜尋 批量操作 顯示品牌 隱藏品牌 品牌資...

電商系統中商品屬性管理

商品與cms中的內容content一樣,是個不確定具體屬性的東西,不同型別的商品,具有不同的屬性 規格,而且規格還能影響 從這一點上來看,比cms中的內容還要複雜一些。對於程式開發者來說,需要設計比較良好的模型體系,來滿足這種需求。對比ecshop iwebshop yuncart prestash...

重構電商中臺定義之商品設計

電商系統大家應該都比較熟悉,在天貓和京東購物去瀏覽商品,我們可以看到不同的產品分類,當檢視某個商品的時候,不同的商品會有不同的屬性描述,同乙個商品會有不同的型號,商品的錄入就是要實現這樣的乙個功能。在上面的描述 現了電商系統中兩個常見的概念 spu 和 sku,spu 是標準化產品單元,區分品種,s...