999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于微服務(wù)的維修資金管理系統(tǒng)①

2019-04-29 08:58:16劉從軍
關(guān)鍵詞:資金功能工程

劉從軍,劉 毅

1(江蘇科技大學(xué) 計(jì)算機(jī)學(xué)院,鎮(zhèn)江 212003)

2(江蘇科大匯峰科技有限公司,鎮(zhèn)江 212003)

“微服務(wù)”的概念,雖然誕生時(shí)間不長(zhǎng),卻迅速的成為了軟件架構(gòu)領(lǐng)域爭(zhēng)相討論的熱點(diǎn).在微服務(wù)架構(gòu)理論不斷完善的同時(shí),具體實(shí)施微服務(wù)架構(gòu)的相關(guān)技術(shù)框架也正在不斷的涌現(xiàn)出來(lái).

國(guó)內(nèi)最出名的微服務(wù)框架是阿里巴巴旗下服務(wù)化治理框架Dubbo,該框架目前除了應(yīng)用于阿里巴巴集團(tuán)的各成員站點(diǎn),也被國(guó)內(nèi)很多互聯(lián)網(wǎng)公司使用.

國(guó)外的微服務(wù)框架Spring Cloud 最為突出,Spring Cloud 是Spring 家族的產(chǎn)品,它包含了開(kāi)發(fā)分布式系統(tǒng)所必需的多個(gè)組件,覆蓋了微服務(wù)架構(gòu)開(kāi)發(fā)的方方面面,在微服務(wù)開(kāi)發(fā)中相對(duì)比較成熟.微服務(wù)框架在各個(gè)系統(tǒng)中的應(yīng)用也越來(lái)越廣泛.

相對(duì)于微服務(wù)架構(gòu),傳統(tǒng)的單體式架構(gòu)系統(tǒng)往往存在以下的問(wèn)題:

(1)開(kāi)發(fā)效率低:代碼的編寫(xiě)在同一個(gè)項(xiàng)目中進(jìn)行,開(kāi)發(fā)人員提交代碼時(shí)沖突嚴(yán)重.

(2)代碼維護(hù)難:項(xiàng)目中包含太多模塊,模塊之間耦合性高,當(dāng)某一功能需要修改時(shí),可能會(huì)關(guān)聯(lián)或影響到其他功能的使用[1].

(3)部署效率低:?jiǎn)误w式架構(gòu)需要整體部署,修改系統(tǒng)中一個(gè)小功能都需要重新部署應(yīng)用.當(dāng)項(xiàng)目功能復(fù)雜、代碼量大的時(shí)候,構(gòu)建和部署項(xiàng)目需要花費(fèi)大量時(shí)間,并且當(dāng)修改其中一個(gè)功能時(shí),雖然其他功能沒(méi)有問(wèn)題,但依然不能正常使用[2].

(4)可靠性不高:所有模塊運(yùn)行在同一進(jìn)程.任何一個(gè)模塊出現(xiàn)故障,可能會(huì)導(dǎo)致整個(gè)系統(tǒng)崩潰.

(5)擴(kuò)展能力低:因?yàn)閭€(gè)模塊之間耦合度高,需要添加新的功能時(shí),往往需要大規(guī)模的改動(dòng)項(xiàng)目.

隨著房地產(chǎn)市場(chǎng)的飛速發(fā)展,房屋的維修資金的交存使用以及監(jiān)管問(wèn)題成為了廣大業(yè)主以及政府相關(guān)部門(mén)所關(guān)心的重要問(wèn)題[3].目前存在的住宅維修資金管理系統(tǒng),大多屬于基于單體式架構(gòu)的應(yīng)用系統(tǒng),這些系統(tǒng)也存在著這些問(wèn)題:1)系統(tǒng)每一個(gè)功能的新增或者修改都需要重新部署整個(gè)系統(tǒng),屆時(shí)其他功能也無(wú)法使用.如新增維修資金查詢(xún)的圖表分析的功能時(shí),雖然只涉及到查詢(xún)部分的功能,但是資金交存以及資金的使用辦理等功能依然無(wú)法使用.2)系統(tǒng)資金交存辦理時(shí),如果同一時(shí)刻交存人數(shù)過(guò)多,系統(tǒng)處理特別慢,系統(tǒng)性能不足以支撐高并發(fā)訪問(wèn).3)系統(tǒng)中如果某一功能出現(xiàn)故障,會(huì)導(dǎo)致整個(gè)系統(tǒng)不可用.比如系統(tǒng)中的查詢(xún)模塊出現(xiàn)問(wèn)題時(shí),整個(gè)系統(tǒng)都會(huì)崩潰不能運(yùn)行,此時(shí)資金交存、使用等功能雖然沒(méi)有問(wèn)題仍會(huì)不可使用.

