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

?

基于Docker技術在CIM平臺微服務部署的研究及應用

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

周 鵬,邱 星,李 鑫

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

0 引言

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

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

1 概念介紹

1.1 Docker簡介

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

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

1.2 CIM平臺簡介

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

1.3 微服務簡介

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

2 Docker部署方案

2.1 環(huán)境搭建

2.1.1 服務器

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

2.1.2 服務

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

圖1 服務關系圖

2.2 工作原理

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

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

圖2 工作流程圖

3 Docker部署實踐

3.1 平臺描述

灃西新城CIM 基礎平臺以BIM+GIS 為核心,以業(yè)務流程為驅動,利用三維BIM 技術信息化、數(shù)字化的技術優(yōu)勢,處理項目規(guī)劃設計階段技術接口問題,提前開展項目實施的施工模擬,來避免工程實施階段引起的安全、質量風險及投資浪費,對整個項目全生命周期進行管理,提高整個工程項目建設的管理水平。

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

3.2 平臺部署

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

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

圖3 Nacos中服務啟動信息

3.3 部署結果及經(jīng)驗

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

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

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

圖4 Docker部署和Jar包部署項目時間對比

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

4 結語

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

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

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

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

(4)使用Harbor 倉庫,簡化鏡像歷史版本的管理,便于對項目進行回滾操作。

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

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

猜你喜歡
鏡像容器部署
Different Containers不同的容器
一種基于Kubernetes的Web應用部署與配置系統(tǒng)
晉城:安排部署 統(tǒng)防統(tǒng)治
鏡像
當代黨員(2020年20期)2020-11-06 04:17:52
部署
難以置信的事情
鏡像
小康(2018年23期)2018-08-23 06:18:52
部署“薩德”意欲何為?
太空探索(2016年9期)2016-07-12 10:00:02
取米
鏡像
小康(2015年4期)2015-03-31 14:57:40
盐津县| 通河县| 广安市| 宜州市| 桦南县| 万源市| 连江县| 达孜县| 扎鲁特旗| 嘉禾县| 灵台县| 景德镇市| 防城港市| 东兰县| 怀化市| 安龙县| 卓尼县| 韩城市| 安塞县| 潮安县| 永嘉县| 武乡县| 湟中县| 泌阳县| 太谷县| 青神县| 霍山县| 轮台县| 连城县| 湟源县| 灵丘县| 剑川县| 武宁县| 云安县| 昂仁县| 沙田区| 盘山县| 历史| 黔西| 遂溪县| 鄄城县|