谈模块独立拆分上线一些经验

简介: 上线时间:20151214    就在2015年12月14日,我们财务研发部的财务独立系统(简称财务系统)上线了,总的来说是很成功的,但是里面有一些细节,还是值得总结的,有出现的问题,也有一些实施的方案,下面我说来总结几点。

上线时间:20151214


    就在20151214日,我们财务研发部的财务独立系统(简称财务系统)上线了,总的来说是很成功的,但是里面有一些细节,还是值得总结的,有出现的问题,也有一些实施的方案,下面我说来总结几点。

一、出现的问题,也就是最大的失误,就是线上环境数据库和本地环境数据库不同,当时本地测试使用的是订单主数据库,而线上考虑到不能影响订单数据库性能,只能让我们使用从库,我画个丑点的图表示一下。

正常的操作流程图:



出问题的情况图:

 


这种情况,造成的问题是什么?本地测试时,没有问题,线上运行时,有问题,而且,如果不仔细想,想破脑袋也想不出问题出在哪,这种问题也是最难找的。

我要表达的意思就是,很多情况测试没问题,程序没问题,运行时有BUG,找问题侧重于思考运行环境等方面的问题,是环境不一样,或者是系统压力不一样等等引发的问题。


二、系统拆分方案,也是当初着手做这项工作时,非常棘手的一个问题。能不能拆出来,用什么方案,像数据同步方案,订单系统和财务系统之间之前的很密切的互相调用等等,是用同步还是异步。开始考虑了消息队列,后面发现实施起来很麻烦,订单系统各个点要发半空消息,财务系统这边也要获取消息队列,数据庞大的情况下,能不能及时处理也是个问题,后来最终使用的是财务数据库使用SQL语句链接订单数据库服务器进行数据同步,这种相对来说比较轻量级,也不需要对程序进行改动,相对来说减少了很大一部分工作量。在程序是,我们对重要的一起系统间的调用,使用了事务补偿的方案,比如:系统A调用系统B,在系统B产生了一条数据,如果系统A在那个事务里失败了,但又不能操作系统B的数据库,那么,系统B的自动作业中,会检测系统A事务处理的状态为失败,就把对应系统B中产生的数据删除或做其他处理,这就是事务补偿。


三、程序上加一个开关,来快速处理回滚的问题。就是如果上线后,发现拆分出来的财务系统有问题,不能用,那么,通过一个配置开关,就能直接用回原来的未拆分时的系统。意思就是做系统拆分,不能只考虑一刀切(最理想的状况),还要考虑到如果有问题,如何快速还原到之前正确的状态,通俗点就是留条后路。


四、时刻记住自己的目标,不能乱做。比如我们拆分初期,原来的模块就不是很完善,需要还想着在拆分时完善一下系统,人力不够,时间不够,那时候真的是有点做不下去,后面,我们也确定了拆分的目的,就是把原来的功能拆下来,哪怕原来的有些部分功能是错的,也不要花太多时间去改,记录下来哪些有问题,拆出来了再去完善,不然拆分基本的任务都完不成,怎么去完善。


五、关于程序优化方面,主要是数据库保存数据比较耗时,比如要保存100条数据到数据库,那能想到的策略就是先放在内存,在最后时刻才将数据一次性保存到数据库,这样能减少与数据的连接次数,从而减少浪费时间提高程序性能。就像现在的迅雷下载、旋风下载等等都有缓存,可以设置(假设使用旋风下载:缓存设置成256M,每秒下载1M,都是保存到内存,满256M时,才一次性地保存到硬盘上,可以在任务管理器中直观地看到QQDownload.exe进程,从几十M慢慢变到2~300M,然后又变成几十M,一直循环)。





相关文章
|
3月前
|
Serverless 云计算 开发者
工程代码编写问题之理解工程设计中的强独立、弱独立和不独立如何解决
工程代码编写问题之理解工程设计中的强独立、弱独立和不独立如何解决
33 2
|
3月前
|
前端开发 数据处理 Android开发
Android项目架构设计问题之业务间的解耦合如何解决
Android项目架构设计问题之业务间的解耦合如何解决
33 1
|
3月前
|
SQL 分布式计算 大数据
Android项目架构设计问题之平衡技术选型与业务需求之间的关系如何解决
Android项目架构设计问题之平衡技术选型与业务需求之间的关系如何解决
59 0
|
4月前
|
Java Spring
通用研发提效问题之配置的若干场景下若干方案的变化该如何解决
通用研发提效问题之配置的若干场景下若干方案的变化该如何解决
|
4月前
|
存储 对象存储
业务系统架构实践问题之在设计领域时配置与单据之间的关系如何解决
业务系统架构实践问题之在设计领域时配置与单据之间的关系如何解决
|
4月前
|
监控
交易平台---架构设计第一步拆分模块,拆分为7个模块
交易平台---架构设计第一步拆分模块,拆分为7个模块
|
6月前
|
前端开发
第8期 volta保证团队开发环境的完全统一
第8期 volta保证团队开发环境的完全统一
51 0
|
11月前
|
Cloud Native 前端开发
【性能优化上】第三方组织结构同步优化一,分状态,分步骤的设计,你 get 到了吗?
【性能优化上】第三方组织结构同步优化一,分状态,分步骤的设计,你 get 到了吗?
|
敏捷开发 测试技术
推三返一开发稳定版丨推三返一项目系统开发详细指南/方案需求/步骤逻辑/流程功能/案例设计/技术架构/源码程序
推三返一系统开发是一种软件开发模式,也被称为迭代增量开发模式。它是一种敏捷开发方法的一种,通过将整个开发过程分为多个迭代周期,每个周期都会增加新的功能和特性,并在每个迭代周期结束后进行测试、反馈和修改。推三返一系统开发的核心思想是“推进三步,反馈一步”。
|
数据采集 搜索推荐 安全
独立站Shopify优化怎么做?
答案是:足够多的GPB外链+足够多的优质内容。 Shopify优化是电商企业必不可少的一步,优化Shopify可以帮助你的在线店铺在Google搜索引擎中获取更高的排名,从而吸引更多的流量和潜在客户。 以下将介绍一些关键的Shopify优化步骤。
150 0
独立站Shopify优化怎么做?
下一篇
无影云桌面