為解決現(xiàn)階段維修資金管理系統(tǒng)建設(shè)中存在的問(wèn)題,本文提出了基于Spring Cloud 的微服務(wù)架構(gòu),將系統(tǒng)中高度耦合的功能分解到各個(gè)離散的微服務(wù)中以實(shí)現(xiàn)對(duì)應(yīng)用系統(tǒng)的解耦[4].將系統(tǒng)拆分為幾個(gè)微服務(wù)同時(shí)進(jìn)行開(kāi)發(fā),加快系統(tǒng)開(kāi)發(fā)周期,降低了系統(tǒng)部署的難度.每個(gè)服務(wù)之間通過(guò)RESTful API 接口進(jìn)行通信,以業(yè)務(wù)為中心,構(gòu)建起自動(dòng)化運(yùn)行機(jī)制,實(shí)現(xiàn)了集中式管理[5].

1 微服務(wù)架構(gòu)

1.1 微服務(wù)架構(gòu)介紹

微服務(wù)架構(gòu)(Microservice Architect)是近年來(lái)軟件開(kāi)發(fā)領(lǐng)域興起的一種新型軟件架構(gòu),它提倡將單塊架構(gòu)的應(yīng)用劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶(hù)提供最終價(jià)值[6].每個(gè)服務(wù)運(yùn)行在其獨(dú)立的進(jìn)程中,服務(wù)與服務(wù)間采用輕量級(jí)的通信機(jī)制互相溝通[7].每個(gè)服務(wù)都圍繞著具體業(yè)務(wù)進(jìn)行構(gòu)建,并且能夠被獨(dú)立的部署到生產(chǎn)環(huán)境、類(lèi)生產(chǎn)環(huán)境等.微服務(wù)架構(gòu)旨在通過(guò)將功能分解到各個(gè)離散的服務(wù)中以實(shí)現(xiàn)對(duì)解決方案的解耦[8].

微服務(wù)架構(gòu)如圖1所示.

圖1 微服務(wù)架構(gòu)圖

微服務(wù)架構(gòu)的優(yōu)點(diǎn)[9]可以總結(jié)如下:

(1)微服務(wù)將巨大單體式應(yīng)用分解為多個(gè)小服務(wù),每個(gè)服務(wù)業(yè)務(wù)清晰、功能明確簡(jiǎn)單、代碼量小,開(kāi)發(fā)和維護(hù)單個(gè)微服務(wù)相對(duì)簡(jiǎn)單.解決了系統(tǒng)開(kāi)發(fā)和維護(hù)的復(fù)雜性問(wèn)題.

(2)每個(gè)微服務(wù)可以有不同的人員進(jìn)行開(kāi)發(fā),并且開(kāi)發(fā)技術(shù)棧不受限制,開(kāi)發(fā)人員可以采取不同的技術(shù)進(jìn)行開(kāi)發(fā).

(3)每個(gè)微服務(wù)可以獨(dú)立的部署,相對(duì)于單體應(yīng)用來(lái)說(shuō),微服務(wù)架構(gòu)下若某一功能需求發(fā)生變更,只需對(duì)這一單獨(dú)的服務(wù)重新編碼部署,不影響其他服務(wù)的使用.

(4)每個(gè)服務(wù)獨(dú)立擴(kuò)展,可以根據(jù)新的需求,實(shí)現(xiàn)細(xì)粒度的擴(kuò)展.

1.2 Spring Cloud 微服務(wù)框架

Spring Cloud 是一個(gè)微服務(wù)框架,主要為了簡(jiǎn)化分布式系統(tǒng)的開(kāi)發(fā).利用Spring Boot 一鍵啟動(dòng)、部署的特點(diǎn)對(duì)云應(yīng)用開(kāi)發(fā)中的服務(wù)注冊(cè)發(fā)現(xiàn)、API Gateway、斷路器、服務(wù)配置治理、負(fù)載均衡等操作都提供了簡(jiǎn)單的開(kāi)發(fā)方式.

由于Spring Cloud 微服務(wù)框架相對(duì)于其他微服務(wù)框架更為成熟,Spring 社區(qū)也更為活躍,故選用Spring Cloud 作為系統(tǒng)微服務(wù)的開(kāi)發(fā)框架.

2 系統(tǒng)分析與設(shè)計(jì)

2.1 系統(tǒng)需求分析

國(guó)務(wù)院頒布的《住宅共用部分設(shè)施設(shè)備維修基金管理辦法》中對(duì)“維修基金”的定義是:專(zhuān)項(xiàng)用于住宅共用部位、共用設(shè)施設(shè)備保修期滿(mǎn)后的大修、更新、改造的資金[10].

