日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

vivo商城促销系统架构设计与实践-概览篇

發(fā)布時(shí)間:2023/12/8 windows 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vivo商城促销系统架构设计与实践-概览篇 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、前言

隨著商城業(yè)務(wù)渠道不斷擴(kuò)展,促銷玩法不斷增多,原商城v2.0架構(gòu)已經(jīng)無(wú)法滿足不斷增加的活動(dòng)玩法,需要進(jìn)行促銷系統(tǒng)的獨(dú)立建設(shè),與商城解耦,提供純粹的商城營(yíng)銷活動(dòng)玩法支撐能力。

我們將分系列來(lái)介紹vivo商城促銷系統(tǒng)建設(shè)的過(guò)程中遇到的問(wèn)題和解決方案,分享架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)。

二、系統(tǒng)框架

2.1 業(yè)務(wù)梳理

在介紹業(yè)務(wù)架構(gòu)前我們先簡(jiǎn)單了解下vivo商城促銷系統(tǒng)業(yè)務(wù)能力建設(shè)歷程,對(duì)現(xiàn)促銷能力進(jìn)行梳理回顧。在商城v2.0中促銷功能存在以下問(wèn)題:

1. 促銷模型不夠抽象,維護(hù)混亂,沒有獨(dú)立的活動(dòng)庫(kù)存;

2. 混亂的活動(dòng)共融互斥關(guān)系管理,缺乏統(tǒng)一的促銷計(jì)價(jià)能力。

商城核心交易鏈路中商詳頁(yè)、購(gòu)物車、下單這三塊關(guān)于計(jì)價(jià)邏輯是分開獨(dú)立維護(hù)的,沒有統(tǒng)一,如下圖所示。顯然隨著促銷優(yōu)惠的增加或者玩法的變動(dòng),商城側(cè)業(yè)務(wù)重復(fù)開發(fā)量會(huì)顯著加大。

(圖2-1. 促銷計(jì)價(jià)統(tǒng)一前)

3. 促銷性能無(wú)法滿足活動(dòng)量級(jí),往往會(huì)影響商城主站的性能。

因與商城系統(tǒng)耦合,無(wú)法提供針對(duì)性的性能優(yōu)化,造成系統(tǒng)無(wú)法支撐越來(lái)越頻繁的大流量場(chǎng)景下大促活動(dòng)。

基于這些痛點(diǎn)問(wèn)題,我們一期完成促銷系統(tǒng)的獨(dú)立,與商城解耦,搭建出促銷系統(tǒng)核心能力:

優(yōu)惠活動(dòng)管理

對(duì)所有優(yōu)惠活動(dòng)抽象出統(tǒng)一的優(yōu)惠模型和配置管理界面,提供活動(dòng)編輯、修改、查詢及數(shù)據(jù)統(tǒng)計(jì)等功能。并獨(dú)立出統(tǒng)一的活動(dòng)庫(kù)存管理,便于活動(dòng)資源的統(tǒng)一把控。

促銷計(jì)價(jià)

基于高度靈活、抽象化的計(jì)價(jià)引擎能力,通過(guò)定義分層計(jì)價(jià)的促銷計(jì)價(jià)模型,制定統(tǒng)一的優(yōu)惠疊加規(guī)則與計(jì)價(jià)流程,實(shí)現(xiàn)vivo商城促銷計(jì)價(jià)能力的建設(shè)。推動(dòng)完成vivo商城所有核心鏈路接入促銷計(jì)價(jià),實(shí)現(xiàn)全鏈路優(yōu)惠價(jià)格計(jì)算的統(tǒng)一,如下圖:

(圖2-2. 促銷計(jì)價(jià)統(tǒng)一后)

