国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于微服務(wù)的通信工程概預(yù)算系統(tǒng)的設(shè)計(jì)與研究

2019-01-02 09:01鄭明釗,張建強(qiáng),張高毓
軟件 2019年12期
關(guān)鍵詞:微服務(wù)

摘 ?要: 當(dāng)前通信行業(yè),已經(jīng)有許多WEB工具平臺(tái)來進(jìn)行預(yù)算。但是,它們預(yù)算方式不統(tǒng)一,無法統(tǒng)一管控。并且一旦工信部頒發(fā)相關(guān)定額或者計(jì)價(jià)方式的變更,各種系統(tǒng)需要重新改造,無疑加大了整體預(yù)算的成本。所以使用基于微服務(wù)架構(gòu)的通信工程概預(yù)算系統(tǒng)不但可以統(tǒng)一各個(gè)省份及地市的預(yù)算,而且一旦發(fā)生變化可以快速迭代、快速集成,能夠第一時(shí)間使用戶使用上最新的系統(tǒng)。當(dāng)前基于Spring Cloud的微服務(wù)架構(gòu)已經(jīng)在業(yè)內(nèi)比較成熟,它為本系統(tǒng)的實(shí)現(xiàn)提供了很好的技術(shù)支持。另外,Kubernetes和Jenkins也大大的簡(jiǎn)化了系統(tǒng)的運(yùn)維成本,可以做到自動(dòng)化的構(gòu)建、測(cè)試及部署。

關(guān)鍵詞: 通信工程概預(yù)算;微服務(wù);Spring Cloud;Kubernetes;Jenkins

中圖分類號(hào): TP311 ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.12.039

本文著錄格式:鄭明釗,張建強(qiáng),張高毓. 基于微服務(wù)的通信工程概預(yù)算系統(tǒng)的設(shè)計(jì)與研究[J]. 軟件,2019,40(12):174177

Design and Research of Budget System for the Telecommunication

Engineering Based on Micro-Service

ZHENG Ming-zhao, ZHANG Jian-qiang, ZHANG Gao-yu

(China Mobile Group Design Institute Co., LTD Shandong, Jinan 250101, China)

【Abstract】: In the current communications industry, there are many Web tools platform for budgeting. However, their budget methods are not unified and cannot be controlled uniformly. In addition, once the MIIT releases relevant quota or change of valuation method, all kinds of systems need to be remolded, which undoubtedly increases the cost of the overall budget. Therefore, the budget system for the telecommunication engineering based on micro-service architecture can not only unify the budgets of various provinces and municipalities, but also unify the budgets of every provinces and citys once changes occur. And once changes occuring, it can be rapidly iterated and rapidly integrated. And the users can use the latest system in the first time. Currently, the micro-service architecture based on Spring Cloud has been relatively mature in the industry, which provides good technical support for the implementation of this system. In addition, Kubernetes and Jenkins also greatly simplified the operation and save costs of the system. And it enables the system can be built and deployed automatically.

【Key words】: Budget for the telecommunication engineering; Micro-service; Spring Cloud; Kubernetes; Jenkins

0 ?引言

隨著我國(guó)社會(huì)的經(jīng)濟(jì)發(fā)展,為了滿足我國(guó)信息通信建設(shè)行業(yè)的發(fā)展要求,工信部頒布了最新的信息通信建設(shè)工程預(yù)算定額、工程費(fèi)用定額及工程概預(yù)算編制規(guī)程,以規(guī)范通信建設(shè)工程的計(jì)價(jià)行為。

當(dāng)前,通信業(yè)內(nèi)存在著很多相關(guān)的通信工程概預(yù)算系統(tǒng)[1],每次工信部在頒布最新定額,都需要重新調(diào)整系統(tǒng)以適應(yīng)最新的定額及計(jì)價(jià)方式。這無疑增加了系統(tǒng)維護(hù)人員的工作量,而且系統(tǒng)的重新改造開發(fā)都需要花費(fèi)大量的人力物力資源。且在當(dāng)前互聯(lián)網(wǎng)高速發(fā)展的時(shí)代,快速響應(yīng)快速迭代的需求也越來越高。所以,以往按部就班系統(tǒng)整體改造、開發(fā)、測(cè)試及部署的方式嚴(yán)重影響了系統(tǒng)的迭代能力。除此之外,不同省份與地市對(duì)于概預(yù)算的需求也有些不一致,一套固定的系統(tǒng)很難滿足全國(guó)所有通信行業(yè)的需求。

