系統(tǒng)重構(gòu)--訂單交易模塊

一、舊系統(tǒng)的現(xiàn)狀分析:

1)服務(wù)調(diào)用關(guān)系

image.png

2)接口梳理

訂單相關(guān)舊系統(tǒng)接口整理:
a、gamecatsdk服務(wù)
b仗扬、wechat服務(wù)
c、paysdk服務(wù)
d蕾额、paycenter服務(wù)

主要梳理的格式包括:
接口名稱(chēng)早芭;接口uri;接口被調(diào)用服務(wù)诅蝶;接口網(wǎng)絡(luò)訪問(wèn)(內(nèi)網(wǎng)還是外網(wǎng))退个;遷移后的服務(wù);重構(gòu)后新接口URI秤涩。

(具體的梳理省略帜乞,每個(gè)公司每個(gè)系統(tǒng)的情況各不一樣。)

3)ER關(guān)系圖

舊系統(tǒng)的ER圖.png

二筐眷、新系統(tǒng)的設(shè)計(jì)

1)ER圖:

新系統(tǒng)的ER圖.png

對(duì)賬和退款.png

2)域名依賴(lài)關(guān)系:

paycenter的域名是:paycenter.xxx.com
trade的域名是:trade.xxx.com

a黎烈、支付回調(diào)。為了支持舊系統(tǒng)已發(fā)起的支付(支付寶和微信)匀谣,在trade-nginx配置舊域名paycenter.xxx.com的調(diào)用照棋。也就是說(shuō),無(wú)論是paycenter.xxx.com還是trade.xxx.com都指向trade-nginx服務(wù)器武翎。

注意:在開(kāi)發(fā)測(cè)試環(huán)境里烈炭,trade服務(wù)需要開(kāi)通對(duì)外端口映射,讓支付機(jī)構(gòu)能夠回調(diào)到trade-nginx宝恶。

b符隙、IOS內(nèi)支付回調(diào),為了兼容舊版本的客戶(hù)端回調(diào)服務(wù)后端垫毙,之前是訪問(wèn)paycenter.xxx.com /notify/iosInnerPay霹疫,所以trade-nginx需要支持paycenter.xxx.com/notify/iosInnerPay。

3)數(shù)據(jù)遷移:

由于舊系統(tǒng)的訂單和代金券也是分庫(kù)分表综芥,需要先使用臨時(shí)表丽蝎,把之前的分庫(kù)聚合到一張臨時(shí)表。再根據(jù)主鍵ID%n的方式分到新的庫(kù)里膀藐。

在預(yù)防環(huán)境下執(zhí)行, 數(shù)據(jù)遷移分為三類(lèi)數(shù)據(jù)屠阻,包括基礎(chǔ)類(lèi)红省,訂單類(lèi)和支付類(lèi)。

等新服務(wù)上線(xiàn)驗(yàn)證無(wú)誤后国觉,執(zhí)行補(bǔ)償任務(wù)吧恃,把落在舊庫(kù)的訂單和支付等數(shù)據(jù)再次補(bǔ)償?shù)叫聨?kù)。

I麻诀、基礎(chǔ)數(shù)據(jù)

支付接口實(shí)現(xiàn) pay_api :
支付接口映射:pay_api_mapping
ios sdk商品:sdk_ios_goods

II蚜枢、支付數(shù)據(jù)

支付流水:pay_flow
支付通知:pay_notify
ios支付校驗(yàn) pay_ios_voucher_check

III、訂單數(shù)據(jù)

訂單:order_base
喵點(diǎn)訂單:catpt_order_detail
sdk訂單:sdk_order_detail
訂單索引表:order_es_index
訂單代金券使用表:order_use_coupon

4)因?yàn)橛唵畏謳?kù)分表了针饥,之前為了解決跨庫(kù)聚合問(wèn)題,引入的是訂單索引表需频。

后期引入分布式搜索引擎ElasticSearch丁眼。
mysql數(shù)據(jù)庫(kù)負(fù)責(zé)的是操作類(lèi),ES負(fù)責(zé)訂單查詢(xún)昭殉,分頁(yè)查詢(xún)等苞七。

