企業級電商平臺提供商,為企業級商家提供電商平臺搭建及解決方案服務

全國熱線:4008-868-127

高并發訂單系統架構設計(二)

2019-10-02 1065
分類: 技術干貨

電商系統訂單成交后,買家需要查詢訂單的時候,只有userid,并不知道訂單存在哪個庫哪張表中,從每個庫每個表中遍歷一遍不現實。所以還要對訂單號進行改進,之前是:時間戳+機器ID+自增序列。

高并發下單主要包括以下幾個方面:

分庫分表;

多應用實例全局唯一訂單號;

數據庫連接;

買家查詢訂單;

賣家查詢訂單;

擴容問題;

業務拆分;

高并發訂單系統架構設計(二)

一、分庫分表

隨著電商系統訂單量的增長,訂單管理系統開發數據庫的發展主要經歷以下幾個步驟: 

- 1主-1從架構 ;

- 雙主-多從架構,讀寫分離 ;

- 表分區,提高并發 ;

- 分表,提高并發 ;

- Master更換SSD ;

- 分庫,分表,提高并發;

分庫分表實現過程

電商系統訂單分成16個庫,每個庫64個表進行存儲,總共1024個表,mysql單表性能超過千萬級別會導致性能嚴重下降,假設按千萬計算,最高可以存儲百億級訂單。隨著存儲問題的解決,但復雜度會隨著增加:

首先是多庫怎么保證生成的電商系統訂單號全局唯一; 

其次電商訂單管理系統查詢復雜度的增加; 

買家查詢電商訂單時,應該去哪個庫哪個表里查找,賣家應該去哪查; 

再大的存儲量,隨著數據量的增長,終究是會遇到瓶頸,該怎么擴容。

二、全局唯一訂單號

這里采用Twitter snowflake方案,全劇唯一ID生成由:時間戳+機器ID+自增序列(+userid后兩位),訂單的生成過程直接在應用實例中生成,直接在內存中計算,且計算過程分散到每臺應用實例中,解決性能問題,userid后兩位在后面解釋。

三、數據庫連接問題

分庫分表后,要連接數據庫變的復雜起來,分為兩種電商方案:

1、jdbc直連

此種方式需要在應用代碼中,自己計算訂單應該進入哪個庫,可取訂單的后兩位,先對庫16進行取模,再對表64取模,從而確定。優點是直連數據庫性能更好,缺點是代碼復雜度增加。

2、通過中間價連接

中間價可以使用阿里的mycat連接,具體使用查看mycat文檔。優點:代碼實現簡單,跟分庫前差不多。

3、買家查詢訂單

電商系統訂單成交后,買家需要查詢訂單的時候,只有userid,并不知道訂單存在哪個庫哪張表中,從每個庫每個表中遍歷一遍不現實。所以還要對訂單號進行改進,之前是:時間戳+機器ID+自增序列。現在此訂單號的后面加上userid的后兩位,時間戳+機器ID+自增序列+userid后兩位。訂單入庫取模的后兩位即userid后兩位,即同一個買家的所有訂單都會存入同一個表中,通過此設計買家即可找到訂單號應該在哪個表中。

4、賣家查詢訂單

賣家查詢訂單不能像買家一樣,賣家的訂單分散在訂單表的各個表中。賣家訂單需要在業務拆分過程中,將電商系統訂單按賣家維度存入到別的庫和表中。此維度不僅賣家可以查詢到對應所有訂單,并且方便統計、分析。

5、擴容問題

由于此方案已經不是單純的通過電商系統訂單號查找訂單,還需要通過userid查找訂單,其次是電商系統訂單具有時間特性,用戶查詢的大部分都是最近的訂單,3月前的訂單很少會查看,所以不適合進行擴容,特別適合遷移歷史數據,將3個月前的數據遷移到歷史數據庫中,從而解決容量增長的問題。

6、業務拆分

電商系統訂單過程,業務極其復雜,不只是電商系統訂單號的生成插入等,還要減庫存、支付等一系列的操作。所以應該通過消息隊列將業務進行拆分,本步驟只做電商系統訂單生成的操作,通過消息隊列實現數據的最終一致性。

作者:章紹龍 ,來源:CSDN ;

<數商云(www.martinakohl.com)是國內知名企業級電商平臺提供商,為企業級商家提供最佳的系統開發(多種模式電商平臺搭建:B2B/B2B2C/B2C/O2O/新零售等)、供應系統搭建電商解決方案服務>

網站聲明:以上內容為數商云電子商務系統網站的原創文章,如需轉載,請注明出處,謝謝合作!
電商頭條文章
1 阿里中臺建設全解密:包含哪些內容?如何發揮作用?
數據是從業務系統產生的,而業務系統也需要數據分析的結果,那么是否可以把業務系統的數據存儲和計算能力抽離,由單獨的數據處理平臺提供存儲和計算能力,不僅可以簡化業務系統的復雜性,而且可以讓各個系統采用更合適的技術,專注做本身擅長的事?這個專用的數據處理平臺即數據中臺。
2 數商云互聯網采購解決方案丨為供應商管理提供了新的技術手段
通過數商云提供的集采平臺和聯邦儲備平臺等信息網絡的建設,發電企業和下游供應商可以逐步共享采購信息,提高供應商管理水平,將采購需求計劃與庫存控制和平衡庫相結合,加快庫存周轉,實現集中采購和電子采購。
3 珠寶零售企業管理系統 – 原系統分析
作為服務端的SQL Server 2005放置在服務器上,作為客戶端的“總部管理系統”和“分店管理系統”分別布置在客戶機上。服務端通過100M光纖接入互聯網,對外開發SQL的1433端口以便客戶端連接;客戶端通過各自的ADSL接入互聯網,程序打開時自動連接服務器。
4 開發電商平臺選擇JAVA語言還是PHP語言?
現在很多行業都通過電子商務拓展業務,所以商城系統開發成為很多企業的剛性需求。一般有一點技術基礎的客戶應該知道目前商城系統開發主流語言有兩個,PHP和Java。那么很多客戶朋友會糾結是選擇哪個語言開發好呢?其實PHP和Java都是非常主流的開發語言,并且市面上均有很成功的大型平臺,所以可以說這兩個開發語言各有千秋吧。
5 一份b2b系統分析報告
目前的中國網絡發展的規模決定了其市場容量和商業機會的有限,真正具有消費實力并能形成購買力的群體,依然遠不足以與現實生活中的傳統商業模式相匹敵,同時,目前網絡人口的結構也決定了只有少數商品可能馬上在網絡上銷售。要開展B2B電子商務,主要有以下功能:
汤姆影院tom最新网址 console.log();