綜上兩個(gè)問題,使用微服務(wù)[2]架構(gòu)設(shè)計(jì)的通信工程概預(yù)算系統(tǒng)能夠?qū)τ谕话l(fā)的變化做出快速應(yīng)對(duì),通過修改個(gè)別服務(wù)做到快速迭代,且不需要整體部署,只需對(duì)發(fā)生改變的服務(wù)進(jìn)行重新部署即可。另外,使用微服務(wù)架構(gòu)[8]可以通過部署多種服務(wù)來滿足不同的業(yè)務(wù)需求。

1 ?需求分析

基于微服務(wù)的通信工程概預(yù)算系統(tǒng)主要功能需要完成對(duì)定額工日、使用材料、設(shè)備及機(jī)械等信息的計(jì)算得出最終的工程概預(yù)算計(jì)價(jià)結(jié)果。除了完成正常的概預(yù)算之外,由于系統(tǒng)使用微服務(wù)架構(gòu),則需要系統(tǒng)中有一個(gè)統(tǒng)一的服務(wù)注冊(cè)及發(fā)現(xiàn)中心,且概預(yù)算服務(wù)的部署都比較復(fù)雜,需要一個(gè)強(qiáng)大的自動(dòng)化運(yùn)維服務(wù)功能?;谝陨?,可以將系統(tǒng)的需求分為功能性需求和非功能性需求兩部分。

1.1 ?系統(tǒng)用例分析

本系統(tǒng)主要功能需求分為功能性需求及非功能性需求兩大部分。功能性需求主要有:概預(yù)算費(fèi)用計(jì)算、標(biāo)準(zhǔn)信息維護(hù)、概預(yù)算文件導(dǎo)出等功能;非功能系需求主要針對(duì)服務(wù)注冊(cè)發(fā)現(xiàn)、系統(tǒng)運(yùn)維方面,主要包括:服務(wù)注冊(cè)與發(fā)現(xiàn)、監(jiān)控與告警、系統(tǒng)運(yùn)行日志、自動(dòng)化構(gòu)建及部署等。系統(tǒng)用力分析圖如下圖1所示。

圖1 ?系統(tǒng)用例圖

Fig.1 ?System use case diagrams

1.2 ?核心功能需求

基于微服務(wù)的通信工程概預(yù)算系統(tǒng)其核心功能需要完成對(duì)項(xiàng)目工程的概預(yù)算計(jì)算以及完成對(duì)預(yù)算結(jié)果按照工信部標(biāo)準(zhǔn)出版格式生成Excel編制文件。主要包括:概預(yù)算費(fèi)用計(jì)算、標(biāo)準(zhǔn)信息維護(hù)、概預(yù)算文件導(dǎo)出等功能。

概預(yù)算費(fèi)用計(jì)算:根據(jù)錄入的基礎(chǔ)定額、材料、設(shè)備、儀表和機(jī)械等信息計(jì)算出表一至表五的費(fèi)用數(shù)據(jù)。

標(biāo)準(zhǔn)信息維護(hù):按照工信部下發(fā)標(biāo)準(zhǔn)定額信息,結(jié)合個(gè)人需求在系統(tǒng)內(nèi)維護(hù)工日、材料、機(jī)械、儀表等標(biāo)準(zhǔn)基礎(chǔ)數(shù)據(jù)。

概預(yù)算文件導(dǎo)出:按照工信部標(biāo)準(zhǔn)出版格式,生成概預(yù)算表格文件。

1.3 ?非核心功能需求

基于微服務(wù)的通信工程概預(yù)算系統(tǒng)由于使用的微服務(wù)方式部署,所以服務(wù)的數(shù)量和種類都會(huì)比較多,在部署的時(shí)候若要使用人工部署的方式會(huì)非常的麻煩和復(fù)雜。