做過(guò)分庫(kù)分表的重構(gòu)同學(xué),都得面臨解決舊庫(kù)與新庫(kù)的一致性問(wèn)題挪丢。常見(jiàn)的解決方案有:

I蹂风、停機(jī)部署

掛出停機(jī)公告,屆時(shí)進(jìn)行數(shù)據(jù)遷移乾蓬,待驗(yàn)證通過(guò)后惠啄,切流到新庫(kù)。

II任内、雙寫(xiě)到db和mq

歷史數(shù)據(jù)
增量數(shù)據(jù):保存在mq里撵渡,通過(guò)訂閱程序把增量數(shù)據(jù)補(bǔ)到新庫(kù)。


雙寫(xiě)到db和mq.png

III死嗦、雙寫(xiě)到db和ES

雙寫(xiě)到db和ES.png

采用cqrs思想趋距,把操作類(lèi)和查詢(xún)類(lèi)分離開(kāi)來(lái),新庫(kù)和舊庫(kù)都會(huì)寫(xiě)入ES, 避免查詢(xún)數(shù)據(jù)的同步延遲等問(wèn)題越除,保證用戶(hù)看到的訂單數(shù)據(jù)是實(shí)時(shí)的节腐,也不影響運(yùn)營(yíng)后臺(tái)的訂單管理。
mysql里的數(shù)據(jù)采用補(bǔ)償機(jī)制摘盆,把舊庫(kù)的增量數(shù)據(jù)同步到新庫(kù)翼雀。

建議方案三,可以不用停機(jī)部署骡澈,至于灰度策略問(wèn)題锅纺,等后續(xù)專(zhuān)門(mén)文章來(lái)討論。

在遷移期間肋殴,舊程序和舊庫(kù)表務(wù)必保留囤锉,不能刪除坦弟,否則會(huì)出現(xiàn)訂單或支付流水號(hào)找不到的錯(cuò)誤等等。新系統(tǒng)必須是對(duì)新舊的一個(gè)同時(shí)兼容官地,只有待程序運(yùn)行確保無(wú)誤后酿傍,再刪程序刪庫(kù)表。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末驱入,一起剝皮案震驚了整個(gè)濱河市赤炒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亏较,老刑警劉巖莺褒,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異雪情,居然都是意外死亡遵岩,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)巡通,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)尘执,“玉大人,你說(shuō)我怎么就攤上這事宴凉√芏В” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵弥锄,是天一觀的道長(zhǎng)丧靡。 經(jīng)常有香客問(wèn)我,道長(zhǎng)籽暇,這世上最難降的妖魔是什么窘行? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮图仓,結(jié)果婚禮上罐盔,老公的妹妹穿的比我還像新娘。我一直安慰自己救崔,他們只是感情好惶看,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著六孵,像睡著了一般纬黎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上劫窒,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天本今,我揣著相機(jī)與錄音,去河邊找鬼。 笑死冠息,一個(gè)胖子當(dāng)著我的面吹牛挪凑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逛艰,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼躏碳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了散怖?” 一聲冷哼從身側(cè)響起菇绵,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎镇眷,沒(méi)想到半個(gè)月后咬最,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡欠动,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年丹诀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翁垂。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖硝桩,靈堂內(nèi)的尸體忽然破棺而出沿猜,到底是詐尸還是另有隱情,我是刑警寧澤碗脊,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布啼肩,位于F島的核電站,受9級(jí)特大地震影響衙伶,放射性物質(zhì)發(fā)生泄漏祈坠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一矢劲、第九天 我趴在偏房一處隱蔽的房頂上張望赦拘。 院中可真熱鬧,春花似錦芬沉、人聲如沸躺同。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蹋艺。三九已至,卻和暖如春黄刚,著一層夾襖步出監(jiān)牢的瞬間捎谨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涛救,地道東北人畏邢。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像州叠,于是被迫代替她去往敵國(guó)和親棵红。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355