日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记

發(fā)布時間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.CI(Continuous Integration)簡介

  ?CI規(guī)則1:盡量頻繁地把代碼簽入到分支中以進行集成

  CI規(guī)則2:不光要對語法進行驗,也要提供一系列的自動化來驗證

  CI規(guī)則3:CI失敗后,要把修復CI當做第一優(yōu)先級的事情

  說明:作為CI流程的一部分,我們提供的制品應該每次只生成一次,然后在所有的部署一切使用,這不僅避免多次重復做一件事情,還可以保證部署上線的制品與測試通過的那是同一個。

?

二.把CI映射到微服務

? ? ?這里有幾種做法:

? ? 做法1:所有的東西都放在一起,向代碼庫的任何一次提交都會觸發(fā)構建,同時會構建出多個制品。

? ? 一般來說,我們絕對應該避免這個模式,但在項目初期是個例外。我即使只修改一個服務的一行代碼也需要進行整體的驗證和構建,事實上這有可能是不需要的,這會影響CI的周期。

? ? 做法2:將每個CI映射到代碼庫中不同的目錄,這種做法比第一種好。

? ? 做法3:每個服務都有自己的代碼庫,都有自己的CI,這樣就更加獨立了。

?

三.CD(Continuous Delivery)簡介

? ? ?正如我們項目組正在使用的PipeLine,這就是一個CD產品,它告訴我們每個步驟是否完成,距離最終的產品交付還有哪幾項,軟件質量的可視化得到了極大改善。

? ? ?

?

四.制品的選擇

? ? ?Java可以生成Jar包和War包,Ruby有gem,它們在運行的時候需要特定的環(huán)境,Chef、Puppet、Ansible是集中配置管理系統(tǒng),支持一些通用技術棧的構建物部署。

? ? ?我們也可以選擇生成與操作系統(tǒng)相關的制品,如RedHat或CentOS的RPM、Ubuntu的deb包、Windows的MSIqn。使用操作系統(tǒng)的制品好處是,不需要考慮底層使用的是什么技術,只需要簡單使用內置的工具就可以完成軟件的安裝。

? ? ?如果使用自動化配置管理工具來管理環(huán)境問題,一個問題是,需要花費大量的時間運行這些腳本,它們會一遍遍地安裝 這些重復的工具,而且還可能有新的軟件加進來,其安裝時間會繼續(xù)被拉長。我們可以使用虛擬機鏡像,在部署軟件時,只需要根據鏡像創(chuàng)建一個實例,之后在其安裝最新的微服務即可,不需要再花費時間來安裝依賴,因為它們已經在鏡像中安裝好了,這樣可以節(jié)省很多時間。但安裝鏡像也會花費很多時間,同時不同平臺的鏡像是不一樣的,我們可以通過Packer來解決這個問題,它可以從Chef、Ansible、Puppet中的同一套配置中生成不同平臺的鏡像。

? ? ?那么,我們可能將微服務也包含在鏡像中,那么當你啟動鏡像時,微服務就已經就緒了。

? ? ?但這同時也會帶來一個問題,有人會進生產服務器修改其中某一臺的配置,導致配置漂移問題,怎么辦?應該禁止對任何運行的服務器做手動修改。

?

五.服務的配置管理

? ? ?對于不同的生產環(huán)境有不同的配置,我們應該如何處理?應該最小化環(huán)境間配置的差異,比如用來連接數據庫的用戶名和密碼。

? ? 另外,配置文件應該單獨管理,如IT部正在使用的JFrog制品庫。

?

六.服務與主機之間的映射

? ? ??這樣的形式有多種。

? ? ? 第1種:單主機多服務

? ? ? 這種方式簡單,但是也會存在挑戰(zhàn),如監(jiān)控困難,我們不知道哪個服務使用CPU的頻率更高一點,同時服務之間會造成影響,一個服務可能會造成系統(tǒng)資源用盡,這樣其他服務也會有相應的影響。

? ? ? 第2種:應用程序容器

? ? ? 這種方式,從根本上說,是想試圖優(yōu)化資源的使用,但現在云服務的出現使得已經沒有必要了。

? ? ? 這種方式將5個Java服務打包在一個容器(如Jetty)中,這樣不可避免地限制了技術的選擇,同時在聚合監(jiān)控時也會難以支持。

? ? ? 第3種:每個主機一個服務

? ? ? 這種方式很容易對服務進行擴展,安全性也可以在更小的范圍內進行,但主機數據的增加也會是個問題。

? ? ? 第4種:使用Pass(平臺即服務)

