国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

站長之家,中國草根站長新聞、建站經驗、素材資源交流平臺!
分類導航

站長新聞|網站運營|建站經驗|網站優化|站長資源|站長源碼|

香港云服务器
服務器之家 - 站長之家 - 建站經驗 - 簡介Docker在美團網站服務器上的應用方案

簡介Docker在美團網站服務器上的應用方案

2020-06-23 16:09CSDN潘永之 建站經驗

這篇文章主要介紹了簡介Docker在美團網站服務器上的應用,Docker是當下最為火爆的容器類虛擬化技術,需要的朋友可以參考下

自動構建系統是從美團的自動部署系統發展出來的一個新功能。每當開發人員提交代碼到倉庫后,系統會自動根據開發人員定制的構建配置,啟動新的Docker容器,在其中對源代碼進行構建(build),包括編譯(如Java、C++和Go)、預處理(如JavaScript和CSS)、壓縮(如圖片)等操作,生成最終需要上線的程序包。

背景和問題

美團的代碼自動部署系統承載著美團所有業務的代碼上線工作。代碼部署系統一開始基于簡單的Bash腳本,從一個中央主機上通過Rsync和SSH進行文件傳輸和命令執行。

簡介Docker在美團網站服務器上的應用方案

圖1 代碼部署系統架構圖

代碼發布系統經過多番演進,增加了很多功能,但原來的中心式架構仍然保留了下來,見圖1。發布者通過Web界面或者REST API控制中控機,中控機負責從Git服務拉取代碼,構建應用程序包,然后通過Rsync上傳程序包到應用集群,并用SSH執行遠程命令。

簡介Docker在美團網站服務器上的應用方案

自動部署系統為美團業務的快速發展提供了有力的支撐。由于我們采用了開發人員自助上線的方式,發布操作頻繁,工作日每日上線達上千次。圖2是過去15個月每個月的發布次數。為了持續優化發布速度,給發布人員提供良好的體驗,我們把單次發布平均時間作為發布系統的一項重要的KPI。

然而,隨著美團業務的迅速擴張,服務增多,發布應用數目也增多,中心化的架構的問題也凸顯了出來。

問題1:資源競爭

多個構建任務同時進行,競爭中控機的資源,影響發布速度。有一次一個應用受到同時進行的某Java類應用發布的影響,通常兩分鐘的發布變成了十多分鐘,嚴重影響發布體驗。如果出現事故需要回滾,就是更嚴重的問題了。

問題2:環境沖突

不同應用的構建依賴環境在一臺發布機上,需要考慮環境沖突和隔離的問題。例如,Java 1.6/1.7共存,應用需要通過JAVA_HOME變量指定使用的Java版本,Maven 2/3也存在同樣的問題。npm的global包也需要兼容多個應用的構建。

問題3:安全隱患

應用的構建腳本運行在公共發布機上,腳本的Bug可能會影響到發布機的正常運行。例如某次一個構建腳本里面的sudo service nginx reload命令,本應是在應用服務器上執行的,但開發人員錯誤配置到了在發布機上執行的構建腳本里面。

解決方案

解決上述三個問題,我們首先想到的方案自然是重構為多臺中控機的可橫向擴展的方式。但由于某些應用的特殊性,改動比較麻煩,所以開始并沒有走這個方向(現在已實現多中控機)。