基于系統(tǒng)能夠自動(dòng)化的快速部署的目的,其所需的非功能性需求有:服務(wù)注冊(cè)與發(fā)現(xiàn)、系統(tǒng)監(jiān)控與告警、系統(tǒng)日志功能以及系統(tǒng)自動(dòng)化構(gòu)建及部署功能。

服務(wù)注冊(cè)與發(fā)現(xiàn):注冊(cè)與發(fā)現(xiàn)概預(yù)算系統(tǒng)的計(jì)算服務(wù)、文件生成服務(wù),以及信息維護(hù)等服務(wù)。

系統(tǒng)監(jiān)控與告警:監(jiān)控系統(tǒng)的資源使用、服務(wù)運(yùn)行等情況,若發(fā)現(xiàn)異常會(huì)發(fā)出實(shí)時(shí)告警。

系統(tǒng)日志功能:記錄系統(tǒng)中硬件、軟件和系統(tǒng)問題的信息,記錄系統(tǒng)操作過程,同時(shí)還可以監(jiān)視系統(tǒng)中發(fā)生的事件。

系統(tǒng)自動(dòng)化構(gòu)建及部署:研發(fā)人員通過上傳代碼庫(kù)最新源碼,該功能會(huì)自動(dòng)對(duì)最新的源碼進(jìn)行構(gòu)建打包部署,使服務(wù)一直保持最新狀態(tài)。

2 ?系統(tǒng)架構(gòu)設(shè)計(jì)

根據(jù)上述需求分析,可以總結(jié)得出系統(tǒng)整體架構(gòu)設(shè)計(jì)如下圖所示。從下圖2可以看出本系統(tǒng)總共可以分為四大部分:接入網(wǎng)關(guān)、系統(tǒng)服務(wù)、注冊(cè)中心、系統(tǒng)運(yùn)維模塊。

2.1 ?系統(tǒng)數(shù)據(jù)存儲(chǔ)

通信工程概預(yù)算系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行操作如下圖3所示都是相互獨(dú)立的,各個(gè)服務(wù)之間都是通過相互調(diào)用Restful[3]接口來達(dá)到數(shù)據(jù)交互。

通過上圖可以知道基于微服務(wù)的通信工程概預(yù)算系統(tǒng)總共分為五種數(shù)據(jù):系統(tǒng)基本設(shè)置數(shù)據(jù)、基礎(chǔ)數(shù)據(jù)、文件數(shù)據(jù)、費(fèi)用計(jì)算數(shù)據(jù)以及標(biāo)準(zhǔn)信息數(shù)據(jù)。下面將對(duì)這幾種數(shù)據(jù)進(jìn)行分別的詳細(xì)闡述。

圖2 ?系統(tǒng)架構(gòu)圖

Fig.2 ?System architecture diagram

圖3 ?通信工程概預(yù)算系統(tǒng)數(shù)據(jù)流圖

Fig.3 ?Data flow diagram of communication engineering budget system

系統(tǒng)基本設(shè)置數(shù)據(jù):包括系統(tǒng)的計(jì)算精度、高原系統(tǒng)、運(yùn)送距離以及分段等信息;

基礎(chǔ)數(shù)據(jù):包括單項(xiàng)工程名稱、表格編號(hào)字頭、建設(shè)項(xiàng)目名稱、建設(shè)單位以及設(shè)計(jì)單位、定額及自定義公式等信息;

文件數(shù)據(jù):概預(yù)算結(jié)果文件導(dǎo)出時(shí),需要按照一定的標(biāo)準(zhǔn)格式生成,則文件數(shù)據(jù)即為這些標(biāo)準(zhǔn)格式文件;

費(fèi)用計(jì)算數(shù)據(jù):包括各個(gè)表格計(jì)算時(shí)涉及的相關(guān)費(fèi)率,以及計(jì)價(jià)方式等一些數(shù)據(jù);

標(biāo)準(zhǔn)信息數(shù)據(jù):標(biāo)準(zhǔn)信息,即工信部頒布的工日、材料、機(jī)械、儀表等信息。

2.2 ?系統(tǒng)業(yè)務(wù)邏輯

基于微服務(wù)的通信工程概預(yù)算系統(tǒng)主要依托于Spring Cloud[4]的框架來實(shí)現(xiàn),其中費(fèi)用計(jì)算為業(yè)務(wù)邏輯為核心模塊,其業(yè)務(wù)實(shí)現(xiàn)的邏輯圖如下圖4所示。