隨著各地房地產(chǎn)業(yè)的發(fā)展,維修資金的使用的管理越來(lái)越復(fù)雜,這就需要建立科學(xué)的、信息化的管理體系,來(lái)實(shí)現(xiàn)維修資金的自動(dòng)化管理[11].住宅維修資金管理系統(tǒng)應(yīng)該滿(mǎn)足以下的需求:

(1)對(duì)小區(qū)、樓盤(pán)以及資金交存的銀行和業(yè)主等信息進(jìn)行整合,建立房屋的信息數(shù)據(jù)庫(kù),實(shí)現(xiàn)對(duì)小區(qū)、樓盤(pán)等信息的規(guī)范化管理.

(2)建立一套規(guī)范而且完善的住房維修資金管理業(yè)務(wù)流程,實(shí)現(xiàn)維修資金交存、使用等管理工作的規(guī)范化與自動(dòng)化.

(3)實(shí)現(xiàn)維修工程、意見(jiàn)征詢(xún)以及資金撥付等審批的科學(xué)化、信息化.使業(yè)務(wù)的審核流程變得更為簡(jiǎn)便快捷.

(4)實(shí)現(xiàn)對(duì)維修工程數(shù)據(jù)以及資金交存、使用等數(shù)據(jù)的統(tǒng)計(jì)分析.方便業(yè)主查詢(xún)自己的維修資金,方便領(lǐng)導(dǎo)對(duì)維修工程的審查與決策.

根據(jù)系統(tǒng)的功能需求,分析得出系統(tǒng)的業(yè)務(wù)流程主要分為資金的交存和使用兩部分,系統(tǒng)總體的業(yè)務(wù)流程圖如圖2所示.

圖2 系統(tǒng)業(yè)務(wù)流程圖

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

2.2.1 微服務(wù)拆分

根據(jù)系統(tǒng)的需求分析,將整個(gè)系統(tǒng)分為4 個(gè)微服務(wù)模塊來(lái)完成功能開(kāi)發(fā),分別是基礎(chǔ)數(shù)據(jù)管理服務(wù)、資金交存服務(wù)、資金使用服務(wù)、查詢(xún)統(tǒng)計(jì)服務(wù).四個(gè)微服務(wù)的功能如下:

基礎(chǔ)數(shù)據(jù)管理服務(wù)主要包括對(duì)樓盤(pán)信息、物業(yè)區(qū)域信息、物業(yè)公司信息、維修公司信息、開(kāi)發(fā)企業(yè)信息、銀行信息和銀行賬戶(hù)信息等數(shù)據(jù)的管理.

資金交存服務(wù)主要是指資金交存管理、資金續(xù)交、交存調(diào)整三個(gè)功能.

資金使用服務(wù)包括從維修工程開(kāi)始到資金結(jié)付等所有內(nèi)容,是住宅專(zhuān)項(xiàng)維修資金管理的重要組成部分.主要是維修工程申報(bào)和審核、維修意見(jiàn)的征詢(xún)和審核、維修工程的驗(yàn)收和審核以及維修資金的撥付和審批.

查詢(xún)與統(tǒng)計(jì)分析模塊包括了維修資金交存記錄查詢(xún)、維修資金使用記錄查詢(xún)、銀行賬戶(hù)流水查詢(xún)、維修工程信息查詢(xún)以及這些數(shù)據(jù)的圖表統(tǒng)計(jì)和報(bào)表打印等.

2.2.2 微服務(wù)總體架構(gòu)設(shè)計(jì)

為了住宅專(zhuān)項(xiàng)維修資金管理系統(tǒng)每個(gè)微服務(wù)的開(kāi)發(fā)與分工更容易界定,同時(shí)降低開(kāi)發(fā)難度并且提升工作效率;以及系統(tǒng)后期部署時(shí),可以實(shí)現(xiàn)業(yè)務(wù)邏輯和應(yīng)用界面分別部署在不同的服務(wù)器中,提高系統(tǒng)服務(wù)的并行性能,并且系統(tǒng)各服務(wù)依賴(lài)的數(shù)據(jù)庫(kù)也單獨(dú)部署,提升系統(tǒng)數(shù)據(jù)的安全性和可靠性;為系統(tǒng)復(fù)雜的業(yè)務(wù)流程之間的關(guān)系解耦,使系統(tǒng)達(dá)到“高內(nèi)聚,低耦合”的設(shè)計(jì)目標(biāo)而采用了分層架構(gòu)的設(shè)計(jì)模式.依照以上設(shè)計(jì)原則,將系統(tǒng)分為基礎(chǔ)支撐層、數(shù)據(jù)層、服務(wù)層、接口層以及應(yīng)用層進(jìn)行開(kāi)發(fā),系統(tǒng)架構(gòu)圖如圖3所示.各層包含內(nèi)容如下:

