精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

vivo全球商城:電商交易平臺設計

移動開發
本文介紹了交易平臺的設計理念和關鍵技術方案,以及實踐過程中的思考與挑戰。

一、背景

vivo官方商城經過了七年的迭代,從單體架構逐步演進到微服務架構,我們的開發團隊沉淀了許多寶貴的技術與經驗,對電商領域業務也有相當深刻的理解。

去年初,團隊承接了O2O商城的建設任務,還有即將成立的禮品中臺,以及官方商城的線上購買線下門店送貨需求,都需要搭建底層的商品、交易和庫存能力。

為節約研發與運維成本,避免重復造輪子,我們決定采用平臺化的思想來搭建底層系統,以通用能力靈活支撐上層業務的個性化需求。

包括交易平臺、商品平臺、庫存平臺、營銷平臺在內的一整套電商平臺化系統應運而生

圖片

本文將介紹交易平臺的架構設計理念與實踐,以及上線后持續迭代過程中的挑戰與思考。

二、整體架構

2.1 架構目標

除了高并發、高性能、高可用這三高外,還希望做到:

  1. 低成本
    注重模型與服務的可重用性,靈活支撐各業務的個性化需求,提高開發效率,降低人力成本。
  2. 高擴展
    系統架構簡單清晰,應用系統間耦合低,容易水平擴展,業務功能增改方便快捷。

2.2 系統架構

(1)電商平臺整體架構中的交易平臺

圖片

(2)交易平臺系統架構

圖片

2.3 數據模型

圖片

三、關鍵方案設計

3.1 多租戶設計

(1)背景和目標

  • 交易平臺面向多個租戶(業務方),需要能夠存儲大量訂單數據,并提供高可用高性能的服務。
  • 不同租戶的數據量和并發量可能有很大區別,要能根據實際情況靈活分配存儲資源。

(2)設計方案

  • 考慮到交易系統OLTP特性和開發人員熟練程度,采用MySQL作為底層存儲、ShardingSphere作為分庫分表中間件,將用戶標識(userId)作為分片鍵,保證同一個用戶的訂單落在同一個庫中。
  • 接入新租戶時約定一個租戶編碼(tenantCode),所有接口都要帶上這個參數;租戶對數據量和并發量進行評估,分配至少滿足未來五年需求的庫表數量。
  • 租戶與庫表的映射關系:租戶編碼 -> {庫數量,表數量,起始庫編號,起始表編號}。

通過上面的映射關系,可以為每個租戶靈活分配存儲資源,數據量很小的租戶還能復用已有的庫表。

示例一:

新租戶接入前已有4庫*16表,新租戶的訂單量少且并發低,直接復用已有的0號庫0號表,映射關系是:租戶編碼-> 1,1,0,0

示例二:

新租戶接入前已有4庫*16表,新租戶的訂單量多但并發低,用原有的0號庫中新建8張表來存儲,映射關系是:租戶編碼-> 1,8,0,16

示例三:

新租戶接入前已有4庫*16表,新租戶的訂單量多且并發高,用新的4庫*8表來存儲,映射關系是:租戶編碼-> 4,8,4,0

圖片

用戶訂單所屬庫表計算公式

庫序號 = Hash(userId) / 表數量 % 庫數量 + 起始庫編號
表序號 = Hash(userId) % 表數量 + 起始表編號

可能有小伙伴會問:為什么計算庫序號時要先除以表數量?下面的公式會有什么問題?

庫序號 = Hash(userId) % 庫數量 + 起始庫編號
表序號 = Hash(userId) % 表數量 + 起始表編號

答案是,當庫數量和表數量存在公因數時,會存在傾斜問題,先除以表數量就能剔除公因數。

以2庫4表為例,對4取模等于1的數,對2取模也一定等于1,因此0號庫的1號表中不會有任何數據,同理,0號庫的3號表、1號庫的0號表、1號庫的2號表中都不會有數據。

路由過程如下圖所示:

圖片

(3)局限性和應對辦法

  • 全局唯一ID

問題:分庫分表后,數據庫自增主鍵不再全局唯一,不能作為訂單號來使用。且很多內部系統間的交互接口只有訂單號,沒有用戶標識這個分片鍵。