3 ?關(guān)鍵問題及解決方案

現(xiàn)實(shí)系統(tǒng)開發(fā)過程中,由于有很多的系統(tǒng)服務(wù),若要保證每個(gè)服務(wù)都有一個(gè)單獨(dú)的數(shù)據(jù)庫(kù)是非常不現(xiàn)實(shí)的,其中保證數(shù)據(jù)同步這一件事就會(huì)使得系統(tǒng)非常復(fù)雜。

圖4 ?費(fèi)用計(jì)算業(yè)務(wù)邏輯圖

Fig.4 ?Cost calculation business logic diagram

針對(duì)此問題,提出兩種解決方案:第一,即每種服務(wù)使用一個(gè)數(shù)據(jù)庫(kù),這樣的話相同服務(wù)之間會(huì)保證數(shù)據(jù)同步,且不同種類服務(wù)之間數(shù)據(jù)也是隔離的,不同服務(wù)之間相互調(diào)用通過restful方式來發(fā)送消息;第二,即沿用以前傳統(tǒng)的方式,整個(gè)系統(tǒng)使用單個(gè)數(shù)據(jù)庫(kù)[10-11],這樣保證了整個(gè)系統(tǒng)的數(shù)據(jù)同步,而且不會(huì)造成不同服務(wù)之間的數(shù)據(jù)差異。

基于本系統(tǒng)業(yè)務(wù)邏輯并非那么復(fù)雜,而且各個(gè)服務(wù)之間的調(diào)用數(shù)據(jù)傳輸量比較大,所以使用單個(gè)數(shù)據(jù)庫(kù)的方式,每個(gè)服務(wù)之間僅發(fā)送必要的請(qǐng)求即可,數(shù)據(jù)讀取通過數(shù)據(jù)庫(kù)即可。這樣既降低了系統(tǒng)

圖5 ?系統(tǒng)數(shù)據(jù)庫(kù)改造方案

Fig.5 ?System database reconstruction scheme

復(fù)雜度,也很好的遵循了微服務(wù)的架構(gòu)設(shè)計(jì)模式。其改造方案圖如下圖5所示。

4 ?關(guān)鍵技術(shù)

Spring Cloud: Spring Cloud是很多程序框架的組合。它大體包括服務(wù)發(fā)現(xiàn)注冊(cè)、負(fù)載均衡、斷路器,使用Spring Boot開發(fā)屏蔽掉了很多繁瑣的配置,大大簡(jiǎn)化了開發(fā)工作。另外使用整個(gè)技術(shù)路線,可以很方便的搭建起微服務(wù)的系統(tǒng)架構(gòu)平臺(tái)。

Eureka:Eureka集成于Spring Cloud,它實(shí)現(xiàn)了服務(wù)發(fā)現(xiàn)功能。Eureka包含兩個(gè)部分:Eureka Server和Eureka Client。Eureka Server用來進(jìn)行服務(wù)注冊(cè),Eureka Client用于簡(jiǎn)化與Eureka Server的交互,在本系統(tǒng)中負(fù)責(zé)概預(yù)算服務(wù)的注冊(cè)與發(fā)現(xiàn)。

Zuul:它是一個(gè)API Gateway服務(wù)器,在本系統(tǒng)中使用zuul來實(shí)現(xiàn)接入網(wǎng)關(guān),對(duì)外部請(qǐng)求進(jìn)行過濾等操作。

Restful API:RESTful[9]是一種標(biāo)準(zhǔn)的通信接口,在本系統(tǒng)中使用Restful API統(tǒng)一的接口來訪問數(shù)據(jù)庫(kù)從而獲取到相同的數(shù)據(jù)。

Docker容器:Docker[5,12]是一種應(yīng)用容器,可封裝應(yīng)用及運(yùn)行環(huán)境,進(jìn)而輕松的移植到其他系統(tǒng)上。

Jenkins:Jenkins[6]是一種自動(dòng)化的持續(xù)集成工具,可自動(dòng)化的重復(fù)構(gòu)建發(fā)布軟件,使得繁瑣的程序構(gòu)建打包過程變得自動(dòng)化,從而減輕了人工操作的壓力。