? ? ? Pass平臺會提供一些特定制品(如Java Jar包或Ruby 的gem等)的支持,還會幫你自動配置機器然后運行,能夠透明地對系統(tǒng)進行彈性管理,允許你控制運行服務的節(jié)點數量,Pass平臺幫你處理其他的工作。

?

七.如何管理微服務帶來的大量主機:自動化

? ? ? ?為了讓你從眾多的服務器中解脫出來,你需要自動化,你需要寫一行代碼來啟動或開戶一個虛擬機,你需要能夠自動部署軟件,你需要自動完成數據庫的變更。

? ? ? 方法1:傳統(tǒng)的虛擬化技術

? ? ? ? ? ? ??

? ? ??如上圖所示,這就是傳統(tǒng)的虛擬化技術,在操作系統(tǒng)之上,存在著Hypervisor,它的任務主要有兩個,對CPU和內存資源做從虛擬主機到物理主機的映射和給上層提供一個控制的層,但Hypervisor也需要一定的資源來完成自己的工作,它也會占用CPU、IO和內存等,Hypervisor主機越多,占用的資源就越多。

? ? ? 方法2:Vegrant

? ? ? 這是一個部署平臺,通常在開發(fā)和測試環(huán)境中使用,可以在一臺機器上創(chuàng)建一個虛擬的云,它的底層使用的是標準的虛擬化系統(tǒng),比如你可以同時創(chuàng)建多個VM,通過關掉其中的幾臺來測試故障模式,并且可以把本地目錄映射到虛擬機上,這樣就可以在修改代碼后立即查看效果。

? ? ? 方法3:Linux容器

? ? ? Linux容器可以創(chuàng)建一個隔離的進程空間,進而在這個空間運行其他的進程。在Linux中,進程必須由用戶來運行,并且根據權限的不同擁有不同的能力,進程可以創(chuàng)建其他進程,舉個例子,如果我在終端啟動了一個乾,你可以認為它是終端程序的子進行,Linux內核的任務就是維護這個進程樹。

? ? ? Linux容器擴展了這一想法,每個容器就是整個系統(tǒng)進程樹的一棵子樹,內核已經幫我們完成了給這些容器分配物理資源的任務, LXC就是這樣一種容器(類似的還有Solaris Zones、Open VZ),它的基本結構如下:

? ? ? ? ? ? ?

? ? ? 它不再需要Hyervisor,其實盡管每個容器可以運行不同的操作系統(tǒng)發(fā)行版,但必須共享相同的內核,因為進程樹存在于內核中,這意味著,我們的主機操作系統(tǒng)可以是Ubuntu,而在容器中可以運行CenOS,只要它們的內核相同即可。

? ? ? 容器更輕量,所以在相同的硬件上能夠運行的容器數量比虛擬機要多得多,而且啟動速度更快,但容器在隔離性上也還存在一定問題。

? ? ? 方法4:Docker

? ? ? Docker是構建在輕量級容器之上的平臺,它幫你處理了大多數與容器管理相關的事情,你可以在Docker中創(chuàng)建和部署應用,這些基于容器的應用與VM鏡像很類似,Docker也能管理容器的配置,并幫你處理一些網絡問題。

? ? ? Docker本身并不能解決所有的問題,它只是一個在單機上運行的簡單的Paas,你還需要一些工具來幫你管理多臺機器上的Docker實例上的服務。比如,當你向這些工具請求一個容器時,它會幫你找到容器并運行它。Google的Kubernetes和Deis就是這樣的軟件。

? ? ? Docker+調度工具構成的解決方案介于IaaS和PaaS之間,我們可以稱之為CaaS(容器即服務)。

?

八.使用自動化腳本

? ? ? ?參數化的命令行調用是任何部署的最合理方式,可以使用CI工具來觸發(fā)腳本的調用,從Windows的Bash到Python Fabric腳本等,好處是一次編寫后面基本不用改了,也可以使用Terraform、Salt Stack這樣的工具。

?

參考

? ? ? 《微服務設計》(Sam Newman 著 / 崔力強 張駿 譯)

相關文章:?

  • 微服務的概念——《微服務設計》讀書筆記

  • 微服務架構師的職責——《微服務設計讀書筆記》

  • 建模:確定服務的邊界——《微服務設計》讀書筆記

  • 微服務集成——《微服務設計》讀書筆記

  • 服務的協(xié)作:服務間的消息傳遞——《微服務設計》讀書筆記

  • 拆分:分解單塊系統(tǒng)——《微服務設計》讀書筆記

原文地址:http://www.cnblogs.com/gudi/p/6667102.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注


總結

以上是生活随笔為你收集整理的部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。