系统分析过程—确定关键技术方案的可行性

系统分析过程到底该做什么,仅仅是产出一份系统分析文档吗?个人认为,系统分析的最重要的产出之一就是确定关键技术方案的可行性。
对于一些关键技术的选择,首先肯定是先选择已成熟的方案,避免重复发明轮子,但要注意的是,没有一种技术是适合 所有场景的,成熟的方案不一定适合解决当前的需求。如果在系统分析阶段不把这个问题确定,到编码阶段突然发现之前分析设计的方案不可行,那么就会造成设计变更,增大开发和测试的工作量,给项目会带来巨大的风险。
下面以最近做的一个需求为例来阐述:
现有有一个短信网关系统,该系统是CP与各运营商交互的中介,所有的下行和上行短信都必须经过该系统。 由于该系统产生的短信流水的量很大,亿级别,所以之前已经对DB进行了分库,分为三个库,每个库一张流水表,采用随机入库的算法。即使进行了分库,现在每张表的数据量仍然达到了亿级,而且还只保留最近三个月的数据,三个月前的数据由DBA的定时脚本进行清理。在后台专门有一个查询页面,供客服小二根据手机号和时间来查询短信流水。
由于业务的需要,客服小二提了一个查询需求,需要查询6个月内的短信流水。有人可能会问,这种查询需求为什么不交给数据仓库去做?原因是依赖数据仓库查询的过程太慢了,想一下这个场景:当一个客户打电话 给小二,咨询是否给他发过短信,但小二无法自己去查数据仓库,所以他需要走流程,提需求给数据仓库的人,运气好,数据仓库的技术人员会马上帮你查,运气不好,可能要搁很长时间,此时客户不骂你才怪呢。所以,数据仓库查询是不适合这种马上需要知道结果的查询场景,它一般适合用来做离线的批量统计对账。
所以,现在DB就需要保存6个月的数据(原来只保留3个月),意味着每张表的数据量会翻一倍,那么这个查询肯定会非常慢,有必要进行分表了。目前公司已经有了一个成熟的分库分表框架,只要配置分库分表的规则就可以直接采用,好像这就是最佳解决方案,当时需求到我这边的时候,定的方案确实就是采用这个。但大家没有弄清该系统存在这么一个现状,该短信流水已经采用了随机分库的规则,而且流水的生成是放在一个事务中的,该事务已经关联一个datasource,而如果采用该分库分表的框架,则需要将该流水对应的DAO关联到另一个datasource上,现在矛盾就出现了:两个不同的datasource是无法放在同一个事务里的(不考虑分布式事务,因为仅仅为了一个后台查询而采用这种方案,会大大增加系统复杂度),而且原来随机分库的规则是不可能更改的(因为随机分库可以提高可用性,譬如一个手机号对应流水如果插入某个库失败,则可以随机选择另外一个库插入。而如果采用某种规则进行分库(譬如根据手机号分库),那么该手机号对应的流水就永远插入不成功,影响可用性)。所以这个方案是不可行的,需要寻找新的解决方案。
新的方案就是仍采用原来的随机分库规则,只进行分表,所以datasource保持不变,不影响原来的事务逻辑。原来是每个库里一张表,现在按月份分成12张表,那么每张表的数据量相比于之前就会缩小3倍(原来是3个月的数据存储在一张表里,现在是3个月的数据存储在3张表中),而且即使将来有需求要保留12个月的数据,每张表的数据量仍然不会增加。 所以是满足查询需求的,当然该方案的分表规则就需要应用系统自己实现了,其实是很简单的,采用ibatis的动态表名技术就可以了。
还有一点需要提的是,原来的查询是直接从主库查询的,这样导致的后果是如果查询使得DB抖动,则会影响其他的主业务流程,因此本次决定改造为从备库中查询。
记流水帐似的写了这么多,其实就想说明一点:系统分析过程中最重要的产出就是确定关键技术的可行性,切勿把这种不确定性留到编码阶段。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《航天任务分析和系统设计.pdf》主要介绍了航天任务的分析和系统设计的相关知识。航天任务的分析是指通过对任务的需求、目标、限制条件和影响因素等进行综合分析和评估,得出任务的可行性可行性分析结果。而航天任务的系统设计是指在任务分析的基础上,根据任务的要求和目标,采用系统工程的原则和方法,制定出相应的航天任务系统设计方案。 该文件首先介绍了航天任务分析的基本概念和步骤。航天任务分析的基本概念包括了任务需求分析、任务目标分析、任务限制条件分析和任务影响因素分析等。任务需求分析是指对任务进行详细的分析和研究,确定任务的需求和目标。任务目标分析是指对任务的目标进行分析和评估,确定任务的目标是否符合实际情况。任务限制条件分析是指对任务的限制条件进行分析和评估,确定任务的限制条件是否符合任务的实际需求。任务影响因素分析是指对任务的影响因素进行分析和评估,确定任务的影响因素对任务的影响程度。 该文件还介绍了航天任务的系统设计的基本原则和方法。航天任务的系统设计是指根据任务分析的结果,制定出相应的系统设计方案。系统设计的基本原则包括系统的完整性、灵活性、可靠性、经济性和安全性等。系统设计的基本方法包括需求分析、概念设计、详细设计和评估等。 总体而言,《航天任务分析和系统设计.pdf》从航天任务分析和系统设计的角度对航天任务进行了详细介绍和分析,对航天任务的实施具有重要意义。通过阅读和学习该文件,可以更好地理解航天任务分析和系统设计的相关知识,提高航天任务的执行水平和效果。 ### 回答2: 《航天任务分析和系统设计.pdf》是一份关于航天任务分析和系统设计的文件。航天任务分析是指对航天任务的目标、需求、限制、影响因素以及任务执行步骤进行全面分析的过程。而系统设计则是指根据分析结果,对航天任务所需系统的组织结构、功能模块、数据流动、性能要求等进行详细规划的过程。 该文件主要内容包括以下几个方面: 1.航天任务概述:对航天任务的目标、背景、意义进行介绍,明确任务的重要性和价值。 2.任务需求分析:对航天任务的各项需求进行深入分析,包括任务执行环境、任务目标、任务执行时间、任务执行资源等。 3.任务限制和影响因素分析:对航天任务执行过程中可能存在的限制和影响因素进行识别和分析,包括经济、技术、法律等方面的限制。 4.任务执行步骤分析:对航天任务执行的关键步骤和流程进行详细分析,包括任务准备、任务执行、任务监控等。 5.系统设计:基于任务分析的结果,对航天任务所需的系统进行设计,包括系统的组织结构、功能模块、数据流动、性能要求等。 6.系统评估:对设计的系统进行全面评估,包括技术可行性、资源可行性、实施可行性等方面的评估。 7.总结和展望:对航天任务分析和系统设计的结果进行总结,并展望未来的发展方向和可能存在的挑战。 通过对《航天任务分析和系统设计.pdf》的研读和理解,可以获得全面的航天任务分析和系统设计知识,对于航天任务的规划和执行具有指导作用。 ### 回答3: 《航天任务分析和系统设计.pdf》是一份关于航天任务分析和系统设计的文件。航天任务分析是指对航天任务进行全面而系统的分析研究,旨在确定任务目标、分析任务需求,并制定相应的任务规划和任务方案。而航天系统设计则是根据航天任务的特点和要求,设计出相应的航天系统。 文件中,首先介绍了航天任务分析的意义和目的。航天任务分析是为了保证航天任务的安全和顺利进行,需要对任务的各个方面进行全面而细致的分析和研究,以确保任务目标的实现。在任务分析过程中,需要对任务的需求、技术、资源、风险等方面进行综合考虑,制定出科学合理的任务规划和任务方案。 接着,文件详细阐述了航天系统设计的重要性和内容。航天系统设计是为了满足航天任务的需求,设计出具有可行性和可靠性的系统。航天系统设计包括对系统的功能需求、性能指标、技术指标、结构布置、器件选型等方面进行设计和优化。同时,还需要考虑系统的可靠性、安全性、可维护性等因素,确保系统能够在极端环境下正常运行。 最后,文件中还对航天任务分析和系统设计的流程和方法进行了介绍。通过对任务需求和系统要求的分析,确定任务目标和系统设计目标;通过对技术可行性和资源评估,确定任务方案和系统方案;通过模型仿真和实验验证,对系统进行性能和可靠性分析,优化系统设计;最终形成完整的航天任务分析和系统设计报告。 综上所述,《航天任务分析和系统设计.pdf》是一份介绍航天任务分析和系统设计的文件,它详细介绍了任务分析的意义和目的,系统设计的重要性和内容,以及任务分析和系统设计的流程和方法。这份文件对于航天任务的顺利进行和系统设计的科学合理具有重要的参考价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值