摘要:基于的動(dòng)態(tài)配置推送。對(duì)于任務(wù)中心這種多任務(wù)平臺(tái)型的配置,有一定影響?;诨卣{(diào)和配置的擴(kuò)展點(diǎn)流程共建在建中通過(guò)擴(kuò)展點(diǎn)共建方式,將流程編排的能力,暴露給內(nèi)外部的開(kāi)發(fā)者,完成任務(wù)中心的共建。
一、聊聊本文想說(shuō)什么:
??為更好幫助商家的會(huì)員快速成長(zhǎng),保持用戶活性,完善用戶的成長(zhǎng)體系,有贊用戶中心-會(huì)員成長(zhǎng)團(tuán)隊(duì)基于現(xiàn)有的業(yè)務(wù)場(chǎng)景,設(shè)計(jì)了一套較完備任務(wù)中心系統(tǒng)。同時(shí)也有很多通用技術(shù)組件能夠落地。接下來(lái)本文會(huì)簡(jiǎn)單分享下這些常用的技術(shù)組件,拋磚引玉。
??在開(kāi)始之前我們會(huì)先提幾個(gè)問(wèn)題:
1.任務(wù)中心對(duì)于普通商戶有什么用處?
2.如何實(shí)現(xiàn)任務(wù)中心,做到快速接入,擴(kuò)展性好?
3.有哪些技術(shù)可以結(jié)合任務(wù)中心一起落地?
1.1 我們內(nèi)部的一些黑話 二、為什么要做任務(wù)中心? 2.1 任務(wù)中心的出發(fā)點(diǎn):a、用戶激活:提升用戶體驗(yàn),增加客戶活躍,方便商戶進(jìn)行用戶信息采集,完善自己的信息網(wǎng)。
b、提高留存:引導(dǎo)客戶每日參與任務(wù),通過(guò)會(huì)員體系+積分成長(zhǎng)值獎(jiǎng)勵(lì),提高用戶粘性。
c、提高用戶復(fù)購(gòu)和客單價(jià):設(shè)置購(gòu)買(mǎi)任務(wù)和結(jié)合積分購(gòu)買(mǎi)等特權(quán)。
d、老帶新傳播:通過(guò)拉新任務(wù)或者拼團(tuán)任務(wù)等活動(dòng),持續(xù)拉新。
2.2 任務(wù)中心的目標(biāo):B端: 商戶可視的任務(wù)配置中心,方便管理控制任務(wù)。
C端:用戶領(lǐng)取完成任務(wù),異步或同步處理完成,提供:定時(shí)任務(wù)、階段任務(wù)。
接入、使用方:快速可視化接入,任務(wù)完成回執(zhí)簡(jiǎn)單。
系統(tǒng)本身:對(duì)于新任務(wù)接入,可拓展性,盡量保證主流程改動(dòng)最小。
三、我們是如何實(shí)現(xiàn)的? 3.1 我們的技術(shù)方案??我們從現(xiàn)有的業(yè)務(wù)體系中,剝離出B端的配置中心和C端的任務(wù)處理中心,集合一些常用的系統(tǒng)組件,盡量做到接口原子化,可編排、能力內(nèi)聚;在結(jié)合通用工具jar,是業(yè)務(wù)系統(tǒng)接入足夠快速;同時(shí)設(shè)置了平臺(tái)型通用配置,使用基于apollo的動(dòng)態(tài)加載配置信息到本地緩存,達(dá)到不用發(fā)布應(yīng)用,就可以快速接入新任務(wù)。
??有贊雖然是一家saas公司,但是在有贊內(nèi)部平臺(tái)、商戶、用戶的概念是都有維護(hù)的,可以說(shuō)三者相輔相成,不會(huì)獨(dú)立出現(xiàn)。
1.平臺(tái)側(cè)可以通過(guò)后臺(tái)系統(tǒng)快速接入,給產(chǎn)品同學(xué)進(jìn)行審批和配置落地。
2.商戶端可以在頁(yè)面,快速配置任務(wù)信息和任務(wù)獎(jiǎng)勵(lì)。
3.給業(yè)務(wù)方提供多種任務(wù)快速接入方式,通用的任務(wù)調(diào)度完成以及商戶維度的通用獎(jiǎng)勵(lì)發(fā)放能力。
3.2 我們還提供了哪些能力? 3.3 任務(wù)的常用狀態(tài)??通用的合理的狀態(tài)流轉(zhuǎn),可以快速定位區(qū)分C端用戶的任務(wù)完成情況,失敗和終止的業(yè)務(wù)可以依賴定時(shí)任務(wù)做任務(wù)完成重放,快速推進(jìn)到完結(jié),并發(fā)放獎(jiǎng)勵(lì),規(guī)避異常給用戶帶來(lái)的獎(jiǎng)勵(lì)信息不同步的問(wèn)題,保證系統(tǒng)內(nèi)的一致性。
??在任務(wù)中心落地中,很多場(chǎng)景需要控制任務(wù)的唯一冪等,多次發(fā)放不會(huì)重發(fā)等等。之前我們主要是通過(guò)db冪等表,插入業(yè)務(wù)唯一索引來(lái)保證冪等,但是需要數(shù)據(jù)庫(kù)的事務(wù)保證,即冪等流水和業(yè)務(wù)要一起提交,失敗即回滾。當(dāng)使用到多庫(kù)的場(chǎng)景時(shí),業(yè)務(wù)系統(tǒng)每個(gè)庫(kù)都要增加一張流水表,并且控制本分片內(nèi)業(yè)務(wù)id和分片id一致,比較繁瑣。
??還有一部分內(nèi)部系統(tǒng)使用分布式存儲(chǔ)(比如redis),來(lái)保存業(yè)務(wù)請(qǐng)求記錄。服務(wù)端在接收到請(qǐng)求后,用原子性的查詢和保存操作(比如redis的setnx命令),來(lái)保證業(yè)務(wù)唯一流水落到存儲(chǔ)中,在業(yè)務(wù)設(shè)置的超時(shí)時(shí)間前,控制業(yè)務(wù)流水的冪等。當(dāng)發(fā)現(xiàn)重復(fù)流水時(shí),按照一定的策略返回。
??在任務(wù)中心系統(tǒng)落地時(shí),同時(shí)保留了兩種模式,并且還要考慮接入方依賴的存儲(chǔ)的拓展性和快速接入。
4.1.2 冪等組件的規(guī)則冪等使用支持注解方式快速接入+spEL表達(dá)式拼接冪等入?yún)⑿畔ⅰ?/p>
基于apollo的動(dòng)態(tài)配置推送。
冪等存儲(chǔ)策略:
1.緩存redis存儲(chǔ)(優(yōu)先)2.mysql存儲(chǔ) 等
冪等拒絕策略:
1.多次返回相同結(jié)果 2.返回冪等碼 3.拋出異常 等
4.1.3 冪等組件的設(shè)計(jì)??通過(guò)基礎(chǔ)的工具jar包,承載整個(gè)冪等組件邏輯,達(dá)到快速接入的目的,通過(guò)apollo可以動(dòng)態(tài)推送相關(guān)配置,達(dá)到業(yè)務(wù)系統(tǒng)快速切換分支,隨時(shí)線上應(yīng)急。
??由于多個(gè)任務(wù)中,很多基礎(chǔ)組件能力都可以直接復(fù)用。比如發(fā)放獎(jiǎng)勵(lì)中:發(fā)放成長(zhǎng)值、發(fā)放積分、優(yōu)惠券等等,很多任務(wù)都有相同的邏輯,為了達(dá)到無(wú)需重復(fù)開(kāi)發(fā),新任務(wù)快速接入的目的。
??我們開(kāi)發(fā)了一套基于db+xml配置流程編排引擎,可以快速編排已有邏輯,減少重復(fù)開(kāi)發(fā)工作。
??編排還提供的基礎(chǔ)能力:
1.持續(xù)開(kāi)發(fā)基于熱加載的模板動(dòng)態(tài)加載機(jī)制。進(jìn)一步增加流程的動(dòng)態(tài)可配置能力。
2.同時(shí)在通用模板中,實(shí)現(xiàn)了緩存通用邏輯以及熱點(diǎn)緩存功能,在大促或者商家有營(yíng)銷(xiāo)活動(dòng)時(shí),任務(wù)中心也可以穩(wěn)定支持。
4.3 動(dòng)態(tài)配置變更組件??目前很多基礎(chǔ)配置都是通過(guò)依賴配置文件,或者apollo的動(dòng)態(tài)配置。
??但是這兩種方式都是有一定優(yōu)缺點(diǎn)的:配置文件的方式,雖然存儲(chǔ)容量沒(méi)有限制,但是配置變更后,需要重啟應(yīng)用,比較復(fù)雜。而apollo開(kāi)關(guān)的方式雖然可以動(dòng)態(tài)變更,但是存儲(chǔ)的配置信息很少,有一定長(zhǎng)度限制。對(duì)于任務(wù)中心這種多任務(wù)平臺(tái)型的配置,有一定影響。
??所以最后使用了基于jvm+apollo的延時(shí)加載的策略,即保證了不用頻繁發(fā)布,同時(shí)可以動(dòng)態(tài)變更配置信息。
4.4 獨(dú)立的異步日志流水記錄??傳統(tǒng)的同步日志記錄,占用系統(tǒng)資源,并且由于任務(wù)中心的特性,C端任務(wù)完成流水信息會(huì)很多。 所以任務(wù)中心落地時(shí)轉(zhuǎn)化為日志的異步流水事件,由多帶帶的日志系統(tǒng)提供日志采集、上傳、可視化、檢索等通用能力。
五、未來(lái),我們還在砥礪前行:??本著可視化、配置化的原則,為了讓外圍接入更容易,同時(shí)減少內(nèi)部開(kāi)發(fā)量的原則。接下來(lái)我們還會(huì)去繼續(xù)完善系統(tǒng):
1.任務(wù)中心運(yùn)維產(chǎn)品化(在建中):多帶帶開(kāi)發(fā)的一套產(chǎn)品層應(yīng)用,使用可視化的頁(yè)面后臺(tái)管理。方便業(yè)務(wù)接入和日常運(yùn)維??梢元?dú)立通過(guò)頁(yè)面完成配置+上線。
2.基于回調(diào)和配置的擴(kuò)展點(diǎn)+流程共建(在建中):通過(guò)擴(kuò)展點(diǎn)共建方式,將流程編排的能力,暴露給內(nèi)外部的開(kāi)發(fā)者,完成任務(wù)中心的共建。
有你有贊,未來(lái)可期(附內(nèi)推郵箱:sunchang@youzan.com,歡迎加入有贊業(yè)務(wù)中臺(tái)-用戶中心)
預(yù)覽
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/75953.html
摘要:業(yè)務(wù)對(duì)賬平臺(tái)的核心目的,就是及時(shí)發(fā)現(xiàn)類(lèi)似問(wèn)題,并及時(shí)修復(fù)。這對(duì)對(duì)賬平臺(tái)的吞吐量造成了挑戰(zhàn)。五健康度對(duì)賬中心可以拿到業(yè)務(wù)系統(tǒng)及其所在整個(gè)鏈路的數(shù)據(jù)一致性信息。在分布式環(huán)境下,沒(méi)有人能回避數(shù)據(jù)一致性問(wèn)題,我們對(duì)此充滿著敬畏。 一、引子 根據(jù)CAP原理,分布式系統(tǒng)無(wú)法在保證了可用性(Availability)和分區(qū)容忍性(Partition)之后,繼續(xù)保證一致性(Consistency)。我...
摘要:因此數(shù)據(jù)中臺(tái)必須具備智能化能力,能夠?yàn)闃I(yè)務(wù)提供一定的智能數(shù)據(jù)分析能力。宜信作為一家金融科技公司,更多面對(duì)的是金融領(lǐng)域的智能業(yè)務(wù)需求。 showImg(https://segmentfault.com/img/bVbqQM0?w=1155&h=492); 內(nèi)容來(lái)源:宜信技術(shù)學(xué)院第1期技術(shù)沙龍-線上直播|AI中臺(tái):一種敏捷的智能業(yè)務(wù)支持方案 主講人介紹:井玉欣 宜信技術(shù)研發(fā)中心AI應(yīng)用團(tuán)隊(duì)...
摘要:本文中,我們將描述系統(tǒng)的架構(gòu)開(kāi)發(fā)演進(jìn)過(guò)程,以及背后的驅(qū)動(dòng)原因。應(yīng)用管理層提供基本的部署和路由,包括自愈能力彈性擴(kuò)容服務(wù)發(fā)現(xiàn)負(fù)載均衡和流量路由。 帶你了解Kubernetes架構(gòu)的設(shè)計(jì)意圖、Kubernetes系統(tǒng)的架構(gòu)開(kāi)發(fā)演進(jìn)過(guò)程,以及背后的驅(qū)動(dòng)原因。 showImg(https://segmentfault.com/img/remote/1460000016446636?w=1280...
摘要:說(shuō)起,必須要介紹是什么東西,為什么中小企業(yè)私有云適合使用。看一下現(xiàn)在的架構(gòu)圖開(kāi)個(gè)玩笑。上面這四點(diǎn)導(dǎo)致我們必須要統(tǒng)一架構(gòu),最終把整個(gè)業(yè)務(wù)系統(tǒng)遷移到基于的類(lèi)似于的私有云的平臺(tái)。 本文系 ArchSummit 大會(huì) CODING 工程師王振威演講實(shí)錄。 showImg(https://dn-coding-net-production-pp.qbox.me/c2f81423-54b9-4a7b...
摘要:事件處理器是自包含和獨(dú)立的,解耦于架構(gòu)。因其分布式和異步的性質(zhì),事件驅(qū)動(dòng)架構(gòu)的實(shí)現(xiàn)相對(duì)復(fù)雜,主要是由于它的異步和分布式特性。微內(nèi)核架構(gòu)微內(nèi)核架構(gòu)模式也被稱為插件架構(gòu)模式。 來(lái)自于OReilly免費(fèi)的電子書(shū):Software Architecture Patterns showImg(https://segmentfault.com/img/remote/1460000009652123...
閱讀 3606·2023-04-25 15:52
閱讀 645·2021-11-19 09:40
閱讀 2840·2021-09-26 09:47
閱讀 1089·2021-09-22 15:17
閱讀 3666·2021-08-13 13:25
閱讀 2382·2019-08-30 15:56
閱讀 3550·2019-08-30 13:56
閱讀 2185·2019-08-30 11:27