(1)基礎(chǔ)支撐層:主要包括機(jī)房、服務(wù)器及網(wǎng)絡(luò)設(shè)備、安全組件和光纖寬帶接入等組成,支撐和保障了整個(gè)服務(wù)平臺(tái)穩(wěn)定安全的運(yùn)行.

(2)數(shù)據(jù)層:數(shù)據(jù)層主要包資金信息的數(shù)據(jù)、項(xiàng)目信息的數(shù)據(jù)、和電子材料數(shù)據(jù)等.項(xiàng)目采用統(tǒng)一的數(shù)據(jù)中心管理模式,對(duì)平臺(tái)數(shù)據(jù)進(jìn)行統(tǒng)一有效的管理,解決各服務(wù)間數(shù)據(jù)對(duì)接和數(shù)據(jù)共享問(wèn)題.

(3)平臺(tái)服務(wù)層:主要包括基礎(chǔ)的業(yè)務(wù)服務(wù)如基礎(chǔ)數(shù)據(jù)管理服務(wù)、資金交存服務(wù)、資金使用服務(wù)和查詢(xún)統(tǒng)計(jì)分析服務(wù).還包括以Spring Cloud 為基礎(chǔ)的微服務(wù)架構(gòu)服務(wù),如微服務(wù)的基石服務(wù)注冊(cè)和發(fā)現(xiàn)組件Eureka、基于Ribbon 的負(fù)載均衡組件、基于Hystrix斷路器及容錯(cuò)處理機(jī)制以及基于Spring Cloud Config的自動(dòng)化服務(wù)等.以上搭建了微服務(wù)架構(gòu),并完成基礎(chǔ)業(yè)務(wù)服務(wù)的功能.

(4)接口層:使用API Zuul 網(wǎng)關(guān)統(tǒng)一所有的服務(wù)接口,連接平臺(tái)服務(wù)與系統(tǒng)應(yīng)用,包括與銀行的數(shù)據(jù)對(duì)接等,使用JWT 實(shí)現(xiàn)身份認(rèn)證等權(quán)限的管理.

(5)應(yīng)用層:包括對(duì)于業(yè)主用戶(hù)的意見(jiàn)征詢(xún)和賬戶(hù)查詢(xún)以及工程查詢(xún)的功能、對(duì)于小區(qū)物管的意見(jiàn)征詢(xún)和工程申報(bào)等功能、對(duì)于政府相關(guān)部門(mén)的業(yè)務(wù)辦理以及審核等功能和對(duì)于銀行系統(tǒng)的資金數(shù)據(jù)報(bào)接功能以及移動(dòng)端應(yīng)用的功能.

系統(tǒng)微服務(wù)架構(gòu)由Spring Cloud 組件構(gòu)建組成.通過(guò)Eureka 組件實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn);Feign 組件實(shí)現(xiàn)服務(wù)的Ribbon 負(fù)載均衡與Eureka 的整合,加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性;將基礎(chǔ)數(shù)據(jù)處理、資金交存等四個(gè)業(yè)務(wù)微服務(wù)注冊(cè)到Eureka 服務(wù)端,并通過(guò)Fegin 實(shí)現(xiàn)的負(fù)載均衡完成對(duì)外的調(diào)用.通過(guò)Zuul 實(shí)現(xiàn)服務(wù)網(wǎng)關(guān),統(tǒng)一向外系統(tǒng)提供RESTful API;Hystrix 實(shí)現(xiàn)微服務(wù)的容錯(cuò)處理,避免在微服務(wù)架構(gòu)中個(gè)別服務(wù)出現(xiàn)異常時(shí)引起的故障蔓延;數(shù)據(jù)庫(kù)使用SQL Server 數(shù)據(jù)庫(kù),各個(gè)業(yè)務(wù)服務(wù)都有獨(dú)立數(shù)據(jù)庫(kù),并且使用Redis 作為緩存處理.

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

3 微服務(wù)架構(gòu)實(shí)現(xiàn)

3.1 服務(wù)注冊(cè)和發(fā)現(xiàn)

服務(wù)的注冊(cè)和發(fā)現(xiàn)是微服務(wù)架構(gòu)的基礎(chǔ)[12].Spring Cloud 搭建服務(wù)注冊(cè)中心的核心就是服務(wù)發(fā)現(xiàn)組件:Eureka.Eureka 一般搭配負(fù)載均衡組件Ribbon 使用,服務(wù)發(fā)現(xiàn)的架構(gòu)圖如圖4所示.