那么另外一個思路:能不能把構建過程從中控機分離出來?這個思路受到了Travis CI(https://travis-ci.org)的啟發。我們借鑒Travis CI,在代碼提交時自動在一個新的環境中觸發應用的構建。

因此,我們的解決方案可以概括為如下三點:

把構建過程放到Docker容器;

提交代碼時自動觸發構建;

發布時直接使用構建好的應用包。

使用前配置如下:

在發布系統配置發布項(build.yml);

在Stash配置自動構建服務的URL;

在私有Docker registry上傳定制鏡像(可選)。

使用過程比較簡單,主要有如下幾個步驟:

開發人員提交代碼到Stash;

觸發自動構建;

自動構建根據配置生成任務;

在Docker服務器上啟動容器完成構建;

將構建好的包上傳到美團云對象存儲服務(MSS);

發布時從MSS拉取軟件包并發布。

每次提交代碼時會觸發自動構建API。構建任務放進隊列里,任務在Docker服務器執行。當發布時就不用再去編譯,直接拉取軟件包進行發布。從圖6、圖7兩幅圖中可以看到在發布過程中直接使用了已自動構建好的文件進行部署。

簡介Docker在美團網站服務器上的應用方案

圖3 自動構建的配置

簡介Docker在美團網站服務器上的應用方案

圖4 發布系統的配置界面

簡介Docker在美團網站服務器上的應用方案

圖5 自動構建架構圖

簡介Docker在美團網站服務器上的應用方案

圖6 自動構建的日志

簡介Docker在美團網站服務器上的應用方案

圖7 嵌入了自動構建日志的發布日志

為什么沒有用虛擬機?

美團的虛擬化比較徹底,自動構建也可以用虛擬機而非容器實現。但虛擬機都和業務相關,會長時間保留。其次,虛擬機和CMDB深度結合,創建后會上報基本信息,部署Agent,配置監控項等。此外,虛擬機的創建是比較慢的。綜合考慮以上幾點,我們使用了Docker而不是虛擬機作為自動構建的基本單元。

效果和收益

基于Docker容器的自動構建很好地解決了之前提到的三個問題:資源競爭、環境沖突和安全隱患。構建任務移出發布機,構建用Docker服務器可橫向擴展,解決了資源競爭問題。每個構建都是獨立的鏡像,環境沖突問題不復存在。構建腳本運行在獨立于發布機的Docker服務器上,對發布機造成的安全隱患自然就消除了。

除解決了以上三個問題外,自動構建還顯著改善了發布速度。經統計,自動構建任務的平均執行時間是197s,而使用自動構建應用的平均發布時間是99s。如果不使用自動構建,那么這些應用的發布時間就是197s + 99s,大約是三百秒。可以看到,自動構建把應用的發布時間縮短了三分之二。

總結

自動構建是美團對Docker的首次應用。這個應用不是為了用Docker而用Docker的,而是在解決代碼部署系統中的問題時,利用Docker很好地解決了我們遇到的問題。該應用只利用了Docker最核心的容器功能,并沒有使用Docker集群管理、調度、自動擴容等高級的功能。自動構建的場景非常適合使用Docker。希望本文能夠對計劃開始使用Docker的公司有所啟發。

延伸 · 閱讀

精彩推薦
391
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 成人av在线网站 | 毛片视频免费 | 欧美一区在线视频 | 极品久久 | 日韩在线一区二区三区 | 一本大道久久a久久精品综合1 | 国产91精品一区二区绿帽 | 精品成人在线视频 | 成人在线免费观看 | 中文字幕亚洲欧美日韩在线不卡 | 亚洲天堂影院 | 伊人99 | 日韩美一级片 | 国产毛片av | 韩国一区二区视频 | 求av网址| 成人免费乱码大片a毛片软件 | 少妇精品久久久久久久久久 | 91麻豆精品国产91久久久久久久久 | 国产一级一级国产 | 中文字幕一区二区三区日韩精品 | 久久av网站| 国产一区二区在线视频 | 国产精品无码久久久久 | 日本一区二区视频 | 欧美久久视频 | 一区二区三区亚洲 | 免费观看av大片 | 日日操狠狠操 | 欧美涩涩网站 | 亚洲国产高清美女在线观看 | 成人av观看 | 欧美日本韩国一区二区三区 | 99久久婷婷国产精品综合 | 国产高清视频一区二区 | 免费午夜电影 | 精品日韩一区二区三区 | 91精品久久久久久久久久入口 | 99久久夜色精品国产网站 | 亚洲国产中文在线观看 | 99精品久久久|