版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章容器技術(shù)7.1容器技術(shù)簡(jiǎn)介7.2Docker技術(shù)簡(jiǎn)介7.3Rocket(Rkt)技術(shù)簡(jiǎn)介7.4其他容器技術(shù)簡(jiǎn)介of3117.5容器編排系統(tǒng)簡(jiǎn)介高級(jí)人工智能人才培養(yǎng)叢書習(xí)題7.1容器技術(shù)簡(jiǎn)介第7章容器技術(shù)of312容器是一種輕量級(jí)操作系統(tǒng)層面的虛擬機(jī),它為應(yīng)用軟件及其依賴組件提供了一個(gè)資源獨(dú)立的運(yùn)行環(huán)境。容器技術(shù)最早可以追溯到1979年UNIX系統(tǒng)中的chroot,最初是為了方便切換root目錄,為每個(gè)進(jìn)程提供了文件系統(tǒng)資源的隔離,這也是OS虛擬化思想的起源。7.1.1容器技術(shù)的發(fā)展歷程7.1容器技術(shù)簡(jiǎn)介第7章容器技術(shù)of313服務(wù)器層:容器運(yùn)行的環(huán)境,既可以是物理機(jī),也可以是虛擬機(jī);資源管理層:包含了服務(wù)器、操作系統(tǒng)等資源的管理;運(yùn)行引擎層:主要指常見(jiàn)的容器系統(tǒng),包括Docker、rkt、Hyper、CRI-O;集群管理:通過(guò)對(duì)一組服務(wù)器運(yùn)行分布式應(yīng)用;應(yīng)用層:所有運(yùn)行于容器之上的應(yīng)用程序,以及所需的輔助系統(tǒng)。7.1.2容器技術(shù)的架構(gòu)7.1容器技術(shù)簡(jiǎn)介第7章容器技術(shù)of314容器底層的核心技術(shù)包括Linux上的名稱空間(Namespaces)、控制組(Controlgroups)、切根(chroot)。名字空間是Linux內(nèi)核一個(gè)強(qiáng)大的特性。每個(gè)容器都有自己?jiǎn)为?dú)的名字空間,運(yùn)行在其中的應(yīng)用都像是在獨(dú)立的操作系統(tǒng)中運(yùn)行一樣。名字空間保證了容器之間彼此互不影響。控制組Cgroups是Linux內(nèi)核提供的一種可以限制、記錄、隔離進(jìn)程組(processgroups)所使用的物理資源的機(jī)制。Chroot(changetoroot)其中root根目錄的意思,也就是改變(linux根目錄是/,也可以理解為設(shè)置)一個(gè)程序運(yùn)行時(shí)參考的根目錄的位置。7.1.3容器的底層技術(shù)7.1容器技術(shù)簡(jiǎn)介第7章容器技術(shù)of315容器鏡像通常包括操作系統(tǒng)文件、應(yīng)用本身的文件、應(yīng)用所依賴的軟件包和庫(kù)文件。為了提高容器鏡像的管理效率,容器的鏡像采用分層的形式存放。容器運(yùn)行時(shí)引擎(runtime)和容器鏡像(image)兩者的關(guān)系類似于虛擬化軟件和虛擬機(jī)鏡像的關(guān)系。容器運(yùn)行時(shí)引擎的技術(shù)標(biāo)準(zhǔn)主要是由OCI基金會(huì)領(lǐng)導(dǎo)社區(qū)進(jìn)行制定,認(rèn)可了runC(Docker公司提供)和runV(Hyper公司提供)兩種合規(guī)的運(yùn)行引擎。容器編排工具通過(guò)對(duì)容器服務(wù)的編排,決定容器服務(wù)之間如何進(jìn)行交互。容器的編排一般是通過(guò)描述性語(yǔ)言YAML或者JSON來(lái)定義編排的內(nèi)容。目前主要的編排工具有GoogleKubernetes、DockerSwarm、ApacheMesos和CoreOSFleet等。7.1.4容器的關(guān)鍵技術(shù)內(nèi)容7.1容器技術(shù)簡(jiǎn)介第7章容器技術(shù)of316容器集群:是將多臺(tái)物理機(jī)抽象為邏輯上單一調(diào)度實(shí)體的技術(shù),為容器化的應(yīng)用提供資源調(diào)度、服務(wù)發(fā)現(xiàn)、彈性伸縮、負(fù)載均衡等功能,同時(shí)監(jiān)控和管理整個(gè)服務(wù)器集群,提供高質(zhì)量、不間斷的應(yīng)用服務(wù)。服務(wù)注冊(cè)和發(fā)現(xiàn):容器技術(shù)在構(gòu)建自動(dòng)化運(yùn)維場(chǎng)景中,服務(wù)注冊(cè)和發(fā)現(xiàn)是重要的兩個(gè)環(huán)節(jié),一般通過(guò)一個(gè)全局性的配置服務(wù)來(lái)實(shí)現(xiàn)。熱遷移(LiveMigration):又稱為動(dòng)態(tài)遷移或者實(shí)時(shí)遷移,是指將整容器的運(yùn)行時(shí)狀體完整保存下來(lái),同時(shí)可以快速地在其他主機(jī)或平臺(tái)上恢復(fù)運(yùn)行。7.1.4容器的關(guān)鍵技術(shù)內(nèi)容7.1容器技術(shù)簡(jiǎn)介第7章容器技術(shù)of317容器技術(shù)的優(yōu)勢(shì)敏捷開(kāi)發(fā):輕量級(jí)的打包方式使其具有更好的性能和更小的規(guī)模版本管理:可以追蹤、記錄、生成不同的容器版本,分析版本差異計(jì)算環(huán)境可移植:容器封裝了與應(yīng)用相關(guān)的依賴組件及操作系統(tǒng)信息標(biāo)準(zhǔn)化:基于開(kāi)放標(biāo)準(zhǔn)而設(shè)計(jì),成立OCI組織,推出開(kāi)放容器標(biāo)準(zhǔn)安全性:容器間的進(jìn)程以及容器內(nèi)外的進(jìn)程是相互獨(dú)立的彈性伸縮:由統(tǒng)一的編排工具管理,彈性擴(kuò)容可以在短時(shí)間內(nèi)自動(dòng)完成高可用性:容器編排工具能夠及時(shí)發(fā)現(xiàn)節(jié)點(diǎn)的變化,及時(shí)作出調(diào)整管理便利:通過(guò)簡(jiǎn)單的命令行,完成對(duì)單一容器的管理容器技術(shù)的局限性性能:并發(fā)問(wèn)題成為應(yīng)用瓶頸的時(shí)候,容器會(huì)將這個(gè)問(wèn)題放大存儲(chǔ):利用Volume接口形成數(shù)據(jù)的映射和轉(zhuǎn)移,會(huì)浪費(fèi)存儲(chǔ)資源兼容:容器版本更新快速,運(yùn)維時(shí)存在版本兼容問(wèn)題管理:管理容器環(huán)境和應(yīng)用需要多類技術(shù)支撐和增加對(duì)容器的監(jiān)控7.1.5容器技術(shù)的優(yōu)勢(shì)和局限性7.1容器技術(shù)簡(jiǎn)介第7章容器技術(shù)of318云計(jì)算:容器定義了一套從構(gòu)建到執(zhí)行的標(biāo)準(zhǔn)化體系,改變了傳統(tǒng)的虛擬化技術(shù),深度影響了云計(jì)算領(lǐng)域,容器是云計(jì)算的未來(lái)。大數(shù)據(jù):大數(shù)據(jù)平臺(tái)如果能采用容器方式發(fā)布,與相關(guān)技術(shù)的集成與對(duì)接,可降低整個(gè)系統(tǒng)的搭建難度,縮短交付和安裝周期,減少安裝失敗風(fēng)險(xiǎn)。物聯(lián)網(wǎng):容器技術(shù)可大大加速物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)部署,還可以滿足物聯(lián)網(wǎng)在自動(dòng)監(jiān)控,集中式維護(hù)管理方面的需求。SDN:通過(guò)SDN和Overlay網(wǎng)絡(luò)結(jié)合,將控制轉(zhuǎn)發(fā)分離、集中控制管理理念應(yīng)用于容器網(wǎng)絡(luò),還可以最大程度增強(qiáng)容器網(wǎng)絡(luò)的彈性伸縮能力和簡(jiǎn)化網(wǎng)絡(luò)管理。7.1.6容器技術(shù)的典型應(yīng)用7.1容器技術(shù)簡(jiǎn)介第7章容器技術(shù)of319容器和虛擬機(jī)技術(shù)各具優(yōu)勢(shì),二者或?qū)⑿纬梢环N互為補(bǔ)充的姿態(tài),優(yōu)化企業(yè)的IT體系。7.1.7容器PK虛擬機(jī)
容器虛擬機(jī)啟動(dòng)速度秒級(jí)分鐘級(jí)復(fù)雜度基于內(nèi)核namespace技術(shù),對(duì)現(xiàn)有基礎(chǔ)設(shè)施侵入較少部署復(fù)雜度較高,并且很多基礎(chǔ)設(shè)施不兼容執(zhí)行性能在內(nèi)核中實(shí)現(xiàn),所以性能幾乎與原生一致對(duì)比內(nèi)核級(jí)實(shí)現(xiàn),性能較差可控性依賴簡(jiǎn)單,與進(jìn)程無(wú)本質(zhì)區(qū)別依賴復(fù)雜,并且存在跨部門問(wèn)題體積與業(yè)務(wù)代碼發(fā)布版本大小相當(dāng),MB級(jí)別GB級(jí)別并發(fā)性可以啟動(dòng)幾百幾千個(gè)容器最多幾十個(gè)虛擬機(jī)資源利用率高低第7章容器技術(shù)7.2Docker技術(shù)簡(jiǎn)介7.1容器技術(shù)簡(jiǎn)介7.3Rocket(Rkt)技術(shù)簡(jiǎn)介7.4其他容器技術(shù)簡(jiǎn)介of31107.5容器編排系統(tǒng)簡(jiǎn)介高級(jí)人工智能人才培養(yǎng)叢書習(xí)題7.2Docker技術(shù)簡(jiǎn)介of31117.2.1Docker是什么2013年,美國(guó)DotCloud公司推出了一款基于Linux內(nèi)核容器技術(shù)的產(chǎn)品——Docker,具有輕便計(jì)算、敏捷發(fā)布、簡(jiǎn)易管理的特性,這款基于開(kāi)源項(xiàng)目的產(chǎn)品在2015年就已經(jīng)風(fēng)靡全球。Docker開(kāi)源項(xiàng)目旨在為軟件提供運(yùn)行時(shí)的封裝,以及資源分割和調(diào)度的基本單元。Docker容器的本質(zhì)是宿主機(jī)上的進(jìn)程,通過(guò)一些Linux內(nèi)核API的調(diào)用來(lái)實(shí)現(xiàn)操作系統(tǒng)級(jí)“虛擬化”。Docker的內(nèi)核原理資源隔離:通過(guò)使用namespace,容器對(duì)應(yīng)用程序封裝進(jìn)行隔離;資源分配與配額:利用cgroups來(lái)限制在不同容器間的資源分配;網(wǎng)絡(luò)模型:宿主機(jī)運(yùn)行proxy和修改iptables規(guī)則實(shí)現(xiàn)和控制通信。第7章容器技術(shù)7.2Docker技術(shù)簡(jiǎn)介of31127.2.2Docker的架構(gòu)和流程Docker系統(tǒng)主要由Dockerdaemon、Dockerclient、Dockerregistry、Docker鏡像、和Docker容器組成;基于Docker的工作流程:1)應(yīng)用程序開(kāi)發(fā);2)書寫Dockerfile;3)構(gòu)建Docker鏡像;4)發(fā)布Docker鏡像;5)下載并運(yùn)行Docker鏡像。第7章容器技術(shù)7.2Docker技術(shù)簡(jiǎn)介of31137.2.3Docker的優(yōu)勢(shì)和局限D(zhuǎn)ocker的優(yōu)勢(shì):隔離性、輕便性、一致性、快速性;Docker的局限性:安全隱患、分布式應(yīng)用的容器化、運(yùn)維體系的改變。第7章容器技術(shù)7.2Docker技術(shù)簡(jiǎn)介of31147.2.4分布式Docker網(wǎng)絡(luò)環(huán)境的搭建在云計(jì)算生態(tài)圈里涌現(xiàn)了一些優(yōu)秀的分布式Docker網(wǎng)絡(luò)配置和管理工具,其總體思想是基于物理網(wǎng)絡(luò)在容器間構(gòu)造一個(gè)overlay網(wǎng)絡(luò)??傮w思想是對(duì)原生態(tài)的網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行封裝,這里又可分為在用戶層進(jìn)行封裝(如weave、flannel)和在內(nèi)核層進(jìn)行封裝(如sockplane)。第7章容器技術(shù)第7章容器技術(shù)7.3Rocket(Rkt)技術(shù)簡(jiǎn)介7.1容器技術(shù)簡(jiǎn)介7.2Docker技術(shù)簡(jiǎn)介7.4其他容器技術(shù)簡(jiǎn)介of31157.5容器編排系統(tǒng)簡(jiǎn)介高級(jí)人工智能人才培養(yǎng)叢書習(xí)題7.3Rocket(Rkt)技術(shù)簡(jiǎn)介of31167.3.1Rkt的標(biāo)準(zhǔn)化嘗試2014年12月,CoreOS公司在Github上發(fā)布了一款容器引擎產(chǎn)品原型Rocket(后來(lái)更名為Rkt),成為Docker的直接競(jìng)爭(zhēng)者。CoreOS公司在容器標(biāo)準(zhǔn)建立進(jìn)程中的努力極大促進(jìn)了容器行業(yè)的規(guī)范發(fā)展,2015年OCI聯(lián)盟成立,并于2016年4月推出了第一個(gè)開(kāi)放容器標(biāo)準(zhǔn)。Rkt是AppC規(guī)范的一個(gè)具體實(shí)現(xiàn)。AppC規(guī)范約定的內(nèi)容主要包括四個(gè)方面:容器的鏡像格式鏡像的分發(fā)協(xié)議容器的編排結(jié)構(gòu)容器的執(zhí)行器第7章容器技術(shù)7.3Rocket(Rkt)技術(shù)簡(jiǎn)介of31177.3.2Rkt是什么Rkt是一個(gè)專注于安全和開(kāi)放標(biāo)準(zhǔn)的應(yīng)用程序容器引擎,以其快速、可組合和安全的提供功能而聞名。Rkt主要的特征:應(yīng)用程序容器原生支持Pod安全性可組合性開(kāi)放標(biāo)準(zhǔn)和兼容性與Docker一較高低:關(guān)鍵區(qū)別主要體現(xiàn)在守護(hù)程序、容器圖像安全性、使用方便性、API和可擴(kuò)展性、能力集、社區(qū)支持、安全性。第7章容器技術(shù)7.3Rocket(Rkt)技術(shù)簡(jiǎn)介of31187.3.3Rkt的基本使用方法(1)下載Rkt軟件(2)安裝軟件,綠色安裝,將軟件包解壓至本地后就可以使用(3)檢查版本(4)下載鏡像(5)查詢下載的鏡像(6)運(yùn)行容器(7)查詢?nèi)萜鬟\(yùn)行信息(8)更多功能第7章容器技術(shù)第7章容器技術(shù)7.4其他容器技術(shù)簡(jiǎn)介7.1容器技術(shù)簡(jiǎn)介7.2Docker技術(shù)簡(jiǎn)介7.3Rocket(Rkt)技術(shù)簡(jiǎn)介of31197.5容器編排系統(tǒng)簡(jiǎn)介高級(jí)人工智能人才培養(yǎng)叢書習(xí)題7.4其他容器技術(shù)簡(jiǎn)介of31207.4.1Garden容器技術(shù)2011年,CloudFoundry啟動(dòng)了Warden項(xiàng)目。在CloudFoundry的下一代PaaS項(xiàng)目Diego中,Pivotal團(tuán)隊(duì)對(duì)于Warden進(jìn)行了基于Golang的重構(gòu),并建立了一個(gè)獨(dú)立的項(xiàng)目Garden。Garden的內(nèi)部組件NamespacesResourceControlNetworkingFacilities第7章容器技術(shù)7.4其他容器技術(shù)簡(jiǎn)介of31217.4.2Kata容器技術(shù)Kata容器是一個(gè)OpenStack的開(kāi)源項(xiàng)目,整合了英特爾ClearContainers和HyperRunV容器技術(shù)和相關(guān)資源,能夠支持不同平臺(tái)的硬件Kata最大的亮點(diǎn)是解決了傳統(tǒng)容器共享內(nèi)核的安全和隔離問(wèn)題,辦法是讓每個(gè)容器運(yùn)行在一個(gè)輕量級(jí)的虛擬機(jī)中,使用單獨(dú)的內(nèi)核。Kata的四個(gè)組件:agent、shim、proxy和runtime第7章容器技術(shù)第7章容器技術(shù)7.5容器編排系統(tǒng)簡(jiǎn)介7.1容器技術(shù)簡(jiǎn)介7.2Docker技術(shù)簡(jiǎn)介7.3Rocket(Rkt)技術(shù)簡(jiǎn)介of31227.4其他容器技術(shù)簡(jiǎn)介高級(jí)人工智能人才培養(yǎng)叢書習(xí)題7.5容器編排系統(tǒng)簡(jiǎn)介of3123概念容器編排是指對(duì)單獨(dú)組件和應(yīng)用層的工作進(jìn)行組織的流程。容器編排工具通過(guò)對(duì)容器服務(wù)的編排,決定容器服務(wù)之間如何進(jìn)行交互,允許用戶指導(dǎo)容器部署與自動(dòng)更新、運(yùn)行狀況監(jiān)控以及故障轉(zhuǎn)移等步驟。諸如ApacheMesos、GoogleKubernetes以及DockerSwarm等容器編排平臺(tái)均有其特定的容器管理方法所有的容器編排引擎均可讓用戶控制容器啟動(dòng)和停止的時(shí)間、將其分組合到群集中,以及協(xié)調(diào)應(yīng)用組合的流程。第7章容器技術(shù)7.5容器編排系統(tǒng)簡(jiǎn)介of31247.5.1GoogleKubernetesKubernetes在2015年7月實(shí)現(xiàn)了可付諸生產(chǎn)使用的1.0版本,至今已經(jīng)積累了諸如美國(guó)高盛、eBay、華為等大批龍頭企業(yè)用戶。截至2016年8月,Kubernetes在開(kāi)源社區(qū)github中已經(jīng)獲得了超過(guò)16000個(gè)關(guān)注,成為容器集群管理領(lǐng)域最受歡迎的工具。Kubernetes核心功能:動(dòng)態(tài)任務(wù)調(diào)度模塊、服務(wù)間的自動(dòng)服務(wù)發(fā)現(xiàn)多副本負(fù)載均衡與彈性伸縮自我修復(fù)與故障應(yīng)對(duì)配置管理Kubernetes的架構(gòu)組成:控制層(Master)、集群節(jié)點(diǎn)(Node)、操作單元(Pod)第7章容器技術(shù)7.5容器編排系統(tǒng)簡(jiǎn)介of31257.5.2DockerSwarmDockerSwarm是Docker官方原生容器編排工具,使用標(biāo)準(zhǔn)的DockerAPI,能夠提供Docker容器集群服務(wù),是Docker官方對(duì)容器云生態(tài)進(jìn)行支持的核心方案。Swarm的基本架構(gòu):第7章容器技術(shù)每個(gè)主機(jī)運(yùn)行一個(gè)Swarm代理,一個(gè)主機(jī)運(yùn)行Swarm管理器(在測(cè)試的集群中,這個(gè)主機(jī)也可以運(yùn)行代理),這個(gè)管理器負(fù)責(zé)主機(jī)上容器的編排和調(diào)度。7.5容器編排系統(tǒng)簡(jiǎn)介of31267.5.3ApacheMesosApacheMesos是由加州大學(xué)伯克利分校的AMPLab開(kāi)發(fā)的一款開(kāi)源群集管理軟件,支持各種微服務(wù)應(yīng)用和Hadoop、ElasticSearch、Spark、Kafka在內(nèi)的多種大數(shù)據(jù)分布式應(yīng)用。目前,Mesos已經(jīng)被Twitter作為統(tǒng)一資源調(diào)度層用來(lái)管理數(shù)據(jù)中心。ApacheMesos由四個(gè)組件組成,分別是Mesos-master,mesos-slave,framework和executor。第7章容器技術(shù)7.5容器編排系統(tǒng)簡(jiǎn)介of31277.5.4CoreOSFleetFleet是一個(gè)對(duì)CoreOS集群中進(jìn)行控制和管理的工具,具備可靠的管理CoreOS集群的能力,同時(shí)能夠提供豐富的功能和擴(kuò)展性。每個(gè)機(jī)器運(yùn)行一個(gè)引擎(engine)和一個(gè)代理(agent),任何時(shí)候在集群中只激活一個(gè)引擎,但是所有代理會(huì)一直運(yùn)行。第7章容器技術(shù)7.5容器編排系統(tǒng)簡(jiǎn)介of3128調(diào)度框架總結(jié)比較Swarm的優(yōu)點(diǎn)和缺點(diǎn)都是使用標(biāo)準(zhǔn)的Docker接口,使用簡(jiǎn)單,容易集成到現(xiàn)有系統(tǒng),但是更困難支持更復(fù)雜的調(diào)度;Fleet是低層次且相當(dāng)簡(jiǎn)單的管理指揮層,能作為運(yùn)行高級(jí)別管理工具;Kubernetes是自成體系的管理工具,有自己的服務(wù)發(fā)現(xiàn)和復(fù)制,需要對(duì)現(xiàn)有應(yīng)用的重新設(shè)計(jì),但是能支持失敗冗余和擴(kuò)展系統(tǒng);Mesos是一種底層級(jí)、久經(jīng)沙場(chǎng)已被廣泛應(yīng)用的底層調(diào)度器,對(duì)于容器的編排,它支持多種Frameworks,包括Marathon、Kubernetes和Swarm。第7章容器技術(shù)第7章容器技術(shù)習(xí)題7.2Docker技術(shù)簡(jiǎn)介7.3Rocket(Rkt)技術(shù)簡(jiǎn)介7.4其他容器技術(shù)簡(jiǎn)介of31297.5容器編排系統(tǒng)簡(jiǎn)介高級(jí)人工智能人才培養(yǎng)叢書7.1容器技術(shù)簡(jiǎn)介習(xí)題:1.容器的概念及與虛擬機(jī)的區(qū)別。2.容器化的關(guān)鍵技術(shù)及其優(yōu)勢(shì)是什么?3.簡(jiǎn)述Docker的系統(tǒng)架構(gòu)及基本使用流程。4.Docker有哪些自身局限性?5.Rkt容器與Docker有哪些差別?6.Garden容器是如何實(shí)現(xiàn)資源控制的?7.當(dāng)前比較流行的容器技術(shù)有哪些?各自都具有什么特點(diǎn)?8.簡(jiǎn)述Kubernetes的系統(tǒng)架構(gòu)組成。9.主流容器編排系統(tǒng)有哪些?它們的特點(diǎn)是什么?10.Kubernetes采用了哪些理念來(lái)滿足基于Docker的大規(guī)模、大數(shù)據(jù)計(jì)算的場(chǎng)景?11.如何基于Docker和Kubernetes來(lái)構(gòu)建一個(gè)Hadoop大數(shù)據(jù)系統(tǒng)?12.如何使用DockerSwarm結(jié)合virtualbox實(shí)現(xiàn)集群管理?13.嘗試基于Kubernetes實(shí)現(xiàn)Mesos的安裝部署實(shí)踐。14.Rkt容器實(shí)現(xiàn)了怎樣的容器標(biāo)準(zhǔn)化?第8章云原生技術(shù)8.1云原生簡(jiǎn)介8.2微服務(wù)8.3敏捷基礎(chǔ)設(shè)施8.4
DevOpsof31318.5持續(xù)交付高級(jí)人工智能人才培養(yǎng)叢書8.6云原生應(yīng)用場(chǎng)景習(xí)題8.1云原生簡(jiǎn)介第8章云原生技術(shù)of3132云原生(CloudNative)是由Pivotal公司的MattStine在2013年提出,包括微服務(wù)(MicroServices)、敏捷基礎(chǔ)設(shè)施(AgileInfrastructure)、DevOps、持續(xù)交付(ContinuousDelivery)等內(nèi)容。云原生應(yīng)用的三大特征:容器化包裝:軟件應(yīng)用的進(jìn)程應(yīng)該包裝在容器中獨(dú)立運(yùn)行;動(dòng)態(tài)管理:通過(guò)集中式的編排調(diào)度系統(tǒng)來(lái)動(dòng)態(tài)的管理和調(diào)度;微服務(wù)化:明確服務(wù)間的依賴,互相解耦。第8章云原生技術(shù)8.2微服務(wù)8.1云原生簡(jiǎn)介8.3敏捷基礎(chǔ)設(shè)施8.4
DevOpsof31338.5持續(xù)交付高級(jí)人工智能人才培養(yǎng)叢書8.6云原生應(yīng)用場(chǎng)景習(xí)題8.2微服務(wù)of31341.微服務(wù)概念:微服務(wù)是指將大型復(fù)雜軟件應(yīng)用拆分成多個(gè)簡(jiǎn)單應(yīng)用,每個(gè)簡(jiǎn)單應(yīng)用描述著一個(gè)小業(yè)務(wù),系統(tǒng)中的各個(gè)簡(jiǎn)單應(yīng)用可被獨(dú)立部署。相比傳統(tǒng)的單體架構(gòu),微服務(wù)架構(gòu)具有降低系統(tǒng)復(fù)雜度、獨(dú)立部署、獨(dú)立擴(kuò)展、跨語(yǔ)言編程等特點(diǎn)。微服務(wù)技術(shù)架構(gòu)實(shí)踐:主要有侵入式架構(gòu)和非侵入式架構(gòu)兩種實(shí)現(xiàn)形式。侵入式架構(gòu)是指服務(wù)框架嵌入程序代碼,實(shí)現(xiàn)類的繼承,其中以SpringCloud最為常見(jiàn)。非侵入式架構(gòu)則是以代理的形式,與應(yīng)用程序部署在一起,接管應(yīng)用程序的網(wǎng)絡(luò)且對(duì)其透明,以服務(wù)網(wǎng)格(ServiceMesh)為代表。第8章云原生技術(shù)8.2微服務(wù)of31352.SpringCloud架構(gòu)SpringCloud是基于SpringBoot的一整套實(shí)現(xiàn)微服務(wù)的框架。它利用SpringBoot的開(kāi)發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開(kāi)發(fā),如服務(wù)注冊(cè)發(fā)現(xiàn)、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用SpringBoot的開(kāi)發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。第8章云原生技術(shù)8.2微服務(wù)of3136SpringCloud服務(wù)發(fā)現(xiàn)框架EurekaSpringCloud的服務(wù)發(fā)現(xiàn)框架Eureka是基于REST的服務(wù),主要在AWS云中用于定位服務(wù),以實(shí)現(xiàn)負(fù)載均衡和中間層服務(wù)器的故障轉(zhuǎn)移。第8章云原生技術(shù)8.2微服務(wù)of3137SpringCloud微服務(wù)網(wǎng)關(guān)ZuulZuul是從設(shè)備和Web站點(diǎn)到Netflix流應(yīng)用后端的所有請(qǐng)求的前門。作為邊界服務(wù)應(yīng)用,Zuul是為了實(shí)現(xiàn)動(dòng)態(tài)路由、監(jiān)視、彈性和安全性而構(gòu)建的。它還具有根據(jù)情況將請(qǐng)求路由到多個(gè)亞馬遜自動(dòng)縮放組的能力。服務(wù)提供者是消費(fèi)者通過(guò)EurekaServer進(jìn)行訪問(wèn)的,即EurekaServer是服務(wù)提供者的統(tǒng)一入口。第8章云原生技術(shù)8.2微服務(wù)of3138SpringCloudBus工作原理SpringCloudBus用于將服務(wù)和服務(wù)實(shí)例與分布式消息系統(tǒng)鏈接在一起的事件總線。SpringCloudBus的作用就是管理和廣播分布式系統(tǒng)中的消息,也就是消息引擎系統(tǒng)中的廣播模式。第8章云原生技術(shù)8.2微服務(wù)of31393.ServiceMesh架構(gòu)ServiceMesh又叫服務(wù)網(wǎng)格,它負(fù)責(zé)處理服務(wù)間請(qǐng)求/響應(yīng)的可靠傳遞,并可用于服務(wù)治理、遺留系統(tǒng)的零侵入接入以及異構(gòu)框架開(kāi)發(fā)的微服務(wù)。ServiceMesh作為服務(wù)間通信的基礎(chǔ)設(shè)施層,是應(yīng)用程序間通訊的中間層,實(shí)現(xiàn)了輕量級(jí)網(wǎng)絡(luò)代理,對(duì)應(yīng)用程序透明,解耦了應(yīng)用程序的重試/超時(shí)、監(jiān)控、追蹤和服務(wù)發(fā)現(xiàn)。ServiceMesh的開(kāi)源軟件包括Istio、Linkderd、Envoy、SOFAMesh、DubboMesh等。第8章云原生技術(shù)8.2微服務(wù)of3140Dubbo架構(gòu)Dubbo是阿里巴巴公司開(kāi)源的一個(gè)高性能優(yōu)秀的服務(wù)框架,使得應(yīng)用可通過(guò)高性能的RPC實(shí)現(xiàn)服務(wù)的輸出和輸入功能,可以和Spring框架無(wú)縫集成。它提供了六大核心能力:面向接口代理的高性能RPC調(diào)用、智能容錯(cuò)和負(fù)載均衡、服務(wù)自動(dòng)注冊(cè)和發(fā)現(xiàn)、高度可擴(kuò)展能力、運(yùn)行期流量調(diào)度、可視化的服務(wù)治理與運(yùn)維。第8章云原生技術(shù)第8章云原生技術(shù)8.3敏捷基礎(chǔ)設(shè)施8.1云原生簡(jiǎn)介8.2微服務(wù)8.4
DevOpsof31418.5持續(xù)交付高級(jí)人工智能人才培養(yǎng)叢書8.6云原生應(yīng)用場(chǎng)景習(xí)題8.3敏捷基礎(chǔ)設(shè)施of3142概念敏捷基礎(chǔ)設(shè)施也可稱為基礎(chǔ)設(shè)施即代碼(InfrastructureasCode)或者可編程基礎(chǔ)設(shè)施(ProgrammableInfrastructure),基礎(chǔ)設(shè)施即代碼可以將基礎(chǔ)設(shè)施配置完全當(dāng)作軟件編程來(lái)進(jìn)行。云計(jì)算基礎(chǔ)設(shè)施運(yùn)維發(fā)展的四個(gè)階段:第一階段:純手動(dòng)階段。第二階段:半自動(dòng)腳本階段。第三階段:自動(dòng)化工具階段。第四階段:敏捷基礎(chǔ)設(shè)施。敏捷基礎(chǔ)設(shè)施的目標(biāo):標(biāo)準(zhǔn)化、可替換、自動(dòng)化、可視化、可追溯、快速第8章云原生技術(shù)8.3敏捷基礎(chǔ)設(shè)施of31438.3.1容器化基礎(chǔ)架構(gòu)容器云以容器為資源分割和調(diào)度的基本單位,為開(kāi)發(fā)者和系統(tǒng)管理員提供用于構(gòu)建,發(fā)布和運(yùn)行分布式應(yīng)用的平臺(tái)。容器云專注于資源共享與隔離、容器編排與部署,它更接近與傳統(tǒng)的PaaS。第8章云原生技術(shù)8.3敏捷基礎(chǔ)設(shè)施of31448.3.2分布式消息中間件服務(wù)分布式消息中間件其實(shí)就是指消息中間件本身也是一個(gè)分布式系統(tǒng)。分布式消息中間件有一個(gè)SDK,提供給業(yè)務(wù)系統(tǒng)發(fā)送、消費(fèi)消息的接口,還有一批服務(wù)器節(jié)點(diǎn)用于接受和存儲(chǔ)消息,并在合適的時(shí)候發(fā)送給下游的系統(tǒng)進(jìn)行消費(fèi)。常見(jiàn)的分布式中間件服務(wù)有:Kafka、ActiveMQ、RabbitMQ及RocketMQ等。第8章云原生技術(shù)Kafka是分布式發(fā)布-訂閱消息系統(tǒng),最初由LinkedIn公司開(kāi)發(fā),使用Scala語(yǔ)言編寫,具有主題層、分區(qū)層、消息層等三層消息架構(gòu);客戶端程序只能與分區(qū)的領(lǐng)導(dǎo)者副本進(jìn)行交互。8.3敏捷基礎(chǔ)設(shè)施of31458.3.2分布式消息中間件服務(wù)ActiveMQ是Apache出品,最流行的、能力強(qiáng)勁的開(kāi)源消息總線。ActiveMQ是一個(gè)完全支持JMS1.1和J2EE1.4規(guī)范的JMSProvider實(shí)現(xiàn),支持兩種消息傳送模型:PTP(即點(diǎn)對(duì)點(diǎn)模型)和Pub/Sub(即發(fā)布/訂閱模型。RabbitMQ是一個(gè)開(kāi)源的AMQP實(shí)現(xiàn),服務(wù)器端用Erlang語(yǔ)言編寫。用于在分布式系統(tǒng)中存儲(chǔ)轉(zhuǎn)發(fā)消息,消費(fèi)者訂閱某個(gè)隊(duì)列,生產(chǎn)者創(chuàng)建消息,然后發(fā)布到隊(duì)列中,最后將消息發(fā)送到監(jiān)聽(tīng)的消費(fèi)者。RocketMQ是阿里巴巴開(kāi)源的一款分布式的消息中間件,他源于JMS規(guī)范但是不遵守JMS規(guī)范。
默認(rèn)采用長(zhǎng)輪詢的拉模式,單機(jī)支持千萬(wàn)級(jí)別的消息堆積,可以非常好的應(yīng)用在海量消息系統(tǒng)中。第8章云原生技術(shù)8.3敏捷基礎(chǔ)設(shè)施of31468.3.2分布式消息中間件服務(wù)分布式消息中間件其實(shí)就是指消息中間件本身也是一個(gè)分布式系統(tǒng)。分布式消息中間件有一個(gè)SDK,提供給業(yè)務(wù)系統(tǒng)發(fā)送、消費(fèi)消息的接口,還有一批服務(wù)器節(jié)點(diǎn)用于接受和存儲(chǔ)消息,并在合適的時(shí)候發(fā)送給下游的系統(tǒng)進(jìn)行消費(fèi)。常見(jiàn)的分布式中間件服務(wù)有:Kafka、ActiveMQ、RabbitMQ及RocketMQ等。第8章云原生技術(shù)屬性\服務(wù)
ActiveMQRabbitMQKafkaRocketMQ支持協(xié)議OpenWire/AMQP/MQTT等AMQP/MQTT等KafkaOpenMessage持久化方式文件/數(shù)據(jù)庫(kù)文件文件文件發(fā)布訂閱????????輪詢分發(fā)??????
公平分發(fā)
????
支持失敗重發(fā)????
??消息拉取
??????8.3敏捷基礎(chǔ)設(shè)施of31478.3.3分布式緩存服務(wù)分布式緩存是為了解決數(shù)據(jù)庫(kù)服務(wù)器和Web服務(wù)器之間的瓶頸,實(shí)際開(kāi)發(fā)中經(jīng)常使用的分布式緩存系統(tǒng)主要有Memcached和Redis,這兩者都是KV存儲(chǔ)方案,各有優(yōu)缺,但Redis相比較而言實(shí)用性更加廣泛。第8章云原生技術(shù)Memcached運(yùn)行圖
Redis系統(tǒng)架構(gòu)8.3敏捷基礎(chǔ)設(shè)施of31488.3.4分布式任務(wù)調(diào)度服務(wù)分布式任務(wù)調(diào)度就是在集群中多臺(tái)調(diào)度、多臺(tái)執(zhí)行,一臺(tái)調(diào)度機(jī)器或者執(zhí)行機(jī)器出問(wèn)題,能夠立刻故障轉(zhuǎn)移,不影響后續(xù)任務(wù)的執(zhí)行,提高整體的可用性。常見(jiàn)的分布式任務(wù)調(diào)度框架有:Quartz、Elastic-Job、TBSchedule等。第8章云原生技術(shù)Elastic-Job架構(gòu)Elastic-Job部署8.3敏捷基礎(chǔ)設(shè)施of31498.3.5監(jiān)控告警服務(wù)監(jiān)控是運(yùn)維系統(tǒng)的基礎(chǔ),可衡量一個(gè)公司/部門的運(yùn)維水平。監(jiān)控手段一般可以分為三種:主動(dòng)監(jiān)控、被動(dòng)監(jiān)控、旁路監(jiān)控。Prometheus是一款開(kāi)源的業(yè)務(wù)監(jiān)控和時(shí)序數(shù)據(jù)庫(kù),2012年由SoundCloud創(chuàng)建,目前已經(jīng)已發(fā)展為最熱門的分布式監(jiān)控系統(tǒng),可以看作是Google內(nèi)部監(jiān)控系統(tǒng)Borgmon的一個(gè)非官方實(shí)現(xiàn)。第8章云原生技術(shù)第8章云原生技術(shù)8.4
DevOps8.1云原生簡(jiǎn)介8.2微服務(wù)8.3敏捷基礎(chǔ)設(shè)施of31508.5持續(xù)交付高級(jí)人工智能人才培養(yǎng)叢書8.6云原生應(yīng)用場(chǎng)景習(xí)題8.4DevOpsof31518.4.1概念DevOps是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱,其概念從2009年首次提出發(fā)展到現(xiàn)在,強(qiáng)調(diào)的是高效組織團(tuán)隊(duì)之間如何通過(guò)自動(dòng)化的工具協(xié)作和溝通來(lái)完成軟件的生命周期管理,從而更快、更頻繁地交付更穩(wěn)定的軟件。DevOps旨在統(tǒng)一軟件開(kāi)發(fā)和軟件操作,與業(yè)務(wù)目標(biāo)緊密結(jié)合,在軟件構(gòu)建、集成、測(cè)試、發(fā)布到部署和基礎(chǔ)設(shè)施管理中大力提倡自動(dòng)化和監(jiān)控。DevOps的目標(biāo)是縮短開(kāi)發(fā)周期,增加部署頻率,更可靠的發(fā)布。最流行、功能最強(qiáng)大的DevOps工具有三種:Ansible、Saltstack、Jenkins等。第8章云原生技術(shù)8.4DevOpsof31528.4.2AnsibleAnsible是一個(gè)開(kāi)源配置管理工具,可以使用它來(lái)自動(dòng)化任務(wù),部署應(yīng)用程序?qū)崿F(xiàn)IT基礎(chǔ)架構(gòu)。Ansible可支持語(yǔ)言:Python、PowerShell、Shell和Ruby等,可以幫助你部署應(yīng)用程序,供應(yīng)和配置管理的服務(wù)器。Ansible包括控制節(jié)點(diǎn)、受管節(jié)點(diǎn)、清單和主機(jī)文件等。第8章云原生技術(shù)8.4DevOpsof31538.4.3SaltStackSaltStack是一種基于C/S架構(gòu)的服務(wù)器基礎(chǔ)架構(gòu)集中化管理平臺(tái),管理端稱為Master,客戶端稱為Minion。SaltStack基于Python語(yǔ)言開(kāi)發(fā)實(shí)現(xiàn),結(jié)合了輕量級(jí)的消息隊(duì)列軟件ZeroMQ與Python第三方模塊構(gòu)建,具備配置管理、遠(yuǎn)程執(zhí)行、監(jiān)控等功能。第8章云原生技術(shù)8.4DevOpsof31548.4.4JenkinsJenkins是基于Java開(kāi)發(fā)的一種開(kāi)源持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個(gè)開(kāi)放易用的軟件平臺(tái),使軟件項(xiàng)目可以進(jìn)行持續(xù)集成。Jenkins起源于商用軟件Hudson,用Java語(yǔ)言編寫,主要用于持續(xù)、自動(dòng)的構(gòu)建/測(cè)試軟件項(xiàng)目、監(jiān)控外部任務(wù)的運(yùn)行。第8章云原生技術(shù)第8章云原生技術(shù)8.5持續(xù)交付8.1云原生簡(jiǎn)介8.2微服務(wù)8.3敏捷基礎(chǔ)設(shè)施of31558.4
DevOps高級(jí)人工智能人才培養(yǎng)叢書8.6云原生應(yīng)用場(chǎng)景習(xí)題8.5持續(xù)交付of3156概念持續(xù)交付(ContinuousDelivery,CD)是一種軟件工程的手段,讓軟件在短周期內(nèi)產(chǎn)出,確保軟件隨時(shí)可以被可靠地發(fā)布。其目的在于更快、更頻繁地構(gòu)建、測(cè)試以及發(fā)布軟件。持續(xù)交付分為四步實(shí)現(xiàn):1)自動(dòng)化。2)DevOps。3)云基礎(chǔ)設(shè)施。4)以軟件為中心的哲學(xué)。第8章云原生技術(shù)8.5持續(xù)交付of31578.5.1持續(xù)交付與持續(xù)集成、持續(xù)部署持續(xù)集成CI是一種在開(kāi)發(fā)周期的早期階段進(jìn)行集成的實(shí)踐,以便構(gòu)建、測(cè)試、整合代碼可以更經(jīng)常的進(jìn)行。持續(xù)集成是進(jìn)行持續(xù)交付所需的第一種實(shí)踐。持續(xù)部署則是持續(xù)交付的下一步,代碼通過(guò)評(píng)審,自動(dòng)化部署到生產(chǎn)環(huán)境。其目的是可以隨時(shí)部署,迅速投入生產(chǎn)階段。持續(xù)部署意味著所有的變更都會(huì)被自動(dòng)部署到生產(chǎn)環(huán)境中。持續(xù)交
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年采購(gòu)供應(yīng)協(xié)議
- 職業(yè)學(xué)院雙師素質(zhì)認(rèn)定辦法
- 2024年藝術(shù)品交易標(biāo)準(zhǔn)字畫買賣協(xié)議版
- 2024年視頻監(jiān)控軟件OEM合作開(kāi)發(fā)協(xié)議3篇
- 2024年高品質(zhì)煙草產(chǎn)品采購(gòu)與銷售合同一
- 2024年高端制造行業(yè)技術(shù)轉(zhuǎn)讓合同
- 2024年物流倉(cāng)儲(chǔ)租賃及冷鏈配送合同3篇
- 九年級(jí)下冊(cè)u(píng)nit3Lesson13Be-Careful-Danny教學(xué)設(shè)計(jì)模板
- 廣州市加強(qiáng)知識(shí)產(chǎn)權(quán)運(yùn)用和保護(hù)促進(jìn)創(chuàng)新驅(qū)動(dòng)發(fā)展的實(shí)施方案
- 智慧煤礦與智能化開(kāi)采技術(shù)的發(fā)展方向
- 2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)蘇教版學(xué)考名師卷期末數(shù)學(xué)試卷
- 可愛(ài)的企鵝(教案)-2024-2025學(xué)年一年級(jí)上冊(cè)數(shù)學(xué)北師大版
- 2023年航天器熱控系統(tǒng)行業(yè)分析報(bào)告及未來(lái)五至十年行業(yè)發(fā)展報(bào)告
- 2024年國(guó)家公務(wù)員考試公共法律知識(shí)考試題庫(kù)及答案(共530題)
- 關(guān)于提升高寒缺氧氣候條件下隊(duì)伍綜合救援水平的思考
- 2024年秋一年級(jí)上冊(cè)4日月山川 公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 人教版英語(yǔ)2024年初中中考考綱單詞表(整合版)
- 《安全記心中平安伴我行》課件2024年五一假期安全教育主題班會(huì)
- 2024年四川省成都市錦江區(qū)中考數(shù)學(xué)一診試卷(附答案解析)
- 小學(xué)生中醫(yī)藥文化知識(shí)科普傳承中醫(yī)文化弘揚(yáng)國(guó)粹精神課件
- 形象權(quán)授權(quán)協(xié)議
評(píng)論
0/150
提交評(píng)論