Kubernetes(k8s):Kubernetes[7]提供自動(dòng)化容器的部署和復(fù)制能力,根據(jù)系統(tǒng)實(shí)際應(yīng)用情況擴(kuò)展或收縮容器的數(shù)量和部署,且它還可以實(shí)現(xiàn)容器的負(fù)載均衡。

5 ?結(jié)束語(yǔ)

本文提出了使用微服務(wù)的架構(gòu)思想來統(tǒng)一構(gòu)建一套概預(yù)算系統(tǒng)的架構(gòu)方案,該方案不但在理論上進(jìn)行了介紹,而且還在具體的架構(gòu)實(shí)現(xiàn)進(jìn)行了分析,具有非常高的可行性。通過使用微服務(wù)的架構(gòu)不但規(guī)避了各種預(yù)算的差異,而且提升了計(jì)算的速度。如果真的應(yīng)用到實(shí)際的平臺(tái)環(huán)境中將會(huì)大大節(jié)約我們的開發(fā)成本,而且還會(huì)提高我們的工作效率。

參考文獻(xiàn)

[1]張延彬. 通信工程概預(yù)算編制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 山東大學(xué), 2010.

[2]郭棟, 王偉, 曾國(guó)蓀. 一種基于微服務(wù)架構(gòu)的新型云件PaaS平臺(tái)[J]. 信息網(wǎng)絡(luò)安全, 2015(11): 15-20.

[3]潘冰. 面向資源的RESTful Web應(yīng)用研究[J]. 微計(jì)算機(jī)應(yīng)用, 2010, 31(07): 38-43.

[4]梁安健, 胡寧, 羅劍武, 陳泫文. 基于Spring Cloud的微服務(wù)構(gòu)建及軟件云化應(yīng)用研究[J]. 電子產(chǎn)品可靠性與環(huán)境試驗(yàn), 2018, 36(S1): 105-109.

[5]劉思堯, 李強(qiáng), 李斌. 基于Docker技術(shù)的容器隔離性研究[J]. 軟件, 2015, 36(04): 110-113.

[6]陶鎮(zhèn)威. 基于Jenkins的持續(xù)集成研究與應(yīng)用[D]. 華南理工大學(xué), 2012.

[7]杜軍. 基于Kubernetes的云端資源調(diào)度器改進(jìn)[D]. 浙江大學(xué), 2016.

[8]郝振強(qiáng). 終端管理系統(tǒng)北向?qū)又形⒎?wù)的應(yīng)用研究[J]. 軟件, 2018, 39(11): 101-104.

[9]黃沛. 基于RESTful架構(gòu)的科技信息共享接口系統(tǒng)的設(shè)計(jì)[J]. 軟件, 2018, 39(7): 170-172.

[10]趙正旭, 白英杰, 吳曉進(jìn). 國(guó)產(chǎn)操作系統(tǒng)JSP服務(wù)器部署策略的設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件, 2018, 39(6): 196-200.

[11]韓凌波. 基于mvc 架構(gòu)的普法考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件, 2015, 36(3): 132-134.

[12]劉思堯, 李強(qiáng), 李斌. 基于Docker 技術(shù)的容器隔離性研究[J]. 軟件, 2015, 36(4): 110-113.

猜你喜歡
微服務(wù)
微信公眾平臺(tái)在醫(yī)院圖書館的應(yīng)用現(xiàn)狀調(diào)查
從單一模式系統(tǒng)架構(gòu)往微服務(wù)架構(gòu)遷移轉(zhuǎn)化技術(shù)研究
西乌| 湘阴县| 宜都市| 南漳县| 黑龙江省| 林西县| 洞口县| 昔阳县| 湖南省| 长宁县| 子洲县| 遂昌县| 红安县| 古丈县| 吴堡县| 浙江省| 寿光市| 绥宁县| 佛山市| 中牟县| 福州市| 杭锦后旗| 怀柔区| 渭南市| 远安县| 土默特右旗| 诏安县| 威信县| 阜宁县| 屏东市| 沙洋县| 宁夏| 乐陵市| 温州市| 黄陵县| 灵丘县| 天长市| 崇义县| 永安市| 如皋市| 孟津县|