隨著一期促銷系統(tǒng)核心能力的完成,極大的滿足了業(yè)務(wù)需要,各類優(yōu)惠玩法隨之增多。但伴隨而來(lái)的就是各種運(yùn)營(yíng)痛點(diǎn):

  • 維護(hù)的促銷活動(dòng)無(wú)法提前點(diǎn)檢,檢查活動(dòng)效果是否符合預(yù)期;

  • 隨著優(yōu)惠玩法的增多,一個(gè)商品所能享受的優(yōu)惠越來(lái)越多,配置也越來(lái)越復(fù)雜,極易配置錯(cuò)誤造成線上事故;

為此我們開始促銷系統(tǒng)二期的能力建設(shè),著重解決以上運(yùn)營(yíng)痛點(diǎn):

  • 提供時(shí)光穿越功能,實(shí)現(xiàn)用戶能夠“穿越”至未來(lái)某個(gè)時(shí)間點(diǎn),從而實(shí)現(xiàn)促銷活動(dòng)的提前點(diǎn)檢;

  • 提供價(jià)格監(jiān)控功能,結(jié)合「商城營(yíng)銷價(jià)格能力矩陣」規(guī)劃的能力,通過(guò)事前/事中/事后多維度監(jiān)控措施,來(lái)“降低出錯(cuò)概率,出錯(cuò)能及時(shí)止損”。

2.2 促銷與優(yōu)惠券

促銷的主要目的就是向用戶傳遞商品的各種優(yōu)惠信息,提供優(yōu)惠利益,吸引用戶購(gòu)買,從而起到促活拉新、提高銷量的目的。從這種角度來(lái)看,優(yōu)惠券也屬于促銷的一部分。

但因一些原因vivo商城促銷系統(tǒng)獨(dú)立過(guò)程中,并沒有與促銷系統(tǒng)放一塊:

  • 首先,優(yōu)惠券系統(tǒng)在商城v2.0時(shí)就已獨(dú)立,已經(jīng)對(duì)接很多上游業(yè)務(wù),已經(jīng)是成熟的中臺(tái)系統(tǒng);

  • 再者,就是優(yōu)惠券也有相較與其它促銷優(yōu)惠的業(yè)務(wù)特殊性,如有發(fā)券、領(lǐng)券能力。

在考慮設(shè)計(jì)改造成本就未將優(yōu)惠券包括在促銷系統(tǒng)能力范疇,但優(yōu)惠券畢竟也是商品價(jià)格優(yōu)惠的一部分,因此促銷計(jì)價(jià)需要依賴優(yōu)惠券系統(tǒng)提供券優(yōu)惠的能力。

2.3 業(yè)務(wù)架構(gòu)&流程

至此我們也就梳理出整個(gè)促銷系統(tǒng)的大概能力矩陣,整體架構(gòu)設(shè)計(jì)如下:

(圖2-3. 促銷系統(tǒng)架構(gòu))

而隨著促銷系統(tǒng)獨(dú)立,整個(gè)商城購(gòu)物流程與促銷系統(tǒng)的關(guān)系如下:

(圖2-4. 最新商城購(gòu)物流程)

三、技術(shù)挑戰(zhàn)

作為中臺(tái)能力系統(tǒng),促銷系統(tǒng)面臨的技術(shù)挑戰(zhàn)包括以下幾方面:

  • 面對(duì)復(fù)雜多變的促銷玩法、優(yōu)惠疊加規(guī)則,如何讓系統(tǒng)具備可擴(kuò)展性,滿足日益多變的優(yōu)惠需求,提升開發(fā)與運(yùn)營(yíng)效率。

  • 面對(duì)新品發(fā)布、雙11大為客戶等大流量場(chǎng)景,如何滿足高并發(fā)場(chǎng)景下的高性能要求。

  • 面對(duì)來(lái)自上游業(yè)務(wù)方的不可信調(diào)用,以及下游依賴方的不可靠服務(wù)等復(fù)雜系統(tǒng)環(huán)境,如何提升系統(tǒng)整體的穩(wěn)定性,保障系統(tǒng)的高可用。

我們結(jié)合自身業(yè)務(wù)特點(diǎn),梳理出一些技術(shù)解決方案。

3.1 可擴(kuò)展性

