系统重构--订单交易模块

一、旧系统的现状分析:

1)服务调用关系

image.png

2)接口梳理

订单相关旧系统接口整理:
a、gamecatsdk服务
b、wechat服务
c、paysdk服务
d、paycenter服务

主要梳理的格式包括:
接口名称;接口uri;接口被调用服务;接口网络访问(内网还是外网);迁移后的服务;重构后新接口URI。

(具体的梳理省略,每个公司每个系统的情况各不一样。)

3)ER关系图

旧系统的ER图.png

二、新系统的设计

1)ER图:

新系统的ER图.png

对账和退款.png

2)域名依赖关系:

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

a、支付回调。为了支持旧系统已发起的支付(支付宝和微信),在trade-nginx配置旧域名paycenter.xxx.com的调用。也就是说,无论是paycenter.xxx.com还是trade.xxx.com都指向trade-nginx服务器。

注意:在开发测试环境里,trade服务需要开通对外端口映射,让支付机构能够回调到trade-nginx。

b、IOS内支付回调,为了兼容旧版本的客户端回调服务后端,之前是访问paycenter.xxx.com /notify/iosInnerPay,所以trade-nginx需要支持paycenter.xxx.com/notify/iosInnerPay。

3)数据迁移:

由于旧系统的订单和代金券也是分库分表,需要先使用临时表,把之前的分库聚合到一张临时表。再根据主键ID%n的方式分到新的库里。

在预防环境下执行, 数据迁移分为三类数据,包括基础类,订单类和支付类。

等新服务上线验证无误后,执行补偿任务,把落在旧库的订单和支付等数据再次补偿到新库。

I、基础数据

支付接口实现 pay_api :
支付接口映射:pay_api_mapping
ios sdk商品:sdk_ios_goods

II、支付数据

支付流水:pay_flow
支付通知:pay_notify
ios支付校验 pay_ios_voucher_check

III、订单数据

订单:order_base
喵点订单:catpt_order_detail
sdk订单:sdk_order_detail
订单索引表:order_es_index
订单代金券使用表:order_use_coupon

4)因为订单分库分表了,之前为了解决跨库聚合问题,引入的是订单索引表。

后期引入分布式搜索引擎ElasticSearch。
mysql数据库负责的是操作类,ES负责订单查询,分页查询等。

做过分库分表的重构同学,都得面临解决旧库与新库的一致性问题。常见的解决方案有:

I、停机部署

挂出停机公告,届时进行数据迁移,待验证通过后,切流到新库。

II、双写到db和mq

历史数据
增量数据:保存在mq里,通过订阅程序把增量数据补到新库。


双写到db和mq.png

III、双写到db和ES

双写到db和ES.png

采用cqrs思想,把操作类和查询类分离开来,新库和旧库都会写入ES, 避免查询数据的同步延迟等问题,保证用户看到的订单数据是实时的,也不影响运营后台的订单管理。
mysql里的数据采用补偿机制,把旧库的增量数据同步到新库。

建议方案三,可以不用停机部署,至于灰度策略问题,等后续专门文章来讨论。

在迁移期间,旧程序和旧库表务必保留,不能删除,否则会出现订单或支付流水号找不到的错误等等。新系统必须是对新旧的一个同时兼容,只有待程序运行确保无误后,再删程序删库表。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342