通信工程概预算系统设计研究

通信工程概预算系统设计研究

0引言

随着我国社会的经济发展,为了满足我国信息通信建设行业的发展要求,工信部颁布了最新的信息通信建设工程预算定额、工程费用定额及工程概预算编制规程,以规范通信建设工程的计价行为。当前,通信业内存在着很多相关的通信工程概预算系统[1],每次工信部在颁布最新定额,都需要重新调整系统以适应最新的定额及计价方式。这无疑增加了系统维护人员的工作量,而且系统的重新改造开发都需要花费大量的人力物力资源。且在当前互联网高速发展的时代,快速响应快速迭代的需求也越来越高。所以,以往按部就班系统整体改造、开发、测试及部署的方式严重影响了系统的迭代能力。除此之外,不同省份与地市对于概预算的需求也有些不一致,一套固定的系统很难满足全国所有通信行业的需求。综上两个问题,使用微服务[2]架构设计的通信工程概预算系统能够对于突发的变化做出快速应对,通过修改个别服务做到快速迭代,且不需要整体部署,只需对发生改变的服务进行重新部署即可。另外,使用微服务架构[8]可以通过部署多种服务来满足不同的业务需求。

1需求分析

基于微服务的通信工程概预算系统主要功能需要完成对定额工日、使用材料、设备及机械等信息的计算得出最终的工程概预算计价结果。除了完成正常的概预算之外,由于系统使用微服务架构,则需要系统中有一个统一的服务注册及发现中心,且概预算服务的部署都比较复杂,需要一个强大的自动化运维服务功能。基于以上,可以将系统的需求分为功能性需求和非功能性需求两部分。

1.1系统用例分析

本系统主要功能需求分为功能性需求及非功能性需求两大部分。功能性需求主要有:概预算费用计算、标准信息维护、概预算文件导出等功能;非功能系需求主要针对服务注册发现、系统运维方面,主要包括:服务注册与发现、监控与告警、系统运行日志、自动化构建及部署等。

1.2核心功能需求

基于微服务的通信工程概预算系统其核心功能需要完成对项目工程的概预算计算以及完成对预算结果按照工信部标准出版格式生成Excel编制文件。主要包括:概预算费用计算、标准信息维护、概预算文件导出等功能。概预算费用计算:根据录入的基础定额、材料、设备、仪表和机械等信息计算出表一至表五的费用数据。标准信息维护:按照工信部下发标准定额信息,结合个人需求在系统内维护工日、材料、机械、仪表等标准基础数据。概预算文件导出:按照工信部标准出版格式,生成概预算表格文件。

1.3非核心功能需求

基于微服务的通信工程概预算系统由于使用的微服务方式部署,所以服务的数量和种类都会比较多,在部署的时候若要使用人工部署的方式会非常的麻烦和复杂。基于系统能够自动化的快速部署的目的,其所需的非功能性需求有:服务注册与发现、系统监控与告警、系统日志功能以及系统自动化构建及部署功能。服务注册与发现:注册与发现概预算系统的计算服务、文件生成服务,以及信息维护等服务。系统监控与告警:监控系统的资源使用、服务运行等情况,若发现异常会发出实时告警。系统日志功能:记录系统中硬件、软件和系统问题的信息,记录系统操作过程,同时还可以监视系统中发生的事件。系统自动化构建及部署:研发人员通过上传代码库最新源码,该功能会自动对最新的源码进行构建打包部署,使服务一直保持最新状态。

2系统架构设计

根据上述需求分析,可以总结得出系统整体架构设计如下图所示。从下图2可以看出本系统总共可以分为四大部分:接入网关、系统服务、注册中心、系统运维模块。

2.1系统数据存储

通信工程概预算系统对数据进行操作如下图3所示都是相互独立的,各个服务之间都是通过相互调用Restful[3]接口来达到数据交互。通过上图可以知道基于微服务的通信工程概预算系统总共分为五种数据:系统基本设置数据、基础数据、文件数据、费用计算数据以及标准信息数据。系统基本设置数据:包括系统的计算精度、高原系统、运送距离以及分段等信息;基础数据:包括单项工程名称、表格编号字头、建设项目名称、建设单位以及设计单位、定额及自定义公式等信息;文件数据:概预算结果文件导出时,需要按照一定的标准格式生成,则文件数据即为这些标准格式文件;费用计算数据:包括各个表格计算时涉及的相关费率,以及计价方式等一些数据;标准信息数据:标准信息,即工信部颁布的工日、材料、机械、仪表等信息。

2.2系统业务逻辑

基于微服务的通信工程概预算系统主要依托于SpringCloud[4]的框架来实现,其中费用计算为业务逻辑为核心模块,其业务实现的逻辑图如下图4所示。

3关键问题及解决方案

现实系统开发过程中,由于有很多的系统服务,若要保证每个服务都有一个单独的数据库是非常不现实的,其中保证数据同步这一件事就会使得系统非常复杂。针对此问题,提出两种解决方案:第一,即每种服务使用一个数据库,这样的话相同服务之间会保证数据同步,且不同种类服务之间数据也是隔离的,不同服务之间相互调用通过restful方式来发送消息;第二,即沿用以前传统的方式,整个系统使用单个数据库[10-11],这样保证了整个系统的数据同步,而且不会造成不同服务之间的数据差异。基于本系统业务逻辑并非那么复杂,而且各个服务之间的调用数据传输量比较大,所以使用单个数据库的方式,每个服务之间仅发送必要的请求即可,数据读取通过数据库即可。这样既降低了系统复杂度,也很好的遵循了微服务的架构设计模式。其改造方案图如下图5所示。

4关键技术

SpringCloud:SpringCloud是很多程序框架的组合。它大体包括服务发现注册、负载均衡、断路器,使用SpringBoot开发屏蔽掉了很多繁琐的配置,大大简化了开发工作。另外使用整个技术路线,可以很方便的搭建起微服务的系统架构平台。

5结束语

本文提出了使用微服务的架构思想来统一构建一套概预算系统的架构方案,该方案不但在理论上进行了介绍,而且还在具体的架构实现进行了分析,具有非常高的可行性。通过使用微服务的架构不但规避了各种预算的差异,而且提升了计算的速度。如果真的应用到实际的平台环境中将会大大节约我们的开发成本,而且还会提高我们的工作效率。

作者:郑明钊 张建强 张高毓 单位:中国移动通信集团设计院有限公司山东分公司