擴(kuò)展性提升主要體現(xiàn)在兩塊:

  • 優(yōu)惠模型的定義,對(duì)所有優(yōu)惠活動(dòng)抽象出統(tǒng)一的優(yōu)惠模型和配置管理界面;

  • 促銷計(jì)價(jià)引擎的建立,計(jì)價(jià)模型的統(tǒng)一。

相關(guān)的詳細(xì)設(shè)計(jì)內(nèi)容,會(huì)有后續(xù)文章進(jìn)行說(shuō)明。

3.2 高并發(fā)/高性能

緩存

緩存幾乎就是解決性能問(wèn)題的“銀彈”,在促銷系統(tǒng)中也大量使用緩存進(jìn)行性能提升,包括使用redis緩存與本地緩存。而使用緩存就需要關(guān)注數(shù)據(jù)一致性問(wèn)題,redis緩存還好解決,但本地緩存不就好處理了。因此本地緩存的使用要看業(yè)務(wù)場(chǎng)景,盡量是數(shù)據(jù)不經(jīng)常變更且業(yè)務(wù)上能接受一定不一致的場(chǎng)景。

批量化

促銷系統(tǒng)的業(yè)務(wù)場(chǎng)景屬于典型的讀多寫少場(chǎng)景,而讀的過(guò)程中對(duì)性能影響最大的就是IO操作,包括db、redis以及第三方遠(yuǎn)程調(diào)用。而對(duì)這些IO操作進(jìn)行批量化改造,以空間換時(shí)間,減少IO交互次數(shù)也是性能優(yōu)化的一大方案。

精簡(jiǎn)化/異步化

簡(jiǎn)化功能實(shí)現(xiàn),將非核心任務(wù)進(jìn)行異步化改造。如活動(dòng)編輯后的緩存處理、資源預(yù)占后的消息同步、拼團(tuán)狀態(tài)流轉(zhuǎn)的消息通知等等。

冷熱分離

對(duì)于讀多寫少場(chǎng)景對(duì)性能影響最大的除了IO操作,還有就是數(shù)據(jù)量,在促銷系統(tǒng)中也存在一些用戶態(tài)數(shù)據(jù),如優(yōu)惠資源預(yù)占記錄、用戶拼團(tuán)信息等。這些數(shù)據(jù)都具備時(shí)間屬性,存在熱尾效應(yīng),大部分情況下需要的都是最近的數(shù)據(jù)。針對(duì)這類場(chǎng)景對(duì)數(shù)據(jù)進(jìn)行冷熱分離是最佳選擇。

3.3 系統(tǒng)穩(wěn)定性

限流降級(jí)

基于公司的限流組件,對(duì)非核心的服務(wù)功能進(jìn)行流量限制與服務(wù)降級(jí),高并發(fā)場(chǎng)景下全力保障整體系統(tǒng)的核心服務(wù)

冪等性

所有接口均具備冪等性,避免業(yè)務(wù)方的網(wǎng)絡(luò)超時(shí)重試造成的系統(tǒng)異常

熔斷

使用Hystrix組件對(duì)外部系統(tǒng)的調(diào)用添加熔斷保護(hù),防止外部系統(tǒng)的故障造成整個(gè)促銷系統(tǒng)的服務(wù)崩潰

監(jiān)控和告警

通過(guò)配置日志平臺(tái)的錯(cuò)誤日志報(bào)警、調(diào)用鏈的服務(wù)分析告警,再加上公司各中間件和基礎(chǔ)組件的監(jiān)控告警功能,讓我們能夠第一時(shí)間發(fā)現(xiàn)系統(tǒng)異常

四、踩過(guò)的坑

4.1 Redis SCAN命令使用

在Redis緩存數(shù)據(jù)清除的處理過(guò)程中,存在部分緩存key是通過(guò)模糊匹配的方式進(jìn)行查找并清除操作,底層依賴Redis SCAN命令。

