亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Docker技術(shù)在CIM平臺(tái)微服務(wù)部署的研究及應(yīng)用

        2022-02-03 07:12:10鵬,邱星,李
        現(xiàn)代計(jì)算機(jī) 2022年21期
        關(guān)鍵詞:鏡像容器部署

        周 鵬,邱 星,李 鑫

        (1.中國(guó)電建集團(tuán)華東勘測(cè)設(shè)計(jì)研究院有限公司,杭州 311122;2.浙江華東工程數(shù)字技術(shù)有限公司,杭州 310000;3.陜西省西咸新區(qū)灃西新城管理委員會(huì),西安 710000)

        0 引言

        隨著互聯(lián)網(wǎng)技術(shù)不斷發(fā)展,軟件項(xiàng)目在實(shí)際使用過(guò)程中,面臨需求不斷增長(zhǎng)、用戶(hù)訪問(wèn)數(shù)量不斷增多的情況。面對(duì)這種情況,傳統(tǒng)單體項(xiàng)目需要不斷增加代碼體量,隨著時(shí)間推移,會(huì)出現(xiàn)代碼冗余,部署維護(hù)困難,且漸漸無(wú)法支撐大量用戶(hù)同時(shí)訪問(wèn)等問(wèn)題。為解決這些問(wèn)題,微服務(wù)應(yīng)運(yùn)而生,其優(yōu)秀的拓展性和可配置性,使其可以承載更多的用戶(hù),成為更多中大型項(xiàng)目的架構(gòu)選擇[1]。

        但是微服務(wù)部署存在諸多問(wèn)題,使用傳統(tǒng)純Jar 包部署方式,將后端業(yè)務(wù)代碼打包成Jar包進(jìn)行微服務(wù)項(xiàng)目發(fā)布,存在部署操作復(fù)雜、流程繁瑣、命令復(fù)雜、參數(shù)配置性差、服務(wù)版本兼容性差等問(wèn)題。采用Docker完成微服務(wù)部署工作,本文通過(guò)研究Docker在微服務(wù)部署中的應(yīng)用,為微服務(wù)部署提供一個(gè)完善的解決思路。

        1 概念介紹

        1.1 Docker簡(jiǎn)介

        Docker 是Go 語(yǔ)言編寫(xiě)的開(kāi)源應(yīng)用容器引擎。通過(guò)Docker,可將發(fā)布包打包到Docker 的可移植容器中,發(fā)布到常用的Linux 和Windows系統(tǒng)上[2]。Dokcer通過(guò)內(nèi)核虛擬化技術(shù)實(shí)現(xiàn)容器的隔離和安全保障。Docker 硬件成本低,虛擬化硬件損耗小、性能好,可做到快速部署,迅速啟動(dòng),彈性伸縮,且支持打包管理和低成本動(dòng)態(tài)遷移。

        Docekr 官方為解決容器編排問(wèn)題,提供Docker-compose編排工具[3],調(diào)用Docker服務(wù)提供的API 來(lái)實(shí)現(xiàn)對(duì)Docker 容器集群的快速編排工作,通過(guò)配置文件管理多個(gè)容器,實(shí)現(xiàn)對(duì)容器的啟動(dòng)、停止、重啟等操作。使用Docker-Compose 不需要shell 腳本進(jìn)行啟動(dòng)容器,簡(jiǎn)化微服務(wù)部署工作,適合組合使用多個(gè)容器進(jìn)行開(kāi)發(fā)的場(chǎng)景。

        1.2 CIM平臺(tái)簡(jiǎn)介

        城市信息模型(City Information Modeling,CIM)綜合建筑模型信息、地理信息系統(tǒng)、物聯(lián)網(wǎng)等技術(shù),構(gòu)建三維空間城市,聯(lián)通城市信息與城市模型信息,實(shí)現(xiàn)對(duì)城市的數(shù)字化、智能化管理,增強(qiáng)城市管理能力,優(yōu)化城市居住安全和環(huán)境。

        1.3 微服務(wù)簡(jiǎn)介

        微服務(wù)是一種架構(gòu)概念,將單體服務(wù)拆分成若干個(gè)服務(wù),從而降低系統(tǒng)的耦合性,且這些服務(wù)幾乎不需要集中式管理,服務(wù)可用不同的語(yǔ)言編寫(xiě),使用不同的數(shù)據(jù)存儲(chǔ)技術(shù)。微服務(wù)中每個(gè)服務(wù)都可以獨(dú)立部署,各服務(wù)負(fù)責(zé)完成各自功能,通過(guò)Http 協(xié)議交互,形成對(duì)外的統(tǒng)一服務(wù)。

        2 Docker部署方案

        2.1 環(huán)境搭建

        2.1.1 服務(wù)器

        兩臺(tái)服務(wù)器:一個(gè)是數(shù)據(jù)庫(kù)服務(wù)器,主要用于部署平臺(tái)中數(shù)據(jù)存儲(chǔ);一個(gè)是代碼服務(wù)器,主要用于部署各類(lèi)運(yùn)行服務(wù),提供外部訪問(wèn)端口。因?yàn)榉?wù)之間需要進(jìn)行信息通訊,所以服務(wù)器之間需保證網(wǎng)絡(luò)通暢,端口連通,在服務(wù)器安裝Docker和Docker-Compose工具。

        2.1.2 服務(wù)

        為滿(mǎn)足業(yè)務(wù)需求,平臺(tái)共計(jì)16 個(gè)服務(wù)。其中5 個(gè)基礎(chǔ)服務(wù):Nacos 服務(wù)用來(lái)進(jìn)行服務(wù)發(fā)現(xiàn),保證服務(wù)之間的互相通信;Redis 服務(wù)作為平臺(tái)中緩存存儲(chǔ),加快數(shù)據(jù)讀取速度[4];Minio服務(wù)保存平臺(tái)中的文件信息,包括圖片、文檔、PDF 等信息;Rabbitmq 服務(wù)作為消息隊(duì)列,在平臺(tái)高并發(fā)時(shí),減輕數(shù)據(jù)庫(kù)壓力;Mysql 服務(wù)用來(lái)存儲(chǔ)平臺(tái)數(shù)據(jù)信息[5]。9 個(gè)系統(tǒng)服務(wù):網(wǎng)關(guān)服務(wù)作為后臺(tái)服務(wù)接口統(tǒng)一入口,負(fù)責(zé)請(qǐng)求分發(fā)和鑒權(quán);消息服務(wù),負(fù)責(zé)消息的接收與轉(zhuǎn)發(fā)以及配置功能;存儲(chǔ)服務(wù)負(fù)責(zé)文件的上傳下載等功能;用戶(hù)服務(wù)提供用戶(hù)相關(guān)信息的管理功能;授權(quán)服務(wù)負(fù)責(zé)用戶(hù)登錄相關(guān)的功能;系統(tǒng)服務(wù)負(fù)責(zé)管理系統(tǒng)級(jí)別的相關(guān)功能;推送服務(wù)負(fù)責(zé)站內(nèi)信的推送;流程服務(wù)提供流程相關(guān)的功能;監(jiān)控服務(wù)負(fù)責(zé)日志接收、分析、展示、備份功能;單點(diǎn)登錄服務(wù)提供單點(diǎn)登錄功能,保證用戶(hù)正常登陸。2個(gè)業(yè)務(wù)服務(wù):前端服務(wù)進(jìn)行前端頁(yè)面的展示;業(yè)務(wù)后臺(tái)服務(wù)為實(shí)現(xiàn)業(yè)務(wù)需求的具體邏輯代碼。服務(wù)關(guān)系圖如圖1所示。

        圖1 服務(wù)關(guān)系圖

        2.2 工作原理

        部署使用Gitlab作為代碼統(tǒng)一管理倉(cāng)庫(kù),便于瀏覽源代碼,管理缺陷和注釋?zhuān)瓿蓪?duì)開(kāi)發(fā)團(tuán)隊(duì)的任務(wù)代碼安排和人員代碼管理。使用Jenkins 作為項(xiàng)目持續(xù)集成工具,提供友好操作界面,實(shí)現(xiàn)持續(xù)、自動(dòng)構(gòu)建軟件項(xiàng)目,監(jiān)控外部任務(wù)運(yùn)行等功能[6]。使用Harbor 倉(cāng)庫(kù)作為Docker 鏡像倉(cāng)庫(kù),提供友好的Web Ui 界面,用戶(hù)和用戶(hù)權(quán)限管理;可通過(guò)Tips 標(biāo)簽記錄服務(wù)鏡像版本信息,簡(jiǎn)化服務(wù)鏡像版本管理;提供了CVE 漏洞庫(kù)來(lái)獲取最新漏洞信息,掃描用戶(hù)上傳容器是否存在漏洞問(wèn)題,保證代碼安全。使用Docker 作為部署工具,Docker 將服務(wù)打包成鏡像時(shí),Docker 根據(jù)DockerFile 文件信息下載并打包該服務(wù)所需JDK、Nginx 等運(yùn)行環(huán)境。憑借Docker 在主流操作系統(tǒng)下優(yōu)秀的兼容性,增強(qiáng)打包后微服務(wù)的可移植性。流程引入Dockercompose 工具,編寫(xiě)Yml 文件,記錄各服務(wù)鏡像信息、環(huán)境掛載信息、端口信息、賬號(hào)信息、日志配置信息、網(wǎng)關(guān)信息等內(nèi)容,以提高命令可讀性、可重復(fù)利用性、各服務(wù)網(wǎng)絡(luò)的可配置性和可連通性。

        基于Docker 進(jìn)行微服務(wù)部署時(shí),開(kāi)發(fā)人員將代碼上傳到Gitlab 中,通過(guò)配置Webhook,觸發(fā)Jenkins構(gòu)建操作,根據(jù)DockerFile文件和推送配置,將構(gòu)建后的鏡像包上傳到Harbor倉(cāng)庫(kù)中進(jìn)行存儲(chǔ),后登錄服務(wù)器,運(yùn)行基于Docker編寫(xiě)的sh 命令,完成停止容器、刪除容器、刪除鏡像、拉取最新鏡像、通過(guò)配置文件啟動(dòng)容器等操作,成功部署。具體工作流程如圖2所示。

        圖2 工作流程圖

        3 Docker部署實(shí)踐

        3.1 平臺(tái)描述

        灃西新城CIM 基礎(chǔ)平臺(tái)以BIM+GIS 為核心,以業(yè)務(wù)流程為驅(qū)動(dòng),利用三維BIM 技術(shù)信息化、數(shù)字化的技術(shù)優(yōu)勢(shì),處理項(xiàng)目規(guī)劃設(shè)計(jì)階段技術(shù)接口問(wèn)題,提前開(kāi)展項(xiàng)目實(shí)施的施工模擬,來(lái)避免工程實(shí)施階段引起的安全、質(zhì)量風(fēng)險(xiǎn)及投資浪費(fèi),對(duì)整個(gè)項(xiàng)目全生命周期進(jìn)行管理,提高整個(gè)工程項(xiàng)目建設(shè)的管理水平。

        平臺(tái)使用SpringCloud 為基礎(chǔ)架構(gòu),在此基礎(chǔ)上根據(jù)不同的功能需求,開(kāi)發(fā)出十幾個(gè)服務(wù)。平臺(tái)初始階段,采用傳統(tǒng)Jar 包部署方案,發(fā)現(xiàn)存在操作流程復(fù)雜、管理界面雜亂、啟動(dòng)配置冗余、服務(wù)辨別度低、系統(tǒng)運(yùn)行不穩(wěn)定等問(wèn)題。平臺(tái)中,運(yùn)維人員操作難度大,對(duì)于多個(gè)微服務(wù),容易出現(xiàn)操作錯(cuò)亂,問(wèn)題不易定位,管理費(fèi)時(shí)費(fèi)力。為解決上述問(wèn)題,簡(jiǎn)化操作流程,提升平臺(tái)穩(wěn)定性,研究Docker部署微服務(wù)方案。

        3.2 平臺(tái)部署

        為方便平臺(tái)管理,根據(jù)服務(wù)的功能將服務(wù)分為基礎(chǔ)服務(wù)、系統(tǒng)服務(wù)、業(yè)務(wù)服務(wù),共編寫(xiě)3個(gè)Yml 文件進(jìn)行管理。根據(jù)項(xiàng)目需要,編寫(xiě)管理基礎(chǔ)服務(wù)的Docker-Compose.yml,管理系統(tǒng)服務(wù)的Docker-Compose-System.yml,管理業(yè)務(wù)服務(wù)的Docker-Compose-Product.yml文件內(nèi)容。

        服務(wù)間存在依賴(lài)關(guān)系,需根據(jù)上述3 個(gè)Yml文件中記錄的鏡像信息,利用Docker-Compose運(yùn)行基礎(chǔ)服務(wù)、系統(tǒng)服務(wù)、業(yè)務(wù)服務(wù)的鏡像,生成對(duì)應(yīng)容器即可啟動(dòng)成功。為簡(jiǎn)化服務(wù)器服務(wù)啟動(dòng)流程,將啟動(dòng)語(yǔ)句編寫(xiě)為sh 腳本,便于后續(xù)項(xiàng)目啟動(dòng)。通過(guò)Nacos可視化界面可查看服務(wù)注冊(cè)情況,如圖3所示。

        圖3 Nacos中服務(wù)啟動(dòng)信息

        3.3 部署結(jié)果及經(jīng)驗(yàn)

        微服務(wù)項(xiàng)目使用Docker 成功部署。后端微服務(wù)中Nacos為服務(wù)注冊(cè)中心,其他服務(wù)需注冊(cè)到Nacos 中。通過(guò)Nacos 可視化面板查看各微服務(wù)注冊(cè)情況,判斷服務(wù)是否啟動(dòng)成功;通過(guò)檢查前端是否正常訪問(wèn)后端接口判斷后端微服務(wù)部署是否成功。

        平臺(tái)項(xiàng)目共計(jì)16 個(gè)微服務(wù)模塊,使用兩種方式對(duì)所有模塊重復(fù)部署10 次,具體測(cè)試數(shù)據(jù)如圖4所示。Jar包部署時(shí),平均單次需72分鐘;Docker部署時(shí),平均單次需13.2分鐘,且更加穩(wěn)定,明顯減少人為失誤操作,提升項(xiàng)目穩(wěn)定性能。在實(shí)際生產(chǎn)中,Docker部署方式已應(yīng)用于多個(gè)大中型項(xiàng)目,根據(jù)上述數(shù)據(jù)推算,該部署方式已為項(xiàng)目節(jié)省部署時(shí)間預(yù)計(jì)300小時(shí)。

        微服務(wù)項(xiàng)目使用Docker 部署,避免純Jar 包部署時(shí)存在的問(wèn)題,增強(qiáng)項(xiàng)目穩(wěn)定性。使用該方法相對(duì)于純Jar 包部署微服務(wù),顯著節(jié)省部署時(shí)間,效率對(duì)比如圖4所示。同時(shí)該方法在可移植性、可操作性、可追溯性、參數(shù)配置性、統(tǒng)一管理性、網(wǎng)絡(luò)連通性等方面較傳統(tǒng)方法存在優(yōu)勢(shì),具體見(jiàn)表1。

        圖4 Docker部署和Jar包部署項(xiàng)目時(shí)間對(duì)比

        表1 Docker部署微服務(wù)對(duì)比傳統(tǒng)純Jar包部署微服務(wù)分析

        4 結(jié)語(yǔ)

        本文重點(diǎn)介紹基于Docker 的微服務(wù)部署,描述其在CIM 項(xiàng)目中的應(yīng)用,實(shí)際簡(jiǎn)化運(yùn)維流程,降低運(yùn)維成本,提高項(xiàng)目的穩(wěn)定性,增強(qiáng)項(xiàng)目的用戶(hù)承載能力。因此,其在CIM 項(xiàng)目微服務(wù)部署中具有更廣闊前景。其優(yōu)勢(shì)主要包括以下幾點(diǎn):

        (1)便捷的操作方式,大大縮減了部署時(shí)間,減輕運(yùn)維人員的部署壓力。

        (2)良好的可移植性,可以快速便捷遷移所需服務(wù)。

        (3)使用Docker-Comopse 工具進(jìn)行容器統(tǒng)一編排管理,增強(qiáng)命令的可視化效果,簡(jiǎn)化部署命令操作。

        (4)使用Harbor 倉(cāng)庫(kù),簡(jiǎn)化鏡像歷史版本的管理,便于對(duì)項(xiàng)目進(jìn)行回滾操作。

        (5)便捷的網(wǎng)絡(luò)配置方式,使得容器之間更易配置服務(wù)發(fā)現(xiàn)和服務(wù)通訊。

        同時(shí),基于Docker 的微服務(wù)部署也存在一定不足,它更適合微服務(wù)項(xiàng)目部署,初次部署時(shí),需安裝配置Gitlab、Jenkins、Docker、Docker-Compose 等相關(guān)工具,并做好適配工作,具有一定復(fù)雜性,但在后續(xù)的部署工作中,對(duì)于多個(gè)子服務(wù)的管理可實(shí)現(xiàn)自動(dòng)化部署,對(duì)運(yùn)維人員十分友好;若為單體Web 項(xiàng)目,由于單體項(xiàng)目服務(wù)數(shù)量少,不存在微服務(wù)不易管理等問(wèn)題,可選擇辛亞宇[7]提到的使用Jar 包部署項(xiàng)目方式。

        猜你喜歡
        鏡像容器部署
        Different Containers不同的容器
        一種基于Kubernetes的Web應(yīng)用部署與配置系統(tǒng)
        晉城:安排部署 統(tǒng)防統(tǒng)治
        鏡像
        部署
        難以置信的事情
        鏡像
        小康(2018年23期)2018-08-23 06:18:52
        部署“薩德”意欲何為?
        太空探索(2016年9期)2016-07-12 10:00:02
        取米
        鏡像
        小康(2015年4期)2015-03-31 14:57:40
        我和隔壁的少妇人妻hd| 青榴社区国产精品| 人妻精品久久久一区二区| 蜜臀av一区二区三区免费观看| 亚洲精品久久久www小说| 少妇高潮喷水正在播放| 亚洲av色香蕉一区二区蜜桃| 曰日本一级二级三级人人| 久久综合九色综合久99| 亚洲影院天堂中文av色| 亚洲乱色视频在线观看| 国产黄久色一区2区三区| 国产乱码一区二区三区爽爽爽| 国产天堂网站麻豆| 亚洲一区二区三区在线观看| 日韩肥臀人妻中文字幕一区| 久久综合九色综合97欧美| 亚洲一级毛片免费在线观看| 国产最新一区二区三区| 亚洲日韩精品AⅤ片无码富二代| av一区二区三区综合网站| 五月丁香六月综合缴清无码| 国产精品久久无码一区二区三区网| 午夜无码片在线观看影院y| 与最丰满美女老师爱爱视频 | 欧美丰满熟妇xxxx性ppx人交| 美丽的熟妇中文字幕| 国产一级特黄无码免费视频| 亚洲av套图一区二区| 福利视频一区二区三区| 丰满人妻一区二区三区视频53| 美女在线国产| 亚洲熟女一区二区三区不卡| 精品无码国产自产在线观看水浒传| 狠狠色综合网站久久久久久久 | 在线观看一区二区中文字幕| 免费视频爱爱太爽了| 免费一级肉体全黄毛片| 美女把内衣内裤脱了给男人舔| 国产精品美女一区二区视频 | 国产精品视频一区日韩丝袜|