一种订单系统重构平滑迁移方法与流程

文档序号:27692890发布日期:2021-12-01 04:05阅读:131来源:国知局
1.本发明涉及网约车领域,尤其涉及一种订单系统重构平滑迁移方法。
背景技术
::2.随着业务的发展,订单系统数据库数据量越来越大,出现性能瓶颈,而且单库单表无法水平扩展。在不影响原有业务稳定运行同时,订单系统重构,包括对原订单系统接口业务流程改造、数据库分库分表,方便后期水平扩展,并且平滑迁移过渡到新系统。3.原有的订单系统服务需要独立为前提,数据库权限需要回收,确保只有本服务系统调用,不能被其它系统影响。技术实现要素:4.鉴于上述问题,提出了本发明以便提供克服上述问题或者至少部分地解决上述问题的一种订单系统重构平滑迁移方法。5.根据本发明的一个方面,提供了一种订单系统重构平滑迁移方法,所述平滑迁移方法包括:6.网约车场景下原有订单系统重构,获得重构订单系统;7.将所述重构订单系统平滑迁移到新服务系统,获得新系统。8.可选的,所述网约车场景下原有订单系统重构,获得重构订单系统具体包括:9.所述原有订单系统的基本信息包括:表结构和原始订单号规则;10.所述表结构包括:表名称、库名称、订单表表结构;11.所述原始订单号规则包括:秒级时间+机器编号+自增序列;12.所述重构订单的表结构与所述原有订单系统相同;13.所述重构订单的订单号规则为新订单标识n+秒级时间+机器编号+14.自增序列+表编号;所述表编号=用户id%分表数量。15.可选的,所述重构订单的基本信息还包括:查询场景分析。16.可选的,所述将所述重构订单系统平滑迁移到新服务系统,获得新系统具体包括:17.创建新订单;18.根据订单号更新、取消、查询订单;19.根据用户id查询订单列表;20.建立数据双向同步工程。21.可选的,所述建立数据双向同步工程具体包括:22.新订单向所述原始订单系统同步;23.所述原始订单系统向所述新订单系统同步。24.本发明提供的一种订单系统重构平滑迁移方法,所述平滑迁移方法包括:网约车场景下原有订单系统重构,获得重构订单系统;将所述重构订单系统平滑迁移到新服务系统,获得新系统。数据双向同步保证新、原始数据库数据完全一样,灰度方案保证请求到新服务系统、原始订单系统随时可控制。新服务系统请求从小到大平滑增加,期间如果发现重构的新订单系统有任何问题,随时流量切回原始订单系统、降低重构风险。25.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明26.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。27.图1为本发明实施例提供的原有订单系统的架构示意图;28.图2为本发明实施例提供的新订单系统的架构示意图;29.图3为本发明实施例提供的原有订单系统向新订单系统平滑迁移的示意图。具体实施方式30.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。31.本发明的说明书实施例和权利要求书及附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。32.下面结合附图和实施例,对本发明的技术方案做进一步的详细描述。33.客户端调服务端接口不变,新订单系统数据库根据用户id(user_id)作为分片key分库,分表。数据汇总到搜索系统。34.灰度期间要保证随时能够切回原始。所以需要实现新数据库和原始数据库双向同步,确保底层数据完全一致。35.重构前原始订单系统基本信息包括:表结构包括:表名称:order_table;库名称:db。36.订单表表结构:37.注:表只列举了部分核心字段38.订单号用户id用车时间创建时间order_nouser_idbooking_datecreate_date39.原始订单号规则:秒级时间(14位)+机器编号(3位)+自增序列(4位)。例如:202108261100000010001。原始订单系统架构图如图1所示。40.重构后新订单系统基本情况:表结构:新表结构不变41.分表数量:256;分库数量:4;42.表名称为:order_table_000~order_table_255;库名称为:db_0~db_3。43.订单表表结构注:表只列举了部分核心字段44.订单号用户id用车时间创建时间order_nouser_idbooking_datecreate_date45.订单号规则:新订单标识n(1位)+秒级时间(14位)+机器编号(3位)+自增序列(4位)+表编号(3位)。例如:n202108261100000010001255。表编号计算规则:表编号=用户id%分表数量。46.新订单系统架构如图2所示。47.查询场景分析:根据order_no查询场景,查询数据库,通过订单号后三位反解出表编号,通过订单号查询直接路由到对应数据库表,例如上面订单号n202108261100000010001255存储在order_table_255表。根据user_id查询,查询数据库,通过user_id%256可以路由到对应数据库表。48.非order_no和user_id查询,查询搜索系统。49.原始订单系统向新订单系统平滑迁移方法具体如图3所示,具体包括灰度模块。50.灰度模块根据接口操作分类,分为如下几种场景1、创建订单,2、根据订单号更新、取消、查询订单,3、根据用户id查询订单列表。51.创建订单,根据用户id查询列表——按流量灰度,支持白名单(方便测试人员测试),灰度流量按多个阶段从小到大逐步放量。以下以灰度基数1000为例设置灰度比例,x为配置灰度值,y为随机数(也可以为自增计数)。52.则判断方式为:y%1000<x值为true,则命中新订单系统,否则命中原始订单系统。53.阶段阶段1阶段2阶段3阶段4阶段5阶段6x值01101005001000流量比例01‰10‰100‰500‰1000‰54.根据订单号更新,取消,查询订单——解析订单号区分新订单和原始订单。55.订单号前缀为n,则为新订单系统订单,则命中新系统,走新订单系统接口,否则走原始订单系统订单接口。56.数据双向同步工程,新订单向老订单系统同步步骤:拦截新订单数据写sql。57.解析:将sql语句解析出操作(insert,update,delete)、订单号(例如:n202108261100000010001255)、表名(order_table_xxx),参数。58.过滤:过滤掉老系统订单,即非n开头订单,防止数据回流。59.转换:表名order_table_xxx变为老系统表order_table。60.生成:生成老系统订单表对应sql,最后写入老订单系统数据库。61.原始订单系统向新订单系统同步步骤:拦截老订单数据写sql,解析:将sql语句解析出操作(insert,update,delete)、订单号(例如:202108261100000010002)、用户id(若sql语句里没有,查询订单表获取),表名(order_table),参数。62.过滤:过滤掉新系统订单,n开头订单,防止数据回流。63.转换:根据表名order_table,用户id按新系统分库分表路由策略,用户id%256变为新系统对应表order_table_xxx(xxx为用户id%256取模后结果,不足三位前面补0)。64.生成新系统订单表对应sql,最后写入新订单系统数据库。65.有益效果:订单系统重构提升系统性能;数据双向同步保证新、老数据库数据完全一样,灰度方案保证请求到新、老订单系统随时可控制,新订单系统请求从小到大平滑增加,这期间如果发现重构的新订单系统有任何问题,可以随时流量切回老订单系统、从而降低重构风险。66.以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1