• 
    

    
    

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

      ?

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

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

      周 鵬,邱 星,李 鑫

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

      0 引言

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

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

      1 概念介紹

      1.1 Docker簡介

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

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

      1.2 CIM平臺(tái)簡介

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

      1.3 微服務(wù)簡介

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

      2 Docker部署方案

      2.1 環(huán)境搭建

      2.1.1 服務(wù)器

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

      2.1.2 服務(wù)

      為滿足業(yè)務(wù)需求,平臺(tái)共計(jì)16 個(gè)服務(wù)。其中5 個(gè)基礎(chǔ)服務(wù):Nacos 服務(wù)用來進(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ù)庫壓力;Mysql 服務(wù)用來存儲(chǔ)平臺(tái)數(shù)據(jù)信息[5]。9 個(gè)系統(tǒng)服務(wù):網(wǎng)關(guān)服務(wù)作為后臺(tái)服務(wù)接口統(tǒng)一入口,負(fù)責(zé)請求分發(fā)和鑒權(quán);消息服務(wù),負(fù)責(zé)消息的接收與轉(zhuǎn)發(fā)以及配置功能;存儲(chǔ)服務(wù)負(fù)責(zé)文件的上傳下載等功能;用戶服務(wù)提供用戶相關(guān)信息的管理功能;授權(quán)服務(wù)負(fù)責(zé)用戶登錄相關(guān)的功能;系統(tǒng)服務(wù)負(fù)責(zé)管理系統(tǒng)級別的相關(guān)功能;推送服務(wù)負(fù)責(zé)站內(nèi)信的推送;流程服務(wù)提供流程相關(guān)的功能;監(jiān)控服務(wù)負(fù)責(zé)日志接收、分析、展示、備份功能;單點(diǎn)登錄服務(wù)提供單點(diǎn)登錄功能,保證用戶正常登陸。2個(gè)業(yè)務(wù)服務(wù):前端服務(wù)進(jìn)行前端頁面的展示;業(yè)務(wù)后臺(tái)服務(wù)為實(shí)現(xiàn)業(yè)務(wù)需求的具體邏輯代碼。服務(wù)關(guān)系圖如圖1所示。

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

      2.2 工作原理

      部署使用Gitlab作為代碼統(tǒng)一管理倉庫,便于瀏覽源代碼,管理缺陷和注釋,完成對開發(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 倉庫作為Docker 鏡像倉庫,提供友好的Web Ui 界面,用戶和用戶權(quán)限管理;可通過Tips 標(biāo)簽記錄服務(wù)鏡像版本信息,簡化服務(wù)鏡像版本管理;提供了CVE 漏洞庫來獲取最新漏洞信息,掃描用戶上傳容器是否存在漏洞問題,保證代碼安全。使用Docker 作為部署工具,Docker 將服務(wù)打包成鏡像時(shí),Docker 根據(jù)DockerFile 文件信息下載并打包該服務(wù)所需JDK、Nginx 等運(yùn)行環(huán)境。憑借Docker 在主流操作系統(tǒng)下優(yōu)秀的兼容性,增強(qiáng)打包后微服務(wù)的可移植性。流程引入Dockercompose 工具,編寫Yml 文件,記錄各服務(wù)鏡像信息、環(huán)境掛載信息、端口信息、賬號信息、日志配置信息、網(wǎng)關(guān)信息等內(nèi)容,以提高命令可讀性、可重復(fù)利用性、各服務(wù)網(wǎng)絡(luò)的可配置性和可連通性。

      基于Docker 進(jìn)行微服務(wù)部署時(shí),開發(fā)人員將代碼上傳到Gitlab 中,通過配置Webhook,觸發(fā)Jenkins構(gòu)建操作,根據(jù)DockerFile文件和推送配置,將構(gòu)建后的鏡像包上傳到Harbor倉庫中進(jìn)行存儲(chǔ),后登錄服務(wù)器,運(yùn)行基于Docker編寫的sh 命令,完成停止容器、刪除容器、刪除鏡像、拉取最新鏡像、通過配置文件啟動(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)勢,處理項(xiàng)目規(guī)劃設(shè)計(jì)階段技術(shù)接口問題,提前開展項(xiàng)目實(shí)施的施工模擬,來避免工程實(shí)施階段引起的安全、質(zhì)量風(fēng)險(xiǎn)及投資浪費(fèi),對整個(gè)項(xiàng)目全生命周期進(jìn)行管理,提高整個(gè)工程項(xiàng)目建設(shè)的管理水平。

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

      3.2 平臺(tái)部署

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

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

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

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

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

      平臺(tái)項(xiàng)目共計(jì)16 個(gè)微服務(wù)模塊,使用兩種方式對所有模塊重復(fù)部署10 次,具體測試數(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í)存在的問題,增強(qiáng)項(xiàng)目穩(wěn)定性。使用該方法相對于純Jar 包部署微服務(wù),顯著節(jié)省部署時(shí)間,效率對比如圖4所示。同時(shí)該方法在可移植性、可操作性、可追溯性、參數(shù)配置性、統(tǒng)一管理性、網(wǎng)絡(luò)連通性等方面較傳統(tǒng)方法存在優(yōu)勢,具體見表1。

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

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

      4 結(jié)語

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

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

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

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

      (4)使用Harbor 倉庫,簡化鏡像歷史版本的管理,便于對項(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ù)的部署工作中,對于多個(gè)子服務(wù)的管理可實(shí)現(xiàn)自動(dòng)化部署,對運(yùn)維人員十分友好;若為單體Web 項(xiàng)目,由于單體項(xiàng)目服務(wù)數(shù)量少,不存在微服務(wù)不易管理等問題,可選擇辛亞宇[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
      曲松县| 永州市| 平江县| 宜兴市| 定兴县| 山西省| 齐齐哈尔市| 西和县| 桑日县| 盱眙县| 拉萨市| 桐乡市| 呼图壁县| 长葛市| 卓资县| 双牌县| 广饶县| 定西市| 福贡县| 吴川市| 阿克| 泉州市| 普格县| 石景山区| 苏州市| 栾川县| 盐边县| 无极县| 海丰县| 德江县| 黔西| 彰武县| 黄山市| 祁阳县| 中超| 大城县| 博兴县| 扶沟县| 宜都市| 樟树市| 宝山区|