方案:如下圖所示,參考雪花算法來生成全局唯一訂單號,同時將庫表編號隱含在其中(兩個5bit分別存儲庫表編號),這樣就能在沒有用戶標識的場景下,從訂單號中獲取庫表編號。

圖片


  • 全庫全表搜索

問題:管理后臺需要根據各種篩選條件,分頁查詢所有滿足條件的訂單。

方案:將訂單數據冗余存儲一份到搜索引擎Elasticsearch中,滿足各種場景下的快速靈活查詢需求。

3.2 狀態機設計

(1)背景

  • 之前做官方商城時,由于是定制化業務開發,各類型的訂單和售后單的狀態流轉都是寫死的,比如常規訂單在下單后是待付款,付款后是待發貨,發貨后是待收貨;虛擬商品訂單不需要發貨,沒有待發貨狀態。
  • 現在要做的是平臺系統,不可能再為每個業務方做定制化開發,否則會導致頻繁改動發版,代碼錯綜冗余。

(2)目標

  • 引入訂單狀態機,能為每個業務方配置多套差異化的訂單流程,類似于流程編排。
  • 新增訂單流程時,盡可能不改動代碼,實現狀態和操作的可復用性。

(3)方案

  • 在管理后臺為每個租戶維護一系列訂單類型,數據轉化為JSON格式存儲在配置中心,或存儲在數據庫并同步到本地緩存中。
  • 每個訂單類型的配置包括:初始訂單狀態,以及每個狀態下允許的操作和操作之后的目標狀態。
  • 當訂單在執行某個動作時,使用訂單狀態機來修改訂單狀態。
    訂單狀態機的公式是:
    StateMachine(E,S —> A , S’)
    表示訂單在事件E的觸發下執行動作A,并從原狀態S轉化為目標狀態S’
  • 每個訂單類型配置完成后,生成數據的結構是
/**
* 訂單流程配置
**/
@Data
public class OrderFlowConfig implements Serializable {
/**
* 初始訂單狀態編碼
**/
private String initStatus;
/**
* 每個訂單狀態下,可執行的操作及執行操作后的目標狀態
* Map<原狀態編碼, Map<訂單操作類型編碼, 目標狀態編碼>>
*/
private Map<String, Map<String, String>> operations;
}
  • 訂單商品行狀態機、售后單狀態機,也用同樣的方式實現

3.3 通用操作觸發器

(1)背景

業務中通常都會有這樣的延時需求,我們之前往往通過定時任務來掃描處理。

  • 下單后多久未支付,自動關閉訂單
  • 申請退款后商家多久未審核,自動同意申請
  • 訂單簽收后多久未確認收貨,自動確認收貨

(2)目標

  • 業務方有類似的延時需求時,能夠有通用的方式輕松實現

(3)方案

設計通用操作觸發器,具體步驟為:

  1. 配置觸發器,粒度是狀態機的流程類型。
  2. 創建訂單/售后單時或訂單狀態變化時,如果有滿足條件的觸發器,發送延遲消息。
  3. 收到延遲消息后,再次判斷執行條件,執行配置的操作。

觸發器的配置包括:

  1. 注冊時間:可選訂單創建時,或訂單狀態變化時
  2. 執行時間:可使用JsonPath表達式選取訂單模型中的時間,并可疊加延遲時間
  3. 注冊條件:使用QLExpress配置,滿足條件才注冊
  4. 執行條件:使用QLExpress配置,滿足條件才執行操作
  5. 執行的操作和參數

3.4 分布式事務

對交易平臺而言,分布式事務是一個經典問題,比如:

  • 創建訂單時,需要同時扣減庫存、占用優惠券,取消訂單時則需要進行回退。
  • 用戶支付成功后,需要通知發貨系統給用戶發貨。
  • 用戶確認收貨后,需要通知積分系統給用戶發放購物獎勵的積分。

我們是如何保證微服務架構下數據一致性的呢?首先要區分業務場景對一致性的要求。

(1)強一致性場景

比如訂單創建和取消時對庫存和優惠券系統的調用,如果不能保證強一致,可能導致庫存超賣或優惠券重復使用。