圖4 服務(wù)發(fā)現(xiàn)架構(gòu)圖

Eureka Server 端實(shí)現(xiàn)如下:

(1)pom 文件中添加spring-cloud-starter-eurekaserver 依賴(lài).

(2)在SpringBoot 主類(lèi)上添加@EnableEureka Server 注解.

(3)在application.properties 中配置端口號(hào)和注冊(cè)中心的地址,如下所示:

圖5 Eureka 服務(wù)頁(yè)面

Eureka Client 端實(shí)現(xiàn)如下:

(1)在基礎(chǔ)數(shù)據(jù)管理、資金交存、資金使用、查詢(xún)分析微服務(wù)以及Zuul 路由網(wǎng)關(guān)、Hy 斷路器等服務(wù)中的pom 文件中添加spring-cloud-starter-eureka-server依賴(lài).

(2)在各自的啟動(dòng)類(lèi)上添加@EnableEurekaClient的注解.

(3)在各服務(wù)的application.properties 配置文件中添加如下配置:

eureka.client.serviceUrl.defaultZone=_blankhttp://lo calhost:9003/eureka/

之后依次啟動(dòng)各微服務(wù),在Eureka Server 頁(yè)面中可以查看各服務(wù)狀態(tài),如圖6所示.

圖6 服務(wù)注冊(cè)到Eureka 狀態(tài)圖

各服務(wù)狀態(tài)為up 表明各服務(wù)已經(jīng)成功注冊(cè)到Eureka Server 中了.

3.2 負(fù)載均衡

生產(chǎn)環(huán)境下,各個(gè)微服務(wù)有多個(gè)實(shí)例,將消費(fèi)者的請(qǐng)求分?jǐn)偟矫恳粋€(gè)實(shí)例中需要使用負(fù)載均衡機(jī)制.Ribbon 是一款可以控制HTTP 和TCP 行為的負(fù)載均衡器.Ribbon 可以基于負(fù)載均衡算法如輪詢(xún)算法、隨機(jī)算法等幫助服務(wù)消費(fèi)者去請(qǐng)求服務(wù)提供者的地址[13].

Spring Cloud 中Feign 組件整合了Ribbon 和Eureka 來(lái)提供均衡負(fù)載的HTTP 客戶(hù)端實(shí)現(xiàn).Feign 實(shí)現(xiàn)如下:

(1)在Pom 文件中添加添加spring-cloud-starterfeign 依賴(lài).

(2)創(chuàng)建一個(gè)Feign 接口,并添加@FeignClient 注解.以下以查詢(xún)統(tǒng)計(jì)分析微服務(wù)為例:

其余微服務(wù)實(shí)現(xiàn)Fegin 接口與上面類(lèi)似.

3.3 路由網(wǎng)關(guān)

路由網(wǎng)關(guān)是為了讓所有的微服務(wù)對(duì)外只有一個(gè)接口API,我們只需要訪問(wèn)一個(gè)網(wǎng)關(guān)地址,即可由路由網(wǎng)關(guān)將我們的請(qǐng)求代理到不同的服務(wù)中[14].如果沒(méi)有路由網(wǎng)關(guān),多個(gè)服務(wù)提供給前端調(diào)用地址管理錯(cuò)綜復(fù)雜,增加了客戶(hù)端的復(fù)雜性,認(rèn)證也相對(duì)麻煩,每個(gè)服務(wù)都需要編寫(xiě)相同的認(rèn)證.

圖7和圖8分別展示了用戶(hù)請(qǐng)求多個(gè)微服務(wù)時(shí)使用和不使用路由網(wǎng)關(guān)的區(qū)別.

Spring Cloud 是通過(guò)Zuul 來(lái)實(shí)現(xiàn)路由網(wǎng)關(guān)的,Zuul 支持自動(dòng)路由映射到Eureka Server 上注冊(cè)的服務(wù).Spring Cloud 提供了注解@EnableZuulProxy 來(lái)啟動(dòng)路由代理.

Zuul 組件具體實(shí)現(xiàn)代碼如下:

(1)pom 中添加spring-cloud-starter-zuul 依賴(lài).

(2)在啟動(dòng)類(lèi)上添加注解@EnableZuulProxy,聲明一個(gè)Zuul 代理.該代理使用Ribbon 來(lái)定位注冊(cè)在Eureka Server 中的微服務(wù)[15].

(3)編寫(xiě)配置文件application.yml

圖7 用戶(hù)請(qǐng)求多個(gè)微服務(wù)

圖8 使用路由網(wǎng)關(guān)

