美文网首页支付路由
系统重构--订单交易模块

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

作者: 天草二十六_简村人 | 来源:发表于2019-03-27 11:58 被阅读7次

一、旧系统的现状分析:

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里的数据采用补偿机制,把旧库的增量数据同步到新库。

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

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

相关文章

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

    一、旧系统的现状分析: 1)服务调用关系 2)接口梳理 订单相关旧系统接口整理:a、gamecatsdk服务b、w...

  • 订单交易系统代码重构

    订单交易系统随着业务的发展,逻辑也越来越多,需要进行重构,之前已经把交易模块拆分了,目前还需要再把订单系统进一步拆...

  • 30 - 重构之代码解耦

    重构可以分为大规模高层重构(简称“大型重构”)和小规模低层次重构(简称“小型重构”)。大型重构是对系统、模块、代码...

  • 简谈订单管理系统(OMS)

    一、 关于订单管理系统 订单管理系统即处理订单的系统,主要管理订单的输入,处理,输出。其在一般电商系统中或在有交易...

  • 数字货币交易所设计

    目的 实现TRON上 "链下撮合,链上清算"的交易所 整体模块 Order 订单模块,接收用户提交的订单 Sequ...

  • 四大系统:ERP,CRM,OMS,WMS

    OMSOMS是Order Management System的缩写,即订单管理系统。订单管理模块是信息系统集中管理...

  • 电商系统之订单设计篇

    01 概述 订单系统作为电商系统的“纽带”贯穿了整个电商系统的关键流程。其他模块都是围绕订单系统进行构建的。订单系...

  • 重构:改善饿了么交易系统的设计思路

    文 | 盛赫 叮~,您有新的饿了么订单,正在阿里云上被接单。 这篇文章成型于交易系统重构一期之后,主要是反思其过程...

  • 一次订单系统重构实践

    ​在我们的工作中,经常会遇到系统或模块重构工作,今天就来聊一聊我曾经经历过的一次系统重构经历。 01背景‍ 重构发...

  • 11.订单管理模块

    订单管理模块前台用户包括4个模块:创建订单、取消订单、查询订单明细、查询订单List。后台管理员模块主要有四个模块...

网友评论

    本文标题:系统重构--订单交易模块

    本文链接:https://www.haomeiwen.com/subject/qbpavqtx.html