對于強一致性場景,我們采用Seata的AT模式來處理,下面的示意圖取自seata官方文檔。

圖片

(2)最終一致性場景

比如支付成功后通知發貨系統發貨,確認收貨后通知積分系統發放積分,只要保證能夠通知成功即可,不需要同時成功同時失敗。

對于最終一致性場景,我們采用的是本地消息表方案:在本地事務中將要執行的異步操作記錄在消息表中,如果執行失敗,可以通過定時任務來補償。

圖片

3.5 高可用與安全設計

  • 熔斷

使用Hystrix組件,對依賴的外部系統添加熔斷保護,防止某個系統故障的影響擴大到整個分布式系統中。

  • 限流

通過性能測試找出并解決性能瓶頸,掌握系統的吞吐量數據,為限流和熔斷的配置提供參考。

  • 并發鎖

任何訂單更新操作之前,會通過數據庫行級鎖加以限制,防止出現并發更新。

  • 冪等性

所有接口均具備冪等性,上游調用我們接口如果出現超時之類的異常,可以放心重試。

  • 網絡隔離

只有極少數第三方接口可通過外網訪問,且都有白名單、數據加密、簽名驗證等保護,內部系統交互使用內網域名和RPC接口。

  • 監控和告警

通過配置日志平臺的錯誤日志報警、調用鏈的服務分析告警,再加上公司各中間件和基礎組件的監控告警功能,讓我們能夠能夠第一時間發現系統異常。

3.6 其他考慮

  • 是否用領域驅動設計

考慮到團隊非敏捷型組織架構,又缺少領域專家,因此沒有采用

  • 高峰期性能瓶頸問題

大促和推廣期間,特別是爆款搶購時的流量可能會觸發限流,導致部分用戶被拒之門外。因為無法準確預估流量,難以提前擴容。

可以通過主動降級方案增加并發量,比如同步入庫切為異步入庫、db查詢轉為cache查詢、只能查到最近半年的訂單等。

考慮到業務復雜度和數據量級還處在初期,團隊規模也難以支撐,這些設計有遠期計劃,但暫時還沒做。(架構的合適性原則,殺雞用牛刀,你愿意也行)。

四、總結與展望

我們在設計系統時并沒有一味追求前沿技術和思想,面對問題時也不是直接采用業界主流的解決方案,而是根據團隊和系統的實際狀況來選取最合適的辦法。好的系統不是在一開始就被大牛設計出來的,而是隨著業務的發展和演進逐漸被迭代出來的。

目前交易平臺已上線一年多,接入了三個業務方,系統運行平穩,公司內有交易/商品/庫存等需求的新業務,以及存量業務在遇到系統瓶頸需要升級時,都可以復用這塊能力。

上游業務方數量的增加和版本的迭代,對平臺系統的需求源源不斷,平臺的功能得到逐漸完善,架構也在不斷演進,我們正在將履約模塊從交易平臺中剝離出來,進一步解耦,為業務持續發展做好儲備。

責任編輯:龐桂玉 來源: vivo互聯網技術
相關推薦

2022-09-07 21:26:40

取貨碼vivo電商平臺

2015-01-09 16:54:00

2023-03-09 09:31:58

架構設計vivo

2010-04-29 16:22:39

Juniper交易平臺

2015-07-22 10:54:23

電商平臺源碼

2012-10-23 14:08:49

白忙活的體驗

2014-11-17 11:19:37

2012-06-25 16:59:16

2014-08-19 09:34:01

2017-03-14 14:45:03

互聯網

2014-06-24 13:33:34

2010-08-03 16:45:57

VMware財富證券實時在線交易平臺

2014-02-21 15:35:30

應用交付高頻交易

2021-10-19 22:41:51

區塊鏈電商技術

2016-10-13 09:26:00

2021-03-29 10:13:35

數據泄漏漏洞網絡攻擊

2014-02-04 08:11:11

智能硬件電商平臺ShopLocket

2010-07-23 09:47:18

甲骨文

2014-04-28 21:37:31

上汽集團O2O電商平臺

2025-04-25 17:53:52

點贊
收藏

51CTO技術棧公眾號