3.4 容錯(cuò)處理

當(dāng)服務(wù)消費(fèi)者請(qǐng)求服務(wù)時(shí),如果此時(shí)服務(wù)提供者響應(yīng)時(shí)間過(guò)長(zhǎng),那么請(qǐng)求會(huì)被等待.高負(fù)載下,這種問(wèn)題可能會(huì)導(dǎo)致系統(tǒng)崩潰[16].采用Hystrix 組件的容錯(cuò)處理機(jī)制可以解決這一問(wèn)題.具體實(shí)現(xiàn)代碼如下:

(1)在pom.xml 中添加spring-cloud-starter-hystrix依賴(lài).

(2)在各服務(wù)啟動(dòng)類(lèi)添加注解@EnableHystrix,為項(xiàng)目啟用斷路器.

4 系統(tǒng)測(cè)試

4.1 微服務(wù)接口測(cè)試

項(xiàng)目開(kāi)發(fā)采用了前后端分離的形式,項(xiàng)目首先實(shí)現(xiàn)了后端接口功能,后端各服務(wù)接口開(kāi)發(fā)完成后,需要先對(duì)接口進(jìn)行測(cè)試,本項(xiàng)目中引入Swagger2 作為接口測(cè)試工具.

Swagger 2 是一個(gè)開(kāi)源項(xiàng)目,用于描述和記錄RESTful API.Swagger 2 是語(yǔ)言無(wú)關(guān)的,可擴(kuò)展到除HTTP 之外的新技術(shù)和協(xié)議.Swagger UI 允許其他API 開(kāi)發(fā)人員或用戶(hù)與API 的資源交互,而沒(méi)有任何實(shí)現(xiàn)邏輯到位.應(yīng)該結(jié)構(gòu)化,使其具有信息性,簡(jiǎn)潔性和易于閱讀.

Swagger 的實(shí)現(xiàn)如下:

(1)在pom 文件中添加springfox-swagger2 和springfox-swagger-ui 的依賴(lài).

(2)創(chuàng)建Swagger2 配置類(lèi).

在Application.java 同級(jí)創(chuàng)建Swagger2 的配置類(lèi)Swagger2

(3)在各服務(wù)API 中添加聲明.

以下以資金使用服務(wù)中的維修工程查詢(xún)接口為例,配置swagger 聲明:

運(yùn)行各服務(wù),訪問(wèn)http://localhost:8080/swaggerui.html 頁(yè)面,如圖9所示,可以查看每個(gè)微服務(wù)的接口.

圖9 各服務(wù)接口

如圖10所示,點(diǎn)擊Expand Operations 按鈕可以展開(kāi)每個(gè)接口的詳細(xì)信息,包括接口參數(shù),提示代碼等.

圖10 維修工程查詢(xún)接口詳細(xì)

輸入好接口所需參數(shù),點(diǎn)擊try it out 按鈕可以執(zhí)行該接口方法,返回值如圖11所示.

圖11 維修工程查詢(xún)接口測(cè)試

4.2 系統(tǒng)功能測(cè)試

本節(jié)以資金使用微服務(wù)為例,對(duì)資金使用環(huán)節(jié)部分功能進(jìn)行測(cè)試.

維修申報(bào)列表頁(yè)面如圖12所示.由小區(qū)物業(yè)管理單位(或社區(qū))進(jìn)行維修工程申報(bào),寫(xiě)申請(qǐng)維修原因、申請(qǐng)維修費(fèi)用、維修方案等信息.

工程申報(bào)之后可以選擇分?jǐn)倯?hù)進(jìn)行分?jǐn)?分?jǐn)傊罂梢蕴峤蛔〗ú块T(mén)領(lǐng)導(dǎo)審核.維修工程提交之后由物管中心進(jìn)行審核,主要對(duì)維修工程的維修內(nèi)容、施工公司信息以及資金預(yù)算信息等進(jìn)行審核.審核通過(guò)之后才可進(jìn)行維修意見(jiàn)征詢(xún)流程.審核頁(yè)面如圖13.

圖12 維修工程申報(bào)

圖13 維修工程審核

維修工程經(jīng)市物業(yè)管理中心審核通過(guò)后,由小區(qū)物管中心打印維修意見(jiàn)征詢(xún)表找與此維修工程申報(bào)相關(guān)的受益業(yè)主進(jìn)行簽字確認(rèn).由小區(qū)物管單位根據(jù)受益業(yè)主簽字確認(rèn)情況,在系統(tǒng)中確認(rèn)已同意維修的受益業(yè)主.意見(jiàn)征詢(xún)頁(yè)面如圖14所示.

圖14 維修工程意見(jiàn)征詢(xún)