SCAN命令是一個(gè)基于游標(biāo)的迭代器,每次被調(diào)用之后都會(huì)向用戶返回一個(gè)新的游標(biāo), 用戶在下次迭代時(shí)需要使用這個(gè)新游標(biāo)作為 SCAN 命令的游標(biāo)參數(shù), 以此來(lái)延續(xù)之前的迭代過(guò)程。

對(duì)于使用KEYS命令,SCAN命令并不是一次性返回所有匹配結(jié)果,減少命令操作對(duì)Redis系統(tǒng)的阻塞風(fēng)險(xiǎn)。但并不是說(shuō)SCAN命令就可以隨便用,其實(shí)在大數(shù)據(jù)量場(chǎng)景下SCAN存在與KEYS命令一樣的風(fēng)險(xiǎn)問(wèn)題,極易造成Redis負(fù)載升高,響應(yīng)變慢,進(jìn)而影響整個(gè)系統(tǒng)的穩(wěn)定性。

(圖4-1 Redis負(fù)載升高)

(圖4-2 Redis響應(yīng)出現(xiàn)尖刺)

而解決方案就是:

  • 優(yōu)化Redis key設(shè)計(jì),減少不必要的緩存key;

  • 移除SCAN命令使用,通過(guò)精確匹配查找進(jìn)行清除操作。

4.2 熱點(diǎn)key問(wèn)題

在促銷系統(tǒng)中普遍使用redis緩存進(jìn)行性能提升,緩存數(shù)據(jù)很多都是SKU商品維度。在新品發(fā)布、特定類型手機(jī)大促等業(yè)務(wù)場(chǎng)景下極容易產(chǎn)生熱點(diǎn)Key問(wèn)題。

熱點(diǎn)Key具有聚集效應(yīng),會(huì)導(dǎo)致Redis集群內(nèi)節(jié)點(diǎn)負(fù)載出現(xiàn)不均衡,進(jìn)而造成整個(gè)系統(tǒng)不穩(wěn)定。該問(wèn)題是普通的機(jī)器擴(kuò)容無(wú)法解決的。如下圖某次線上摸排壓測(cè)時(shí)redis負(fù)載情況:

常用的解決方案有兩種:

  • 散列方案:對(duì)Redis Key進(jìn)行散列,平均分散到RedisCluster Nodes中,解決熱點(diǎn)Key的聚集效應(yīng)。

  • 多級(jí)緩存方案:對(duì)熱點(diǎn)Key增加使用本地緩存,最大限度加速訪問(wèn)性能,降低Redis節(jié)點(diǎn)負(fù)載。

我們是采用多級(jí)緩存方案,參照優(yōu)秀的開源熱點(diǎn)緩存框架,定制化擴(kuò)展出一整套熱點(diǎn)解決方案,支持熱點(diǎn)探測(cè) 、本地緩存 、集群廣播以及熱點(diǎn)預(yù)熱功能,做到準(zhǔn)實(shí)時(shí)熱點(diǎn)探測(cè)并將熱點(diǎn)Key通知實(shí)例集群進(jìn)行本地緩存,極大限度避免大量重復(fù)調(diào)用沖擊分布式緩存,提升系統(tǒng)運(yùn)行效率。

五、總結(jié)

本篇屬于vivo商城促銷系統(tǒng)概覽介紹篇,簡(jiǎn)單回顧了vivo商城促銷系統(tǒng)業(yè)務(wù)能力建設(shè)歷程及系統(tǒng)架構(gòu),并分享遇到的技術(shù)問(wèn)題與解決方案。后續(xù)我們會(huì)對(duì)促銷系統(tǒng)的核心功能模塊(優(yōu)惠活動(dòng)管理、促銷計(jì)價(jià)、價(jià)格監(jiān)控和時(shí)光穿越)的設(shè)計(jì)實(shí)踐進(jìn)行逐個(gè)分享,敬請(qǐng)期待。

作者:vivo互聯(lián)網(wǎng)官方商城開發(fā)團(tuán)

總結(jié)

以上是生活随笔為你收集整理的vivo商城促销系统架构设计与实践-概览篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。