欧美人与禽zozo性伦| 国产精品小仙女| 亚洲人成网站色ww在线| 免费看污污网站| 麻豆tv免费在线观看| 国产精品小仙女| 国产精品aaa| 少妇影院在线观看| 西瓜成人精品人成网站| 欧美日高清视频| 成人毛片一区二区| 久久婷婷五月综合| 波多野结依一区| 久久久精品免费免费| 91免费视频网站| 日韩不卡在线播放| 亚洲区综合中文字幕日日| 亚洲第一区在线观看| 中文字幕第17页| 第一福利在线视频| 国产很黄免费观看久久| 欧美一级在线播放| 懂色av懂色av粉嫩av| 九九视频免费观看视频精品| 日韩欧美成人激情| 国产小视频精品| 手机在线观看av网站| 亚洲日本韩国一区| 色阁综合av| 日本中文字幕在线观看视频| 亚洲美女视频| 中文字幕欧美国内| 欧美亚一区二区三区| 一区二区在线视频观看| 欧美三级电影在线看| 精品无人区一区二区三区| 国产精品久久久久久免费免熟| 国产农村妇女精品一二区| 欧美成人精品激情在线观看 | 美女999久久久精品视频 | 精品国产成人| 亚洲精品有码在线| 国产又黄又粗又猛又爽的视频| 四虎影视国产在线视频| 国产精品毛片久久久久久| 久久99精品久久久久久久久久| www黄色在线观看| 国内精品视频666| 麻豆国产精品va在线观看不卡| 亚洲成人黄色av| 在线看成人短视频| 日韩hd视频在线观看| 99久久久无码国产精品性波多| 网站一区二区| 日韩欧美一级在线播放| 天天操,天天操| 欧美成人黄色| 制服丝袜亚洲网站| 91欧美一区二区三区| 日韩美香港a一级毛片| 欧美日韩的一区二区| 一级黄色录像在线观看| 成人av在线播放| 午夜精品一区在线观看| 亚洲人成无码网站久久99热国产| 美女91在线| 亚洲午夜激情av| 国产3p露脸普通话对白| 色一区二区三区| 日本高清不卡视频| 国产日本欧美在线| av网站网址在线观看| 亚洲精品第一国产综合野| 国产精品videossex国产高清| 欧美巨大xxxx做受沙滩| 精品久久久久久久久久久| 国产成人a亚洲精v品无码| 欧美电影免费观看| 亚洲视频网在线直播| 无码人妻精品一区二区三区99v| 亚洲三级中文字幕| 久久久久久久av麻豆果冻| 日本一区二区三区视频免费看| av午夜在线| 亚洲女人****多毛耸耸8| 日韩亚洲欧美视频| 天天在线视频色| 亚洲激情图片小说视频| 国产成人无码精品久久久性色| 日韩高清中文字幕一区二区| 91精品免费观看| 国产极品一区二区| 成人写真视频| 欧美高清无遮挡| 亚洲大片免费观看| 国产成人日日夜夜| 鲁丝片一区二区三区| 久久精品视频观看| 福利微拍一区二区| 成人精品视频一区二区| 亚洲精选av| 亚洲深夜福利在线| 国产一级特黄a高潮片| 日韩福利电影在线观看| 91豆花精品一区| 做爰无遮挡三级| 成人白浆超碰人人人人| 一区二区在线观看网站| 午夜激情在线视频| 亚洲丝袜制服诱惑| 18禁男女爽爽爽午夜网站免费| 国产高清日韩| 亚洲一区二区久久久| 久久久无码一区二区三区| 日韩—二三区免费观看av| 99re在线观看| 日本高清中文字幕在线| 色欧美乱欧美15图片| aaa黄色大片| 无码一区二区三区视频| 国产成人精品综合| 香蕉av一区二区三区| 伊人色综合久久天天人手人婷| 国产日韩欧美久久| 精品在线手机视频| 国模极品一区二区三区| 国产激情视频在线播放| 国产精品久久久久久户外露出 | 天堂久久一区二区三区| 国产亚洲第一区| 偷拍25位美女撒尿视频在线观看| 国产精品国产精品国产专区不片| 欧美亚洲一二三区| 国产成人澳门| 欧美国产欧美亚洲国产日韩mv天天看完整| 自拍偷拍福利视频| 久久久91精品国产一区二区精品| 国产原创中文在线观看| 超碰97久久| 亚洲精品久久久久久久久久久| 国产精品视频一区二区三 | 国产韩日影视精品| 国产精品亚洲аv天堂网| 国产精品久久久久久久龚玥菲 | 国产精品亚洲欧美导航| 国产系列在线观看| 色狠狠色噜噜噜综合网| 精品无码一区二区三区| 亚洲欧美久久久| 欧美极品一区| 成人黄色免费短视频| 亚洲无线码在线一区观看| 天天射天天干天天| 国产午夜精品在线观看| 日本中文字幕高清| 色综合蜜月久久综合网| 久久福利网址导航| 国产毛片毛片毛片毛片毛片| 成人免费毛片高清视频| 成人一级生活片| 国产精品白丝av嫩草影院| 97国产在线观看| 欧洲亚洲精品视频| 欧美国产日韩亚洲一区| 香蕉视频禁止18| 97精品在线| 91av国产在线| 青青青免费视频在线2| 日韩欧美精品中文字幕| 日韩一区二区a片免费观看| 奇米精品一区二区三区在线观看| 亚洲黄色一区二区三区| 成人久久精品| 97国产精品视频人人做人人爱| 黄色的视频在线免费观看| 亚洲综合成人网| 影音先锋黄色资源| 日日噜噜夜夜狠狠视频欧美人| 亚洲女人毛片| 一区二区三区亚洲变态调教大结局 | 久久精品av麻豆的观看方式| 亚洲 欧洲 日韩| 国产乱人伦丫前精品视频| 日本人成精品视频在线| 日韩黄色影院| 亚洲第一区在线观看| 正在播放亚洲精品| 亚洲一区二区在线视频| 成人乱码一区二区三区av| 美洲天堂一区二卡三卡四卡视频| 亚洲天堂第一区| 自拍视频一区| 亚洲aa在线观看| 超碰一区二区| 久久国产精品久久久久久| 四虎影院在线播放| 91精品在线麻豆| 51国产偷自视频区视频| 亚洲视频图片小说| 91精品人妻一区二区三区蜜桃欧美| 久久 天天综合| 妞干网在线视频观看| 99久久婷婷| 久久综合中文色婷婷| 日韩一二三区| 国产精品视频免费观看www| 97天天综合网| 久久久精品一区二区| 国产在线一二三| 精品美女一区二区| 中文字字幕在线中文乱码| 午夜精品免费在线| 91高清免费观看| 理论片日本一区| 国产一区二区网| 亚洲区综合中文字幕日日| 欧美亚州在线观看| 国产美女撒尿一区二区| 91中文字幕在线| 国产精品字幕| 奇米一区二区三区四区久久| 欧洲性视频在线播放| yellow中文字幕久久| 国产精品一二三区视频| 国产丝袜视频一区| 刘亦菲久久免费一区二区| 亚洲电影在线播放| 日本免费福利视频| 日韩和欧美的一区| aa在线观看视频| 亚洲视频中文| 亚洲一区尤物| 欧美呦呦网站| 日韩免费av一区二区三区| 亚洲电影有码| 欧洲成人免费aa| а√天堂中文在线资源8| 色与欲影视天天看综合网| 黄色一级大片在线免费看产| 最近2019中文免费高清视频观看www99| 亚洲av电影一区| 亚洲国产三级网| 欧美一区二区黄片| 欧美性videos高清精品| 日本少妇裸体做爰| 亚洲图片欧美色图| 国产亚洲精品码| 亚洲一区二区高清| 国产真实乱偷精品视频| 亚洲福中文字幕伊人影院| 麻豆一区产品精品蜜桃的特点| 亚洲乱码精品一二三四区日韩在线| 来吧亚洲综合网| 最新中文字幕一区二区三区| 少妇搡bbbb搡bbb搡打电话| 国产成人av一区| 国产精品熟妇一区二区三区四区 | 7777精品伊久久久大香线蕉语言| 四虎国产精品免费久久5151| 成人日韩在线电影| 久久九九精品视频| 高清国产在线一区| 麻豆成人入口| 欧洲一区二区在线观看| 欧美先锋资源| aaa免费在线观看| 亚洲视频日本| 男人天堂999| 久久精品72免费观看| 亚洲制服中文字幕| 成人动漫av在线| 先锋影音av在线| 亚洲三级免费观看| 国产在线视频99| 日韩欧美在线播放| 国产女优在线播放| 欧美成人精品3d动漫h| 色哟哟中文字幕| 一区三区二区视频| 69成人在线| 97久久国产精品| 国产精品久久久久77777丨| 91在线免费观看网站| 麻豆精品少妇| gogogo免费高清日本写真| 一区在线视频观看| 国产三级日本三级在线播放| 国产精品18久久久久| aaaaaav| 亚洲色图19p| 国产精品久久久久久99| 欧美精品成人一区二区三区四区| 亚洲av无码国产精品永久一区| 亚洲乱码一区av黑人高潮| 黄色精品在线观看| 欧美亚洲成人精品| av在线精品| 欧美人与性禽动交精品| 亚洲五月综合| 美女福利视频在线| 国产精品一区二区果冻传媒| 欧美狂猛xxxxx乱大交3| 亚洲九九爱视频| 亚洲中文字幕无码爆乳av| 日韩欧美一区二区三区在线| 经典三级在线| 欧美极品少妇xxxxⅹ喷水| 亚洲精品国产嫩草在线观看| 国产精品日韩一区二区| 国产精品成人av| 欧美一级片中文字幕| 国产成人av福利| 日韩在线一卡二卡| 色狠狠色狠狠综合| 五月天婷婷在线观看| 欧美成人精品xxx| 国产激情欧美| 欧美日韩最好看的视频| 黄色亚洲免费| 26uuu国产| 综合激情成人伊人| 中文字幕在线视频第一页| 亚洲精品影视在线观看| 蜜桃视频在线网站| yy111111少妇影院日韩夜片| 99精品网站| 天天干天天干天天干天天干天天干| 91丝袜美腿高跟国产极品老师 | 国产精品一级久久久| 国产精品久久久乱弄| 中文久久久久久| 国产亚洲欧美日韩在线一区| 国产精品777777| 日韩av在线免费播放| 91禁在线看| 国产精品一区二区三区在线观| 欧美激情一区| av地址在线观看| 亚洲精品国产a| 性中国古装videossex| 欧美激情网友自拍| 成人午夜三级| www精品久久| 成人午夜免费av| 日韩手机在线观看| 亚洲精品福利在线观看| 九色porny自拍视频在线播放| 国产综合 伊人色| 国产精品美女| 99精品欧美一区二区| 欧美日韩一级黄| 老司机在线视频二区| 91久久精品在线| 欧美精品日本| 精品人妻一区二区免费| 亚洲第一成年网| 日本一区视频| 国产精品99久久久久久久久| 欧美电影《睫毛膏》| 能看毛片的网站| 性做久久久久久免费观看| 四虎在线免费看| 国产美女精彩久久| 亚洲色图88| 催眠调教后宫乱淫校园| 精品国产乱码久久久久久天美| 天堂国产一区二区三区| 国产91在线高潮白浆在线观看 | 久无码久无码av无码| 97精品久久久久中文字幕| 国产伦精品一区二区三区视频我| 在线色欧美三级视频| 欧美成人一级| 精品中文字幕av| 国产精品久久久久永久免费观看| va视频在线观看| 欧美影院久久久| 国产精品久久久久久影院8一贰佰| 亚洲熟女乱综合一区二区| 精品久久久久久国产| av大片在线观看| 成人久久18免费网站漫画| 久久性色av| 懂色av懂色av粉嫩av| 日韩美女av在线| www 久久久| 亚洲中文字幕无码不卡电影| 亚洲天堂精品在线观看| 午夜影院免费视频| 成人免费看吃奶视频网站| 亚洲裸体俱乐部裸体舞表演av| 亚洲精品国产一区黑色丝袜| 欧美一区二区三区视频免费| 亚洲精品**中文毛片| 四虎4hu永久免费入口| www国产成人| 国产富婆一级全黄大片| 欧洲亚洲在线视频| 精品91在线| 极品色av影院|