維修工程意見(jiàn)征詢(xún)通過(guò)后,項(xiàng)目便開(kāi)始實(shí)施.當(dāng)項(xiàng)目竣工后,施工單位組織工程驗(yàn)收并填寫(xiě)維修工程驗(yàn)收表,經(jīng)業(yè)主委員會(huì)、物業(yè)公司簽字確認(rèn).根據(jù)業(yè)主委員會(huì)、物業(yè)公司在維修工程驗(yàn)收表中的簽字意見(jiàn),在系統(tǒng)中進(jìn)行維修驗(yàn)收登記,界面如圖15所示.

維修工程驗(yàn)收通過(guò)之后,維修公司選擇需要付款的結(jié)算單向市物業(yè)管業(yè)中心提交付款申請(qǐng)(分為首期款和尾款).資金撥付申請(qǐng)頁(yè)面如圖16所示.

4.3 系統(tǒng)性能測(cè)試

本文使用Apache Bench 模擬100 個(gè)用戶(hù)對(duì)系統(tǒng)中不同業(yè)務(wù)同時(shí)發(fā)出訪問(wèn)請(qǐng)求,在高并發(fā)請(qǐng)求訪問(wèn)環(huán)境下,對(duì)微服務(wù)架構(gòu)改進(jìn)下的系統(tǒng)以及傳統(tǒng)的Java Web 架構(gòu)下的兩種維修資金管理系統(tǒng)處理不同業(yè)務(wù)平均響應(yīng)時(shí)間進(jìn)行比較.記錄數(shù)據(jù)圖如表1所示.

圖15 維修工程驗(yàn)收登記

圖16 資金撥付申請(qǐng)

表1 本系統(tǒng)與傳統(tǒng)住宅專(zhuān)項(xiàng)維修資金管理系統(tǒng)部分業(yè)務(wù)處理高并發(fā)訪問(wèn)平均響應(yīng)時(shí)間對(duì)比數(shù)據(jù)分析(單位:ms)

從表1中的對(duì)比可以看出,在模擬100 位用戶(hù)并發(fā)訪問(wèn)的情況下,使用微服務(wù)架構(gòu)的系統(tǒng)比傳統(tǒng)系統(tǒng)響應(yīng)時(shí)間明顯下降,時(shí)間少了大約1/2,這說(shuō)明在處理高并發(fā)業(yè)務(wù)時(shí),采用微服務(wù)架開(kāi)發(fā)的住宅專(zhuān)項(xiàng)維修資金管理系統(tǒng)性能明顯優(yōu)于原系統(tǒng),用戶(hù)體驗(yàn)更加友好.

圖17展示了維修系統(tǒng)部分業(yè)務(wù)實(shí)例在高并發(fā)場(chǎng)景隨時(shí)間內(nèi)存的消耗情況.上圖中橫軸表示時(shí)間,單位為秒,縱軸表示內(nèi)存使用大小,單位為MB,上方紅色線條表示傳統(tǒng)系統(tǒng)測(cè)試實(shí)例的內(nèi)存消耗總和,下方藍(lán)色線條表示基于微服務(wù)架構(gòu)系統(tǒng)的測(cè)試實(shí)例的內(nèi)存消耗總和.從圖中可以看出,在高并發(fā)場(chǎng)景下,基于微服務(wù)架構(gòu)的系統(tǒng)內(nèi)存消耗小于傳統(tǒng)單體式架構(gòu)的內(nèi)存消耗,并且內(nèi)存使用相對(duì)平穩(wěn).

基于微服務(wù)架構(gòu)的住宅專(zhuān)項(xiàng)維修資金管理系統(tǒng)采用了分布式架構(gòu),將系統(tǒng)整體功能拆分為各個(gè)服務(wù),分別部署在不同的服務(wù)節(jié)點(diǎn),可以有效避免因?yàn)閱喂?jié)點(diǎn)服務(wù)壓力過(guò)大引起系統(tǒng)宕機(jī)的風(fēng)險(xiǎn).系統(tǒng)微服務(wù)框架搭建采用了基于Ribbon 的負(fù)載均衡組件,使得對(duì)于系統(tǒng)的高并發(fā)訪問(wèn)請(qǐng)求進(jìn)行分?jǐn)?實(shí)現(xiàn)系統(tǒng)的高可用、對(duì)網(wǎng)絡(luò)壓力有了緩解,解決了傳統(tǒng)系統(tǒng)內(nèi)存壓力過(guò)大而導(dǎo)致系統(tǒng)資源加載過(guò)慢的情況,更好的提升了用戶(hù)的體驗(yàn).

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

