• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于微服務(wù)的多租戶城鎮(zhèn)人口住宅管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      2019-10-08 09:03:43陳榆中馬鎮(zhèn)宋暉
      軟件 2019年2期
      關(guān)鍵詞:微服務(wù)

      陳榆中 馬鎮(zhèn) 宋暉

      摘? 要: 隨著應(yīng)用復(fù)雜度和租戶數(shù)量的不斷增加,對(duì)應(yīng)用功能的橫向擴(kuò)展及解耦合等需求提出了更高的挑戰(zhàn)。本文基于領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)原則構(gòu)建了服務(wù)分割模型以輔助分布式應(yīng)用的設(shè)計(jì),結(jié)合微服務(wù)架構(gòu)利用Spring Cloud實(shí)現(xiàn)了城鎮(zhèn)人口住宅管理的SaaS系統(tǒng)。本文還采用容器編排技術(shù)實(shí)現(xiàn)了服務(wù)的多實(shí)例化和動(dòng)態(tài)擴(kuò)縮容,為系統(tǒng)提供了服務(wù)實(shí)例的智能維護(hù)功能。

      關(guān)鍵詞: 微服務(wù);SaaS;服務(wù)分割模型;多租戶;城鎮(zhèn)人口住宅

      【Abstract】: As the complexity of applications and the number of tenants increase, the requirements for horizontal expansion and decoupling of application functions pose higher challenges. Based on the domain-driven design principle, this paper constructs a service segmentation model to assist the design of distributed applications. Combined with the micro-service architecture, Spring Cloud is used to implement the SaaS system for urban population housing management. This paper adopts container orchestration technology to realize multi-instantiation and dynamic expansion and contraction of services, and provides intelligent maintenance functions for service instances.

      【Key words】: Micro-service; SaaS; Service segmentation model; Multi-tenant; Urban population housing

      0? 引言

      隨著云計(jì)算平臺(tái)的日益普及,從政府到私人企業(yè)都感受到了它所帶來的便利和實(shí)惠。云計(jì)算平臺(tái)支持高性能、高可靠、高可用和可伸縮的SaaS(軟件即服務(wù))應(yīng)用,而微服務(wù)架構(gòu)作為軟件開發(fā)架構(gòu)的演進(jìn)方向之一,已成為一種SaaS應(yīng)用在云平臺(tái)的可行落地方案。

      傳統(tǒng)的MVC架構(gòu)在后續(xù)的功能更改、系統(tǒng)發(fā)布和版本維護(hù)上成本昂貴,微服務(wù)架構(gòu)與其它軟件架構(gòu)相比,擁有更好的功能擴(kuò)展能力和系統(tǒng)穩(wěn)定性。SOA架構(gòu)關(guān)注的是業(yè)務(wù)流程與企業(yè)目標(biāo)的實(shí)現(xiàn),而微服務(wù)架構(gòu)關(guān)注的是企業(yè)級(jí)應(yīng)用如何在云平臺(tái)上持續(xù)集成與部署。

      從前的城鎮(zhèn)人口住宅管理系統(tǒng)是面向單獨(dú)城鎮(zhèn)開發(fā)的MVC系統(tǒng),現(xiàn)在需要為多個(gè)城鎮(zhèn)提供獨(dú)立的服務(wù),因此需要將為單一用戶設(shè)計(jì)的系統(tǒng)轉(zhuǎn)變?yōu)橐粋€(gè)SaaS(軟件即服務(wù))應(yīng)用,以便充分利用云平臺(tái)的資源來進(jìn)行租戶和功能擴(kuò)展。為了解耦合應(yīng)用功能,本文提出了服務(wù)分割模型來輔助設(shè)計(jì)應(yīng)用,結(jié)合微服務(wù)架構(gòu)和容器技術(shù)來實(shí)現(xiàn)系統(tǒng)的開發(fā)和發(fā)布。

      本文后續(xù)章節(jié)組織如下,第2章節(jié)詳細(xì)介紹了本文所提出的服務(wù)分割模型;第3章節(jié)描述了該模型在城鎮(zhèn)人口住宅管理系統(tǒng)的應(yīng)用;第4章節(jié)給出了微服務(wù)架構(gòu)下的服務(wù)實(shí)例的智能維護(hù)在系統(tǒng)中的實(shí)現(xiàn)方式;第5章節(jié)展示了微服務(wù)實(shí)現(xiàn)結(jié)果;第6章節(jié)對(duì)工作進(jìn)行了總結(jié)。

      1? 相關(guān)工作

      文獻(xiàn)[1]中表示將傳統(tǒng)架構(gòu)的應(yīng)用程序部署到云中時(shí),隨著時(shí)間的推移通常很難保持良好的模塊化結(jié)構(gòu),因此導(dǎo)致了微服務(wù)架構(gòu)風(fēng)格在云平臺(tái)的應(yīng)用。微服務(wù)架構(gòu)允許以不同的語言編寫不同的服務(wù),在相應(yīng)的云平臺(tái)環(huán)境中發(fā)布部署。

      微服務(wù)架構(gòu)是由Martin Fowler在前幾年給出的定義[1],它的主要特征是服務(wù)組件化、通信輕量級(jí)、功能解耦合和去中心化等。微服務(wù)架構(gòu)的核心思想是單個(gè)應(yīng)用作為一組小的服務(wù),它的接口是一組服務(wù),服務(wù)之間以輕量級(jí)的協(xié)議進(jìn)行通信;拆分出來的部件或者服務(wù)可以采用不同的技術(shù)棧,使用不同的數(shù)據(jù)存儲(chǔ)技術(shù);最后這些服務(wù)不能直接通信(即不存在依賴),需要通過一個(gè)服務(wù)注冊(cè)中心通訊,應(yīng)用與服務(wù)注冊(cè)中心是解耦合的。

      文獻(xiàn)[2]分析和對(duì)比了微服務(wù)架構(gòu)與其他軟件架構(gòu)之間的異同。微服務(wù)架構(gòu)因其高可用性、高擴(kuò)展性和易于維護(hù)的特點(diǎn),在保持了SaaS(軟件即服務(wù))應(yīng)用功能完整性的同時(shí),又解決了傳統(tǒng)軟件架構(gòu)的復(fù)雜性,因此逐漸成為熱門的軟件架構(gòu)風(fēng)格之一。

      微服務(wù)架構(gòu)的特點(diǎn)滿足了開發(fā)分布式、易維護(hù)、易擴(kuò)展的SaaS(軟件即服務(wù))應(yīng)用的條件。文獻(xiàn)[3]將微服務(wù)應(yīng)用于數(shù)據(jù)服務(wù)框架中;文獻(xiàn)[4]重點(diǎn)討論了在校車安全管理中微服務(wù)的應(yīng)用;文獻(xiàn)[5]將分布式測(cè)距系統(tǒng)以微服務(wù)的形式展現(xiàn);文獻(xiàn)[6]將安全服務(wù)也以微服務(wù)的形式提供;文獻(xiàn)[7]介紹了農(nóng)業(yè)信息化管理平臺(tái)的SaaS方案設(shè)計(jì)。

      2? 服務(wù)分割模型

      為了將傳統(tǒng)軟件應(yīng)用轉(zhuǎn)變成分布式應(yīng)用或者直接設(shè)計(jì)一個(gè)具有較高擴(kuò)展性的系統(tǒng),其思路不是設(shè)計(jì)一個(gè)巨大的單體式應(yīng)用,而是將應(yīng)用分割為小的、互相調(diào)用的組件,然后單個(gè)組件完成某個(gè)特定的功能需求,最后由服務(wù)管理與注冊(cè)中心來發(fā)現(xiàn)和調(diào)度它們。本文根據(jù)微服務(wù)在系統(tǒng)中所擔(dān)當(dāng)?shù)墓δ芙巧M(jìn)行了四類分類:

      (1)復(fù)用性微服務(wù)指可以被多個(gè)不相關(guān)應(yīng)用所調(diào)用的微服務(wù),其提供了API接口供其他微服務(wù)使用。例:大數(shù)據(jù)計(jì)算微服務(wù)。

      (2)輔助性微服務(wù)指提供了非業(yè)務(wù)邏輯功能的微服務(wù)。例:網(wǎng)關(guān)微服務(wù)、前端顯示微服務(wù)等。

      (3)業(yè)務(wù)邏輯微服務(wù)指提供了業(yè)務(wù)邏輯的微服務(wù),面向業(yè)務(wù)進(jìn)行編碼。

      (4)管理監(jiān)控微服務(wù)指對(duì)整個(gè)SaaS系統(tǒng)實(shí)現(xiàn)租戶管理、權(quán)限分配、應(yīng)用分配和監(jiān)控等功能的微服務(wù)。

      基于領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)原則[8]分析傳統(tǒng)應(yīng)用軟件的各項(xiàng)功能,把應(yīng)用分割為復(fù)用性微服務(wù)、輔助性微服務(wù)和業(yè)務(wù)邏輯微服務(wù)(如圖1所示),然后將其構(gòu)建為分布式應(yīng)用。

      從上圖1中看出,復(fù)用性微服務(wù)可以被多個(gè)不相關(guān)應(yīng)用所使用,如圖1中的傳統(tǒng)軟件應(yīng)用B、C,從而提高了代碼維護(hù)性和復(fù)用性;輔助性微服務(wù)可以是前端展示微服務(wù),從而解耦合了前后端;業(yè)務(wù)邏輯微服務(wù)根據(jù)業(yè)務(wù)的使用頻率、業(yè)務(wù)的相關(guān)性和業(yè)務(wù)的性質(zhì)進(jìn)行劃分,從而易于系統(tǒng)的開發(fā)和維護(hù);管理監(jiān)控微服務(wù)對(duì)整個(gè)系統(tǒng)進(jìn)行租戶管理、應(yīng)用分配等操作。通過服務(wù)分割模型可以設(shè)計(jì)出一個(gè)具有較高擴(kuò)展性的分布式應(yīng)用。

      3? 城鎮(zhèn)人口住宅管理服務(wù)架構(gòu)設(shè)計(jì)

      基于微服務(wù)架構(gòu)和服務(wù)分割模型,對(duì)城鎮(zhèn)人口住宅管理系統(tǒng)的功能進(jìn)行服務(wù)架構(gòu)設(shè)計(jì),如圖2所示。根據(jù)系統(tǒng)的功能需求,四類微服務(wù)分別包括以下模塊。

      復(fù)用性微服務(wù)包含了Spark服務(wù)和GIS服務(wù)。它們分別提供了大數(shù)據(jù)統(tǒng)計(jì)與分析、百度地圖繪制等功能,這些功能均提供了Restful API接口,在未來新增的功能模塊需要這些底層支持時(shí),可以復(fù)用這些服務(wù),從而提高系統(tǒng)的可維護(hù)性。

      輔助性微服務(wù)包含了城鎮(zhèn)人口住宅信息Edge Service和網(wǎng)關(guān)服務(wù),它們分別提供了城鎮(zhèn)人口住宅應(yīng)用的前端展示和域名解析等功能。

      業(yè)務(wù)邏輯微服務(wù)包含了民宅管理服務(wù)、小區(qū)管理服務(wù)、民宅信息查詢服務(wù)等。這些服務(wù)都是面向業(yè)務(wù)進(jìn)行編碼的,首先對(duì)使用頻率較高的業(yè)務(wù)需求進(jìn)行分割;其次對(duì)不同性質(zhì)的業(yè)務(wù)進(jìn)行拆分,例:小區(qū)和民宅;最后對(duì)具有較強(qiáng)關(guān)聯(lián)性的業(yè)務(wù)進(jìn)行合并分割,例:房屋信息和戶主信息查詢。

      管理監(jiān)控微服務(wù)包含了多租戶信息管理服務(wù)。它提供了租戶管理、權(quán)限分配和應(yīng)用管理等功能;它通過Redis緩存實(shí)現(xiàn)了應(yīng)用之間的單點(diǎn)登錄。

      從上圖2中看出,當(dāng)進(jìn)行功能橫向擴(kuò)展時(shí),只需要編寫新的服務(wù)實(shí)例而無需修改不相關(guān)服務(wù),然后相關(guān)服務(wù)通過服務(wù)注冊(cè)與發(fā)現(xiàn)中心調(diào)度新增服務(wù),較好的解耦合了功能之間的依賴關(guān)系。比如新增一個(gè)其它應(yīng)用的服務(wù),只要讓多租戶信息管理服務(wù)調(diào)度它的接口即可。由于每個(gè)服務(wù)只完成特定的功能需求,可以輕易定位功能的實(shí)現(xiàn)位置,從而提高系統(tǒng)的可維護(hù)性。比如當(dāng)民宅租賃合同無法下載或者上傳時(shí),可以去民宅租賃合同管理服務(wù)中定位錯(cuò)誤位置,從而修復(fù)系統(tǒng)錯(cuò)誤。

      4? 系統(tǒng)智能維護(hù)

      SaaS(軟件即服務(wù))應(yīng)用相較于傳統(tǒng)應(yīng)用的一大優(yōu)勢(shì)是服務(wù)或組件的獨(dú)立部署能力。系統(tǒng)智能維護(hù)是指在某些服務(wù)崩潰時(shí),系統(tǒng)自我恢復(fù)相應(yīng)服務(wù)實(shí)例;當(dāng)服務(wù)的流量增加或減少時(shí),系統(tǒng)對(duì)相應(yīng)服務(wù)實(shí)例進(jìn)行動(dòng)態(tài)擴(kuò)縮容來提高系統(tǒng)的負(fù)載能力?;诜?wù)分割模型切分多租戶城鎮(zhèn)人口住宅管理系統(tǒng),對(duì)這些服務(wù)進(jìn)行多實(shí)例化部署和動(dòng)態(tài)擴(kuò)縮容部署,從而實(shí)現(xiàn)系統(tǒng)的智能維護(hù)。系統(tǒng)部署如下圖3所示。

      由于服務(wù)之間不能直接通訊,因此需要一個(gè)服務(wù)注冊(cè)與發(fā)現(xiàn)中心作為中間件,該中心被部署到Kubernetes[9]集群中,利用Kubernetes集群的自我修復(fù)功能,實(shí)現(xiàn)在容器死亡時(shí)重新啟動(dòng)失敗的容器或者替換新的容器,確保了服務(wù)注冊(cè)中心的穩(wěn)定性。

      復(fù)用性微服務(wù)、輔助性微服務(wù)、業(yè)務(wù)邏輯微服務(wù)和管理監(jiān)控微服務(wù),都被打包成Docker[10]鏡像,利用Kubernetes集群的多實(shí)例化部署和動(dòng)態(tài)擴(kuò)縮容部署,實(shí)現(xiàn)系統(tǒng)在高低流量下的服務(wù)實(shí)例的智能維護(hù)功能,從而提高了系統(tǒng)的健壯性和穩(wěn)定性。

      5? 應(yīng)用的微服務(wù)實(shí)現(xiàn)

      5.1? 服務(wù)分割結(jié)果

      通過服務(wù)分割模型把多租戶城鎮(zhèn)人口住宅管理系統(tǒng)拆分成多個(gè)原子服務(wù),這些服務(wù)會(huì)被注冊(cè)到服務(wù)注冊(cè)與發(fā)現(xiàn)中心Eureka中。當(dāng)服務(wù)實(shí)例運(yùn)行之后,服務(wù)注冊(cè)中心將顯示服務(wù)的名稱、狀態(tài)、實(shí)例個(gè)數(shù)、可用個(gè)數(shù)、IP地址和端口等服務(wù)信息。

      在完成服務(wù)的分割與開發(fā)之后,將各個(gè)服務(wù)打包成Docker鏡像,發(fā)布到私人的鏡像倉(cāng)庫(kù)中,如圖5所示。通過鏡像倉(cāng)庫(kù)中的鏡像文件,Kubernetes集群會(huì)拉取其中的文件,生成pod組件,然后通過Service的虛擬IP實(shí)現(xiàn)服務(wù)實(shí)例的動(dòng)態(tài)擴(kuò)縮容和自我恢復(fù)。

      5.2? 智能維護(hù)結(jié)果

      在Kubernetes集群中設(shè)置Service的資源(例:內(nèi)存、CPU使用率等)使用率闕值為50%,通過Shell腳本來增加訪問流量之后,資源使用率增加,從而讓實(shí)例的個(gè)數(shù)由1增加到4,分擔(dān)了服務(wù)實(shí)例的負(fù)載壓力,實(shí)現(xiàn)了系統(tǒng)的智能維護(hù),從而提高了系統(tǒng)的健壯性和穩(wěn)定性。

      6? 總結(jié)

      本文構(gòu)建了用來輔助設(shè)計(jì)分布式應(yīng)用的服務(wù)分割模型,利用該模型可以設(shè)計(jì)出具有較高擴(kuò)展性的應(yīng)用系統(tǒng)。其次本文基于該模型和微服務(wù)架構(gòu)實(shí)現(xiàn)了多租戶城鎮(zhèn)人口住宅管理系統(tǒng),解耦合了功能應(yīng)用,提高了該系統(tǒng)的可維護(hù)性和擴(kuò)展性。最后采用容器技術(shù)和容器編排框架完成了系統(tǒng)服務(wù)實(shí)例的智能維護(hù)功能,讓系統(tǒng)在高低流量下具有較好的穩(wěn)定性。

      參考文獻(xiàn)

      Lewis J, Fowler M. Microservices[OL]. (2018-12-20) [2019- 01-16]. http://martinfowler.com/articles/microser -vices.html

      Catalin Strimbei,Ocatavian Dospinescu, Roxana-Marina Strainu, et al. Software architectures-present and visions[J]. Informatica Economica, 2015, 19(4): 13-26.

      歐陽榮彬, 王倩宜, 龍新征. 基于微服務(wù)的數(shù)據(jù)服務(wù)框架設(shè)計(jì)[J]. 華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版), 2016, 44(S1): 126-130.

      周丹, 雷曉玲, 章民融. 基于微服務(wù)架構(gòu)的校車安全管理系統(tǒng)設(shè)計(jì)與應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2018, 35(8).

      向彬彬, 馬明星, 童茂林, 等. 基于微服務(wù)架構(gòu)的分布式測(cè)距系統(tǒng)的研究與設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2018, 35(5).

      Sun Y, Nanda S, Jaeger T. Security-as-a-Service for Microservices-Based Cloud Applications[C]//IEEE International Conference on Cloud Computing Technology & Science. IEEE Computer Society, 2015.

      林少普, 倪禮豪. 溫州農(nóng)業(yè)科技園信息化管理平臺(tái)SaaS 方案設(shè)計(jì)[J]. 軟件, 2015, 36(8): 67-70.

      Evans E. Domain-Driven Design: Tackling Complexity in the Heart of Software[J]. Domain-driven design: tackling complexity in the heart of software, 2002.

      Kubernetes. Open source communication[OL]. (2018-12-20) [2019-01-16]. https://kubernetes.io/docs/concepts/

      Docker. Open source communication[OL]. (2018-12-20) [2019-01-16]. https://docs.docker.com/engine/reference/builder/ #format.

      猜你喜歡
      微服務(wù)
      數(shù)字文化館建設(shè)中的“微服務(wù)”
      基于微服務(wù)架構(gòu)的日志系統(tǒng)
      微服務(wù)架構(gòu)及相應(yīng)云平臺(tái)解析
      基于供給側(cè)改革理論的圖書館社交網(wǎng)絡(luò)微服務(wù)研究
      微信公眾平臺(tái)在醫(yī)院圖書館的應(yīng)用現(xiàn)狀調(diào)查
      基于微信企業(yè)號(hào)的校園移動(dòng)服務(wù)
      微服務(wù)視角下高職圖書館數(shù)字資源使用分析
      中文信息(2016年10期)2016-12-12 10:09:57
      從單一模式系統(tǒng)架構(gòu)往微服務(wù)架構(gòu)遷移轉(zhuǎn)化技術(shù)研究
      基于微信公眾平臺(tái)的高校圖書館微服務(wù)現(xiàn)狀及對(duì)策
      微媒體時(shí)代高校圖書館閱讀推廣微服務(wù)探析
      鄂托克前旗| 古田县| 民丰县| 星座| 什邡市| 奉节县| 鄂温| 改则县| 忻州市| 盱眙县| 固安县| 宜宾市| 长顺县| 萨嘎县| 西华县| 亚东县| 云南省| 七台河市| 广河县| 麻栗坡县| 墨竹工卡县| 随州市| 车致| 玉田县| 安西县| 安吉县| 延川县| 彭阳县| 嘉禾县| 惠州市| 东光县| 宜川县| 涟水县| 金溪县| 庆安县| 仁寿县| 宕昌县| 本溪| 徐汇区| 许昌市| 且末县|