本文設(shè)計(jì)并實(shí)現(xiàn)了基于微服務(wù)架構(gòu)的住宅維修資金管理系統(tǒng).相對(duì)于傳統(tǒng)的資金管理系統(tǒng),本系統(tǒng)將功能劃分為基礎(chǔ)數(shù)據(jù)管理、維修資金交存、維修資金使用和查詢(xún)統(tǒng)計(jì)分析四項(xiàng)微服務(wù).每個(gè)微服務(wù)可以單獨(dú)開(kāi)發(fā)和部署,其中一個(gè)服務(wù)出現(xiàn)問(wèn)題時(shí),可以單獨(dú)修改不會(huì)影響到其他服務(wù)的使用,采微服務(wù)架構(gòu),系統(tǒng)處理高并發(fā)請(qǐng)求時(shí),效率更高.本文采用了Spring Cloud 框架及其相關(guān)組件來(lái)搭建微服務(wù)架構(gòu),同時(shí)實(shí)現(xiàn)了服務(wù)注冊(cè)和發(fā)現(xiàn)、負(fù)載均衡、路由網(wǎng)關(guān)以及容錯(cuò)處理機(jī)制.通過(guò)該服務(wù)框架可以對(duì)住宅維修資金管理系統(tǒng)進(jìn)行快速開(kāi)發(fā),實(shí)現(xiàn)系統(tǒng)的組件化、獨(dú)立部署、維護(hù)風(fēng)險(xiǎn)降低等優(yōu)勢(shì).

猜你喜歡
資金功能工程
也談詩(shī)的“功能”
一周超大單資金凈增(減)倉(cāng)股前20名
一周超大單資金凈增(減)倉(cāng)股前20名
一周超大單資金凈增(減)倉(cāng)股前20名
一周超大單資金凈增(減)倉(cāng)股前20名
關(guān)于非首都功能疏解的幾點(diǎn)思考
子午工程
太空探索(2016年6期)2016-07-10 12:09:06
工程
工程
中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
主站蜘蛛池模板: 中文国产成人精品久久一| 国产精品三级专区| 欧美在线黄| a国产精品| 久久综合干| 国产免费a级片| 老熟妇喷水一区二区三区| 亚洲天堂网在线视频| 亚洲精品第1页| 日韩欧美高清视频| 天天婬欲婬香婬色婬视频播放| 亚洲国产天堂在线观看| 国产成人永久免费视频| 亚洲欧美国产五月天综合| av免费在线观看美女叉开腿| 尤物午夜福利视频| 亚洲二区视频| 色久综合在线| 国产精品原创不卡在线| 99这里只有精品免费视频| 中文字幕乱码中文乱码51精品| 国产一区二区三区在线观看视频 | 18黑白丝水手服自慰喷水网站| 欧美日在线观看| 国产杨幂丝袜av在线播放| 99久久人妻精品免费二区| 高潮毛片免费观看| 国产福利一区视频| 原味小视频在线www国产| 日韩人妻少妇一区二区| 青青草久久伊人| 欧美一级高清片欧美国产欧美| 亚洲手机在线| 91亚瑟视频| 国产清纯在线一区二区WWW| 四虎成人免费毛片| 国产精品不卡片视频免费观看| 四虎国产精品永久一区| 国产精品视频白浆免费视频| 青青青国产精品国产精品美女| 欧美成人精品一级在线观看| 亚洲无码四虎黄色网站| 国产18在线| 激情亚洲天堂| 亚洲精品爱草草视频在线| 国内精自视频品线一二区| 日韩精品一区二区三区免费在线观看| 欧美中文字幕在线二区| 少妇精品在线| 亚洲va精品中文字幕| 国产精品手机在线播放| 四虎国产永久在线观看| 国产在线自在拍91精品黑人| 99久久99视频| 欧美国产日韩在线播放| 国产亚洲精品va在线| 国产丝袜一区二区三区视频免下载| 白浆视频在线观看| 青青操视频免费观看| 91亚洲视频下载| 99re热精品视频中文字幕不卡| 三级毛片在线播放| 久久99国产精品成人欧美| 99激情网| 麻豆精品在线视频| 99在线小视频| 亚洲欧美日韩中文字幕在线| 日本欧美视频在线观看| 精品国产美女福到在线不卡f| 中文字幕在线日韩91| 国产精品手机在线观看你懂的| 国产午夜人做人免费视频中文| 欧美日韩国产精品综合| 在线观看视频99| 九九热视频精品在线| 国产亚洲精品yxsp| 美女被躁出白浆视频播放| 亚洲AV色香蕉一区二区| 亚洲AV免费一区二区三区| 影音先锋丝袜制服| 欧美午夜性视频| 色天堂无毒不卡|