華為云計(jì)算技術(shù)與應(yīng)用 課件 第7、8章 華為云容器服務(wù)與應(yīng)用、華為云數(shù)據(jù)庫(kù)服務(wù)_第1頁(yè)
華為云計(jì)算技術(shù)與應(yīng)用 課件 第7、8章 華為云容器服務(wù)與應(yīng)用、華為云數(shù)據(jù)庫(kù)服務(wù)_第2頁(yè)
華為云計(jì)算技術(shù)與應(yīng)用 課件 第7、8章 華為云容器服務(wù)與應(yīng)用、華為云數(shù)據(jù)庫(kù)服務(wù)_第3頁(yè)
華為云計(jì)算技術(shù)與應(yīng)用 課件 第7、8章 華為云容器服務(wù)與應(yīng)用、華為云數(shù)據(jù)庫(kù)服務(wù)_第4頁(yè)
華為云計(jì)算技術(shù)與應(yīng)用 課件 第7、8章 華為云容器服務(wù)與應(yīng)用、華為云數(shù)據(jù)庫(kù)服務(wù)_第5頁(yè)
已閱讀5頁(yè),還剩86頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第7章

華為云容器服務(wù)與應(yīng)用華為云計(jì)算技術(shù)與應(yīng)用7.1容器技術(shù)原理7.2容器編排7.3華為云容器學(xué)習(xí)要點(diǎn)7.4華為云容器實(shí)踐7.1.1 容器底層技術(shù)基礎(chǔ)容器底層技術(shù)的核心目的是實(shí)現(xiàn)容器在操作系統(tǒng)中的隔離及資源限制。當(dāng)容器在操作系統(tǒng)中運(yùn)行時(shí),它擁有自己獨(dú)立的運(yùn)行環(huán)境與依賴(lài),因此需要將使用的資源隔離起來(lái),以避免操作系統(tǒng)以及其他容器對(duì)其產(chǎn)生影響。容器底層技術(shù)通過(guò)對(duì)操作系統(tǒng)內(nèi)核的全局資源進(jìn)行封裝,讓容器運(yùn)行時(shí)使用自己封裝好的資源,不與其他操作系統(tǒng)應(yīng)用共享。除隔離以外,容器在操作系統(tǒng)上運(yùn)行時(shí),屬于操作系統(tǒng)中的應(yīng)用程序。同時(shí)運(yùn)行在操作系統(tǒng)中的多個(gè)容器存在資源競(jìng)爭(zhēng)關(guān)系,需要通過(guò)某些技術(shù)手段對(duì)容器相應(yīng)進(jìn)程能夠使用的資源進(jìn)行限制,避免搶占資源的問(wèn)題。資源限制用于限定容器在操作系統(tǒng)中所能夠使用的資源上限,防止容器無(wú)限制地占用資源導(dǎo)致系統(tǒng)崩潰。容器通過(guò)使用Cgroup實(shí)現(xiàn)對(duì)資源的限制。容器技術(shù)是一種操作系統(tǒng)級(jí)別的虛擬化技術(shù),通過(guò)虛擬化可以實(shí)現(xiàn)操作系統(tǒng)中進(jìn)程級(jí)別的資源隔離,以Docker為代表的容器技術(shù)已經(jīng)成為云計(jì)算PaaS平臺(tái)的一項(xiàng)關(guān)鍵技術(shù)。7.1.2 容器鏡像容器鏡像是容器運(yùn)行時(shí)使用的模板,其中包含了容器運(yùn)行所需的應(yīng)用程序及運(yùn)行時(shí)所需的條件資源。容器鏡像實(shí)際打包了整個(gè)操作系統(tǒng)的根文件系統(tǒng)文件,包括應(yīng)用程序本身。通過(guò)對(duì)應(yīng)用及其運(yùn)行所需的所有依賴(lài)要素進(jìn)行封裝,形成容器鏡像。這樣可以保證本地環(huán)境和云端環(huán)境在運(yùn)行容器時(shí)的高度一致。容器鏡像的結(jié)構(gòu)主要包括鏡像層(只讀層)和容器層(可讀寫(xiě)層),如圖所示由圖可知,制作容器鏡像時(shí)以增量的方式進(jìn)行,制作好的鏡像內(nèi)部數(shù)據(jù)以鏡像層的形式存在且無(wú)法進(jìn)行修改。在通過(guò)鏡像運(yùn)行容器時(shí),會(huì)在原有鏡像的基礎(chǔ)上添加一個(gè)可讀寫(xiě)的容器層。使用容器查看文件的信息時(shí),會(huì)從容器層開(kāi)始到鏡像層依次向下讀取,直到獲取對(duì)應(yīng)信息。7.1.2 容器鏡像由于鏡像層提供共享功能,多個(gè)容器可以共享同一容器鏡像,而各個(gè)容器獨(dú)立的可寫(xiě)容器層又使得每個(gè)容器具有獨(dú)立的數(shù)據(jù)狀態(tài),左圖所示為容器的共享鏡像層。常用操作功能說(shuō)明創(chuàng)建文件新文件只能被添加在容器層中刪除文件依據(jù)容器分層結(jié)構(gòu)由上往下依次查找。找到后,在容器層中記錄該刪除操作。具體實(shí)現(xiàn)時(shí),UnionFS會(huì)在容器層創(chuàng)建一個(gè)“whiteout”文件,將被刪除的文件“遮擋”起來(lái)修改文件依據(jù)容器分層結(jié)構(gòu)由上往下依次查找。找到后,將鏡像層中的數(shù)據(jù)復(fù)制到容器層進(jìn)行修改,修改后的數(shù)據(jù)保存在容器層中查看文件依據(jù)容器分層結(jié)構(gòu)由上往下依次查找由于鏡像層是只讀屬性的,當(dāng)不同的容器需要進(jìn)行數(shù)據(jù)修改時(shí),無(wú)法直接對(duì)其進(jìn)行修改。對(duì)此,容器支持寫(xiě)時(shí)拷貝特性,下表所示為容器的常用操作和功能說(shuō)明。7.1.3 容器網(wǎng)絡(luò)容器網(wǎng)絡(luò)用來(lái)實(shí)現(xiàn)不同容器之間的數(shù)據(jù)相互通信,通過(guò)安裝不同的插件來(lái)滿(mǎn)足容器間不同的通信需求,容器網(wǎng)絡(luò)通常使用軟件定義的方式對(duì)數(shù)據(jù)流量進(jìn)行控制與轉(zhuǎn)發(fā)。容器網(wǎng)絡(luò)中提供了5種原生的模型,用于實(shí)現(xiàn)容器之間的通信,具體功能說(shuō)明和應(yīng)用場(chǎng)景如表所示。模型功能說(shuō)明應(yīng)用場(chǎng)景無(wú)網(wǎng)絡(luò)模型(None)None網(wǎng)絡(luò)中的容器,不能與外部通信None網(wǎng)絡(luò)通常在安全需求較高且較為封閉的應(yīng)用部署中使用,如管理密鑰信息應(yīng)用、密碼認(rèn)證數(shù)據(jù)庫(kù)等共享宿主機(jī)模型(Host)容器加入宿主機(jī)的NetworkNamespace,容器直接使用宿主機(jī)網(wǎng)絡(luò)Host網(wǎng)絡(luò)下容器與宿主機(jī)共用同一個(gè)IP地址,容器可以直接通過(guò)IP地址對(duì)外通信,性能較好。但是宿主機(jī)已占用端口對(duì)容器而言無(wú)法使用,共享同一個(gè)NetworkNamespace導(dǎo)致網(wǎng)絡(luò)隔離性不好網(wǎng)橋模型(Bridge)默認(rèn)網(wǎng)絡(luò)驅(qū)動(dòng)程序。主要用于多個(gè)容器在同一個(gè)Docker宿主機(jī)上進(jìn)行通信網(wǎng)橋模式可以實(shí)現(xiàn)多容器之間的通信,Docker運(yùn)行時(shí)默認(rèn)出現(xiàn)一個(gè)docker0網(wǎng)橋。容器被創(chuàng)建時(shí),默認(rèn)掛載在docker0上。docker0網(wǎng)橋被創(chuàng)建時(shí)已默認(rèn)配置了子網(wǎng),用戶(hù)也可以根據(jù)自身需求進(jìn)行子網(wǎng)創(chuàng)建物理地址模型(Overlay)Overlay網(wǎng)絡(luò)可基于Linux網(wǎng)橋和VXlan,實(shí)現(xiàn)跨主機(jī)的容器通信在容器集群構(gòu)建中,用于實(shí)現(xiàn)容器跨主機(jī)通信MacVLANMacVLAN能夠用于跨主機(jī)通信跨主機(jī)通信場(chǎng)景7.1.4 容器存儲(chǔ)卷綁定掛載綁定掛載(BindMount)是指將宿主機(jī)上已有的目錄或文件掛載到容器中,主要作用是允許將一個(gè)目錄或文件掛載到一個(gè)指定的目錄上。在對(duì)該掛載點(diǎn)進(jìn)行任何操作時(shí),修改只會(huì)發(fā)生在被掛載的目錄或文件上,而原掛載點(diǎn)上的其他內(nèi)容則會(huì)被隱藏起來(lái)且不受影響。卷(Volume)由Docker管理,將特定目錄掛載給容器。使用卷時(shí),Docker會(huì)在主機(jī)上的Docker存儲(chǔ)目錄Dockerarea(Linux中一般存儲(chǔ)在/var/lib/docker/volumes/目錄下)中創(chuàng)建一個(gè)新目錄,Docker會(huì)管理該目錄的內(nèi)容。對(duì)于擁有了卷的容器,卷的內(nèi)容存在于容器的生命周期之外,刪除容器后,Docker數(shù)據(jù)卷仍然存在。對(duì)容器而言,容器運(yùn)行時(shí)用于讀寫(xiě)的容器層會(huì)隨著容器的消失而消亡,容器層中的數(shù)據(jù)也會(huì)隨之消失。那么,如何將容器運(yùn)行過(guò)程中的數(shù)據(jù)持久地保存下來(lái)呢?Docker容器中持久化數(shù)據(jù)一般采用卷和綁定掛載這兩種存儲(chǔ)方式。7.1.4 容器存儲(chǔ)卷與綁定掛載在使用時(shí)都為宿主機(jī)上的目錄或文件,通過(guò)將其掛載給容器來(lái)實(shí)現(xiàn)容器數(shù)據(jù)的持久化存儲(chǔ)。這時(shí)卷與綁定掛載的目錄都擁有獨(dú)立的生命周期,不會(huì)因容器的消亡導(dǎo)致數(shù)據(jù)被刪除。它們之間的不同點(diǎn)在于,卷生成的目錄是由Docker進(jìn)行管理的,而綁定掛載的目錄為宿主機(jī)上存在的路徑,兩者對(duì)比如下圖所示。同時(shí),在容器中,通過(guò)不同的持久化存儲(chǔ)方式存儲(chǔ)的數(shù)據(jù)可以通過(guò)以下3種方式實(shí)現(xiàn)數(shù)據(jù)的共享。綁定掛載:將宿主機(jī)上的目錄或文件掛載到容器中,通過(guò)掛載點(diǎn)將容器中的數(shù)據(jù)存儲(chǔ)到宿主機(jī)路徑中。卷:將宿主機(jī)上的數(shù)據(jù)復(fù)制到容器的卷中,可以使用dockercp命令在容器與主機(jī)之間復(fù)制數(shù)據(jù),或者使用cp命令將需要共享的數(shù)據(jù)復(fù)制到該卷的目錄下。容器卷:先通過(guò)卷或綁定掛載將數(shù)據(jù)掛載到一個(gè)容器中,其他容器再引用這個(gè)卷容器中的數(shù)據(jù),從而實(shí)現(xiàn)容器之間的數(shù)據(jù)共享。7.1容器技術(shù)原理7.2容器編排7.3華為云容器學(xué)習(xí)要點(diǎn)7.4華為云容器實(shí)踐7.2.1 Kubernetes容器編排工具概覽

Kubernetes(簡(jiǎn)稱(chēng)K8S)是Google開(kāi)源的容器集群管理系統(tǒng),它構(gòu)建在Docker技術(shù)之上,為容器化的應(yīng)用提供資源調(diào)度、部署運(yùn)行、服務(wù)發(fā)現(xiàn)、擴(kuò)容縮容等一整套功能,其本質(zhì)上是基于容器技術(shù)的Micro-PaaS平臺(tái)。容器編排指的是對(duì)容器的一系列定義、創(chuàng)建和配置等動(dòng)作的管理。從技術(shù)的角度來(lái)看,容器的大規(guī)模應(yīng)用需要由容器編排引擎進(jìn)行統(tǒng)一管理調(diào)度;從商業(yè)的角度來(lái)看,用戶(hù)的業(yè)務(wù)或應(yīng)用最終需要部署在平臺(tái)上,用戶(hù)愿意付費(fèi)的是具有平臺(tái)層能力的工具。Kubernetes示意Google、RedHat等牽頭成立云原生計(jì)算基金會(huì),CNCF隸屬于Linux基金會(huì),主要致力于云原生技術(shù)的普及和可持續(xù)發(fā)展。Docker公司宣布,將在主打產(chǎn)品Docker企業(yè)版中內(nèi)置Kubernetes系統(tǒng),從此Kubernetes成為容器技術(shù)事實(shí)上的行業(yè)標(biāo)準(zhǔn)。2015年7月2017年10月7.2.2 Kubernetes技術(shù)架構(gòu)

在一個(gè)基礎(chǔ)的Kubernetes集群中,需要包含一個(gè)Master節(jié)點(diǎn)和多個(gè)Node節(jié)點(diǎn)。集群中的每個(gè)節(jié)點(diǎn)可以部署在一臺(tái)獨(dú)立的物理機(jī)上,也可以部署在一臺(tái)虛擬機(jī)上。右圖所示為Kubernetes的部署架構(gòu)。Kubernetes的部署架構(gòu)Kubernetes部署架構(gòu)Master節(jié)點(diǎn)Node節(jié)點(diǎn)Node節(jié)點(diǎn)是容器實(shí)際運(yùn)行的場(chǎng)所,用戶(hù)的容器都會(huì)在Node節(jié)點(diǎn)上運(yùn)行。Node節(jié)點(diǎn)通過(guò)接收Master節(jié)點(diǎn)下發(fā)的調(diào)度指令對(duì)容器進(jìn)行控制,但是由于Kubernetes無(wú)法直接對(duì)容器進(jìn)行操作管理,所以Kubernetes會(huì)將容器包裝進(jìn)Pod(Kubernetes中的基礎(chǔ)單位)內(nèi)進(jìn)行管控。因此,Pod是Kubernetes最小的管理單元。Master節(jié)點(diǎn)提供集群控制功能,對(duì)容器集群做出全局性決策,如系統(tǒng)資源調(diào)度等。Master節(jié)點(diǎn)上通常不運(yùn)行用戶(hù)容器。在高可用場(chǎng)景部署場(chǎng)景下,可以有多個(gè)Master節(jié)點(diǎn)。7.2.2 Kubernetes技術(shù)架構(gòu)

Kubernetes組件架構(gòu)下圖所示為Kubernetes的組件架構(gòu),在Master節(jié)點(diǎn)及Node節(jié)點(diǎn)上分別運(yùn)行著不同的組件,通過(guò)組件的配合實(shí)現(xiàn)Kubernetes集群管理的功能。7.2.2 Kubernetes技術(shù)架構(gòu)

kube-apiserveretcdkube-controller-managerkube-scheduler1234etcd用于Kubernetes的后端存儲(chǔ)。所有集群數(shù)據(jù)都存儲(chǔ)在此處,Kubernetes管理人員始終為Kubernetes集群的etcd數(shù)據(jù)提供備份計(jì)劃。kube-controller-manager為運(yùn)行控制器,是處理集群中常規(guī)任務(wù)的后臺(tái)進(jìn)程。從邏輯上來(lái)講,每個(gè)控制器是一個(gè)單獨(dú)的進(jìn)程,但為了降低復(fù)雜性,它們都被編譯成獨(dú)立的可執(zhí)行文件,并在單個(gè)進(jìn)程中運(yùn)行。kube-scheduler用于監(jiān)視沒(méi)有分配節(jié)點(diǎn)的新創(chuàng)建的Pod,幫助其選擇一個(gè)供其運(yùn)行的合適的節(jié)點(diǎn)。Master節(jié)點(diǎn)的組件主要具備以下功能01OPTIONkube-apiserver用于對(duì)外暴露KubernetesAPI,它是Kubernetes的前端控制層。它被設(shè)計(jì)為水平擴(kuò)展的,即通過(guò)部署更多實(shí)例來(lái)實(shí)現(xiàn)縮放。7.2.2 Kubernetes技術(shù)架構(gòu)

kube-proxy用于管理Service的訪問(wèn),包括集群內(nèi)Pod到Service的訪問(wèn)和集群外訪問(wèn)Service。kube-proxykubelet容器引擎kubelet是在集群內(nèi)每個(gè)節(jié)點(diǎn)中運(yùn)行的一個(gè)代理,用于保證Pod的運(yùn)行。容器引擎用于創(chuàng)建容器,Kubernetes只有容器編排的能力而不具備創(chuàng)建容器的能力,因此需要Docker來(lái)創(chuàng)建容器。當(dāng)然,除了使用Docker,還可以使用其他容器引擎,如RKT、Kata等。Node節(jié)點(diǎn)的組件主要具備以下功能02OPTION7.2.2 Kubernetes技術(shù)架構(gòu)

add-ons安裝拓展組件主要具備以下功能03OPTION(4)Flannel為Kubernetes提供方便的網(wǎng)絡(luò)服務(wù)。(1)Core-dns為整個(gè)集群提供DNS服務(wù)。(3)Heapster提供集群資源監(jiān)控。(2)Dashboard提供圖形化管理界面。7.2.3 Kubernetes的工作負(fù)載Pod是Kubernetes編排的最小單位,一個(gè)Pod中封裝了一個(gè)或多個(gè)緊耦合的應(yīng)用容器,在同一個(gè)Pod內(nèi)的容器共享數(shù)據(jù)存儲(chǔ)和IP地址,其內(nèi)部架構(gòu)如圖所示。從生命周期來(lái)說(shuō),Pod是短暫的而不是長(zhǎng)久的應(yīng)用。若Pod被調(diào)度到節(jié)點(diǎn),則它會(huì)保持在這個(gè)節(jié)點(diǎn)上直到被銷(xiāo)毀。Pod內(nèi)部架構(gòu)Pod針對(duì)多個(gè)容器在一個(gè)Pod的場(chǎng)景,為了能夠更好地管理Pod的運(yùn)行狀態(tài),Pod會(huì)被分配一個(gè)名為Pause容器的底層基礎(chǔ)容器。Pause容器也被稱(chēng)為根容器,它的狀態(tài)代表整個(gè)Pod的狀態(tài),在Pod中的應(yīng)用容器出現(xiàn)問(wèn)題不會(huì)直接影響Pod的狀態(tài)。Pod中多個(gè)應(yīng)用容器共享Pause容器的網(wǎng)絡(luò),容器間可以通過(guò)本地主機(jī)互訪。7.2.3 Kubernetes的工作負(fù)載Deployment不建議直接使用ReplicaSet,而是用更上層的Deployment來(lái)調(diào)用ReplicaSet,Deployment是目前常用的控制器,可以管理一個(gè)或多個(gè)ReplicaSet,并通過(guò)ReplicaSet來(lái)管理Pod。所以從邏輯管理關(guān)系上可以看出容器Pod<ReplicaSet<Deployment。Deployment是Kubernetes中常見(jiàn)的對(duì)象概念,Deployment在Kubernetes中用于部署無(wú)狀態(tài)應(yīng)用(指不需要對(duì)接持久化存儲(chǔ),應(yīng)用的多個(gè)實(shí)例之間完全沒(méi)有區(qū)別),每個(gè)請(qǐng)求在不同的實(shí)例返回的結(jié)果都是一樣的,Kubernetes對(duì)它們的處理也是隨機(jī)的。隨著Kubernetes的不斷更新,ReplicaSet逐漸成為新一代的RC,其主要功能和RC一樣,如維持Pod的數(shù)量穩(wěn)定、指定Pod的運(yùn)行位置等,使用方法也相似,主要的區(qū)別是ReplicaSet更新了API以支持更多功能,上圖所示為不同ReplicaSet控制器關(guān)系示意。7.2.3 Kubernetes的工作負(fù)載StatefulSet也是一種控制器,與Deployment不同的是,StatefulSet在Kubernetes中用于部署有狀態(tài)應(yīng)用。這些應(yīng)用需要在不同的節(jié)點(diǎn)之間保持?jǐn)?shù)據(jù)同步,在節(jié)點(diǎn)發(fā)生故障時(shí)需要能夠快速恢復(fù)使用。有狀態(tài)應(yīng)用除數(shù)據(jù)之外,每個(gè)實(shí)例都是獨(dú)立的,會(huì)區(qū)分主從實(shí)例,在進(jìn)行重啟操作時(shí),每個(gè)實(shí)例的重啟是有順序的。DaemonSet能夠讓加入集群的Node節(jié)點(diǎn)運(yùn)行同一個(gè)Pod。有新的節(jié)點(diǎn)加入Kubernetes集群中時(shí),Pod會(huì)被DaemonSet控制器自動(dòng)調(diào)度到該節(jié)點(diǎn)上運(yùn)行,當(dāng)節(jié)點(diǎn)從Kubernetes集群中被移除時(shí),被DaemonSet調(diào)度的Pod會(huì)被移除,如果刪除DaemonSet,則所有跟它相關(guān)的Pod都會(huì)被刪除。DaemonSet通常用來(lái)部署守護(hù)進(jìn)程類(lèi)型的應(yīng)用Pod。StatefulSetDaemonSet7.2.3 Kubernetes的工作負(fù)載標(biāo)簽(Label)是附在Kubernetes對(duì)象上的鍵值對(duì),如Pod、Deployment等,標(biāo)簽可以在創(chuàng)建時(shí)指定,也可以在創(chuàng)建后指定。標(biāo)簽的值本身不具備具體含義,但可以通過(guò)標(biāo)簽來(lái)篩選對(duì)象特定的子集,便于管理。對(duì)每個(gè)對(duì)象而言,可以同時(shí)存在多個(gè)標(biāo)簽。標(biāo)簽與標(biāo)簽選擇器有了標(biāo)簽,對(duì)Pod等對(duì)象的管理變得更加靈活,而如何對(duì)指定批量的同標(biāo)簽對(duì)象進(jìn)行操作則需要通過(guò)標(biāo)簽選擇器(LabelSelector)完成。標(biāo)簽選擇器是Kubernetes的核心分組方式。對(duì)Kubernetes而言,目前支持兩種標(biāo)簽選擇器,分別是基于等值的(Equality-Based)和基于集合的(Set-Based)。左圖所示為標(biāo)簽和標(biāo)簽選擇器的關(guān)系。7.2.3 Kubernetes的工作負(fù)載ServiceService是Kubernetes中核心的資源對(duì)象之一,Service定義了服務(wù)的訪問(wèn)入口地址,前端的應(yīng)用Pod通過(guò)這個(gè)入口地址訪問(wèn)其后端的一組Pod副本集群。Service與其后端Pod副本集群之間則是通過(guò)標(biāo)簽選擇器來(lái)實(shí)現(xiàn)選擇管理的。Service有以下3種實(shí)現(xiàn)類(lèi)型。NodePort在Node節(jié)點(diǎn)上打開(kāi)一個(gè)端口以供外部訪問(wèn)。LoadBalancer通過(guò)外部的負(fù)載均衡器來(lái)訪問(wèn)。ClusterIP提供一個(gè)集群內(nèi)部的虛擬IP地址以供Pod訪問(wèn),這是Service的默認(rèn)模式。0102037.2.3 Kubernetes的工作負(fù)載Job與CronJob當(dāng)在Kubernetes中需要批量處理短暫的一次性任務(wù),僅執(zhí)行一次,并保證處理的一個(gè)或多個(gè)Pod成功執(zhí)行并退出時(shí),Deployment控制器在此場(chǎng)景下并不適用,這時(shí)可以使用Job,Job主要用于完成一次性任務(wù)工作場(chǎng)景。非并行Job通常只運(yùn)行一個(gè)Pod,Pod成功執(zhí)行并退出,Job結(jié)束。固定完成次數(shù)的并行Job并發(fā)運(yùn)行指定數(shù)量的Pod,直到指定數(shù)量的Pod成功執(zhí)行并退出,Job結(jié)束。帶有工作隊(duì)列的并行Job用戶(hù)可以指定并行的Pod數(shù)量,當(dāng)任何Pod成功執(zhí)行并退出后,不會(huì)再創(chuàng)建新的Pod;一旦有一個(gè)Pod成功執(zhí)行并退出,并且所有的Pod都執(zhí)行并退出,該Job就成功結(jié)束;一旦有一個(gè)Pod成功執(zhí)行并退出,其他Pod都會(huì)準(zhǔn)備退出。Job模型7.2.3 Kubernetes的工作負(fù)載ConfigMap與SecretConfigMapSecret對(duì)Secret而言,其功能與ConfigMap類(lèi)似,區(qū)別在于Secret主要用于處理敏感信息,如密碼、Token、證書(shū)等,提供了一種安全和可擴(kuò)展的機(jī)制。ConfigMap用于存儲(chǔ)在Kubernetes中部署的應(yīng)用配置數(shù)據(jù),作用是為容器應(yīng)用定義配置文件和參數(shù),和容器的存儲(chǔ)類(lèi)似,ConfigMap它聚焦于以下幾個(gè)方面。為已經(jīng)部署的應(yīng)用提供動(dòng)態(tài)的、分布式的配置管理。封裝配置管理信息,簡(jiǎn)化Kubernetes的部署管理。為Kubernetes創(chuàng)建一個(gè)靈活的配置管理模型。7.2.4 其他容器編排工具M(jìn)esos是Mesosphere公司的集群管理項(xiàng)目,具有兩層調(diào)度機(jī)制,可管理上萬(wàn)節(jié)點(diǎn),具有超大規(guī)模集群管理能力。Mesos原本是大數(shù)據(jù)資源管理項(xiàng)目,也能支持PaaS業(yè)務(wù)。Swarm使用Docker原生的容器管理API進(jìn)行集群管理,可與Docker項(xiàng)目無(wú)縫集成。Swarm通過(guò)一個(gè)入口統(tǒng)一管理Docker主機(jī)上的各種容器資源,相較于其他的容器編排工具,Swarm的架構(gòu)更加輕便,功能比較少。Swarm也因此比較適合在小型的容器集群規(guī)模中部署使用。SwarmMesosMesos具有以下特點(diǎn):①支持上萬(wàn)節(jié)點(diǎn)接入的大規(guī)模集群場(chǎng)景。②支持多種應(yīng)用框架。③支持部署高可用。通過(guò)冗余、狀態(tài)同步、故障恢復(fù)等機(jī)制,Mesos能夠在面臨故障及異常情況時(shí),保持穩(wěn)定運(yùn)行。④支持Docker等主流容器。⑤提供了多個(gè)流行語(yǔ)言的API,包括Python、Java等。⑥擁有自帶的Web圖形化界面,方便操作管理。7.1容器技術(shù)原理7.2容器編排7.3華為云容器學(xué)習(xí)要點(diǎn)7.4華為云容器實(shí)踐7.3.1 華為云容器實(shí)例云容器實(shí)例服務(wù)提供無(wú)服務(wù)器容器引擎,能夠幫助云上用戶(hù)在不創(chuàng)建和管理服務(wù)器集群的情況下直接運(yùn)行容器。無(wú)服務(wù)器是一種架構(gòu)理念,是指不用創(chuàng)建和管理服務(wù)器、不用擔(dān)心服務(wù)器的運(yùn)行狀態(tài),只需動(dòng)態(tài)申請(qǐng)應(yīng)用需要的資源,把服務(wù)器留給專(zhuān)門(mén)的人員管理和維護(hù),進(jìn)而專(zhuān)注于應(yīng)用開(kāi)發(fā),提升應(yīng)用開(kāi)發(fā)效率、節(jié)約企業(yè)IT成本。云容器實(shí)例可以支持多個(gè)異構(gòu)的Kubernetes集群,通過(guò)華為云底層提供的豐富的網(wǎng)絡(luò)、存儲(chǔ)資源提高其使用性能,云容器實(shí)例架構(gòu)如上圖所示。華為云容器實(shí)例定義云容器實(shí)例(CCI)服務(wù)提供無(wú)服務(wù)器容器引擎,能夠幫助云上用戶(hù)在不創(chuàng)建和管理服務(wù)器集群的情況下直接運(yùn)行容器。7.3.1 華為云容器實(shí)例DevOps流程一般用于任務(wù)計(jì)算型場(chǎng)景,如企業(yè)持續(xù)集成/持續(xù)交付(CI/CD)流程自動(dòng)化,需要快速申請(qǐng)資源,申請(qǐng)完成后快速釋放。對(duì)企業(yè)而言,構(gòu)建從代碼提交到應(yīng)用部署的DevOps完整流程可以提升企業(yè)應(yīng)用的版本迭代效率。容器良好的可移植性與隔離性能夠很好地支持這類(lèi)場(chǎng)景。通過(guò)容器鏡像打通測(cè)試、預(yù)發(fā)、生產(chǎn)環(huán)境應(yīng)用部署與運(yùn)行,加快業(yè)務(wù)交付進(jìn)程。右圖所示為DevOps持續(xù)交付場(chǎng)景。華為云容器實(shí)例使用場(chǎng)景7.3.2 華為云容器實(shí)例云容器引擎(CloudContainerEngine,CCE)是基于開(kāi)源Kubernetes的云服務(wù)產(chǎn)品,提供高度可擴(kuò)展的、高性能的企業(yè)級(jí)Kubernetes集群,支持運(yùn)行Docker容器的環(huán)境。借助云容器引擎,開(kāi)發(fā)者可以在華為云上輕松部署、管理和擴(kuò)展容器化應(yīng)用。華為是全球首批Kubernetes認(rèn)證服務(wù)提供商(KubernetesCertifiedServiceProvider,KCSP),是國(guó)內(nèi)最早加入Kubernetes社區(qū)的廠商,是容器開(kāi)源社區(qū)主要貢獻(xiàn)者和容器生態(tài)領(lǐng)導(dǎo)者。華為CCE是全球首批通過(guò)CNCF的Kubernetes一致性認(rèn)證的容器服務(wù)。華為云容器引擎介紹7.3.2 華為云容器實(shí)例產(chǎn)品架構(gòu)華為CCE在原生Kubernetes集群的架構(gòu)基礎(chǔ)上進(jìn)行了自身商業(yè)化的增強(qiáng),使得華為CCE面向企業(yè)客戶(hù)業(yè)務(wù)關(guān)聯(lián)性更強(qiáng),更符合企業(yè)使用要求,華為CCE產(chǎn)品架構(gòu)如圖所示。7.3.2 華為云容器實(shí)例華為CCE與Kubernetes對(duì)比對(duì)比類(lèi)華為CCE用戶(hù)自建Kubernetes易用性通過(guò)網(wǎng)頁(yè)一鍵創(chuàng)建Kubernetes集群自行準(zhǔn)備服務(wù)器資源,安裝配置必要的軟件并進(jìn)行配置,工作量大、時(shí)間長(zhǎng)通過(guò)向?qū)浇缑婧湍0鍎?chuàng)建應(yīng)用,界面管理容器應(yīng)用生命周期。也支持API和命令行操作采用API、命令行、腳本的方式創(chuàng)建應(yīng)用。不直觀,上手門(mén)檻高基于Web展示監(jiān)控信息、詳細(xì)的日志和事件。提供后臺(tái)告警功能。通過(guò)用戶(hù)界面設(shè)置彈性伸縮策略自行登錄服務(wù)器使用命令查看監(jiān)控、日志信息,無(wú)法及時(shí)察知系統(tǒng)異常。通過(guò)腳本設(shè)置自動(dòng)彈性伸縮策略性能應(yīng)用創(chuàng)建速度、容器調(diào)度性能、網(wǎng)絡(luò)性能都經(jīng)過(guò)優(yōu)化自行創(chuàng)建大規(guī)模容器應(yīng)用性能不穩(wěn)定,網(wǎng)絡(luò)配置容易出錯(cuò),性能劣化明顯可靠性多個(gè)AZ部署應(yīng)用,應(yīng)用跨AZ或者通過(guò)ELB實(shí)現(xiàn)應(yīng)用高可用。管理節(jié)點(diǎn)高可用需要自行實(shí)現(xiàn)高可用架構(gòu)可靠性99.99%,Docker升級(jí)和Kubernetes升級(jí)不中斷業(yè)務(wù)無(wú)可靠性指標(biāo)保證,升級(jí)中斷業(yè)務(wù)支持鏡像簽名,保證鏡像安全需要自行實(shí)現(xiàn)7.3.3 華為云容器鏡像華為云容器鏡像產(chǎn)品介紹容器鏡像服務(wù)(SoftwareRepositoryforContainer,SWR)是一種支持容器鏡像全生命周期管理的服務(wù),為容器鏡像提供簡(jiǎn)單易用、安全可靠管理功能,幫助用戶(hù)快速部署容器化服務(wù)。用戶(hù)可以通過(guò)界面、DockerCLI和原生API上傳、下載和管理容器鏡像。通過(guò)SWR與CCI、CCE配合使用,可以為CCI與CCE服務(wù)提供創(chuàng)建應(yīng)用的容器鏡像。華為云容器鏡像功能介紹容器鏡像服務(wù)的主要作用是對(duì)容器鏡像進(jìn)行全生命周期管理,相比私有鏡像倉(cāng)庫(kù)而言,利用容器鏡像服務(wù)存儲(chǔ)鏡像更安全、更可靠。存儲(chǔ)的容器鏡像可以為華為云CCI以及CCE服務(wù)提供鏡像支持,華為云容器鏡像服務(wù)的應(yīng)用場(chǎng)景如圖所示。7.3.3 華為云容器鏡像華為云容器鏡像功能介紹支持鏡像全生命周期管理提供私有鏡像倉(cāng)庫(kù)支持鏡像源加速支持大規(guī)模鏡像分發(fā)點(diǎn)對(duì)點(diǎn)加速支持鏡像安全掃描支持自動(dòng)化部署支持鏡像觸發(fā)器7.1容器技術(shù)原理7.2容器編排7.3華為云容器學(xué)習(xí)要點(diǎn)7.4華為云容器實(shí)踐7.4.1 容器鏡像構(gòu)建

dockercommit命令01OPTION容器鏡像的構(gòu)建通常采用兩種方法實(shí)現(xiàn),其中dockercommit命令可以通過(guò)dockercommit命令將一個(gè)運(yùn)行中的容器保存為鏡像。具體的使用方式為利用鏡像創(chuàng)建并運(yùn)行容器,在容器中進(jìn)行需要的修改,修改完成以后通過(guò)dockercommit命令構(gòu)建新的鏡像。通過(guò)dockercommit命令對(duì)一個(gè)運(yùn)行的nginx容器構(gòu)建一個(gè)新容器鏡像,添加作者信息test,鏡像取名為nginx:v1.0,通過(guò)命令查看新創(chuàng)建的容器鏡像信息,主要命令如下。[root@localhost~]#dockerrun--namenginx1-d-p80:80nginx[root@localhost~]#dockercommit\>--auther"test"\>nginx1\>nginx:v1.0[root@localhost~]#dockerimages7.4.1 容器鏡像構(gòu)建

Dockerfile02OPTIONDockerfile是一種文件指令集,用于描述如何自動(dòng)創(chuàng)建Docker鏡像。其中包含若干鏡像構(gòu)建指令,通過(guò)這些指令可以創(chuàng)建dokcerimage。每條指令執(zhí)行后,會(huì)創(chuàng)建一個(gè)新的鏡像層。下表所示為Dockerfile常用的指令、作用和命令格式。指令作用命令格式FROM指定base鏡像FROM<image>:<tag>MAINTAINER注明鏡像的作者M(jìn)AINTAINER<name>RUN運(yùn)行指定的命令RUN<command>ADD將文件、目錄或遠(yuǎn)程URLs從<src>添加到鏡像文件系統(tǒng)中的<dest>ADD[--chown=<user>:<group>]<src>...<dest>COPY將文件或目錄從<src>添加到鏡像文件系統(tǒng)中的<dest>COPY[--chown=<user>:<group>]<src>...<dest>ENV設(shè)置環(huán)境變量ENV<key><value>EXPOSE指定容器中的應(yīng)用監(jiān)聽(tīng)的端口EXPOSE<port>[<port>/<protocol>...]USER設(shè)置啟動(dòng)容器的用戶(hù)USER<user>[:<group>]CMD設(shè)置在容器啟動(dòng)時(shí)運(yùn)行指定的腳本或命令CMDcommandparam1param2ENTRYPOINT指定可執(zhí)行的腳本或程序的路徑ENTRYPOINTcommandparam1param2VOLUME將文件或目錄聲明為卷,掛載到容器中VOLUME["/data"]WORKDIR設(shè)置鏡像的當(dāng)前工作目錄WORKDIR/path/to/workdir7.4.2 基于云容器實(shí)例的應(yīng)用案例

通過(guò)Dockerfile構(gòu)建容器鏡像01OPTION彈性云服務(wù)器和公網(wǎng)IP的規(guī)格不需要太高,例如,規(guī)格為“1vCPUs|2GB”、公網(wǎng)IP帶寬為“1Mbit/s”,操作系統(tǒng)選擇“CentOS7.6”。單擊“遠(yuǎn)程登錄”按鈕登錄購(gòu)買(mǎi)的彈性云服務(wù)器,執(zhí)行如下命令快速安裝最新穩(wěn)定版本的容器引擎。[root@localhost~]#curl-fsSL-oget-docker.sh[root@localhost~]#shget-docker.sh[root@localhost~]#sudosystemctldaemon-reload[root@localhost~]#sudosystemctlrestartdocker(1)購(gòu)買(mǎi)彈性云服務(wù)器,安裝Linux操作系統(tǒng)后安裝容器引擎。7.4.2 基于云容器實(shí)例的應(yīng)用案例

[root@localhost~]#dockerpullnginx[root@localhost~]#gitclone/jorgensen/2048.git[root@localhost~]#viDockerfileFROMnginxMAINTAINERAllen.Li@COPY./usr/share/nginx/htmlEXPOSE80CMD["nginx","-g","daemonoff;"][root@localhost~]#dockerbuild-t='2048'.[root@localhost~]#dockerimages執(zhí)行如下命令通過(guò)Dockerfile方式構(gòu)建容器鏡像。(2)若提示bash:git:commandnotfound,可執(zhí)行sudoyuminstallgit命令安裝git。成功構(gòu)建鏡像如圖所示。7.4.2 基于云容器實(shí)例的應(yīng)用案例

上傳容器鏡像至SWR02OPTION選擇“總覽”選項(xiàng),單擊“創(chuàng)建組織”按鈕,創(chuàng)建名為“img”的組織。選擇“我的資源>鏡像”選項(xiàng),單擊“客戶(hù)端上傳”按鈕,在彈出的界面中單擊“生成臨時(shí)登錄指令”按鈕,單擊按鈕復(fù)制登錄指令(1)(2)(3)登錄華為云控制臺(tái),打開(kāi)服務(wù)列表,選擇“容器>容器鏡像服務(wù)SWR”選項(xiàng)。創(chuàng)建組織登錄指令7.4.2 基于云容器實(shí)例的應(yīng)用案例

[root@localhost~]#dockerlogin-ucn-east-2@42756RZSXK3KAJS1LX5L-p6c50ad3a80758058b4def37f9cd7f7c80c548b15c3429c66c1b7776daba26f59在操作系統(tǒng)中輸入登錄指令。(4)dockertag[鏡像名稱(chēng):版本名稱(chēng)][鏡像倉(cāng)庫(kù)地址]/[組織名稱(chēng)]/[鏡像名稱(chēng):版本名稱(chēng)]對(duì)需要上傳的鏡像通過(guò)tag命令打上標(biāo)簽,標(biāo)簽格式如下。(5)[root@localhost~]#dockertag2048:latest/img/2048:latest在本例中,修改信息如下。標(biāo)簽信息[root@localhost~]#dockerpush/img/2048:latest上傳容器鏡像,具體命令如下。(6)7.4.2 基于云容器實(shí)例的應(yīng)用案例

創(chuàng)建命名空間03OPTION選擇“命名空間”選項(xiàng),在右側(cè)界面中“通用計(jì)算型”命名空間下單擊“創(chuàng)建”按鈕。填寫(xiě)命名空間名稱(chēng)、設(shè)置VPC、設(shè)置子網(wǎng)網(wǎng)段,完成命名空間創(chuàng)建。(1)(2)(3)登錄華為云控制臺(tái),打開(kāi)服務(wù)列表,選擇“容器服務(wù)>云容器實(shí)例CCI”選項(xiàng),進(jìn)入云容器實(shí)例控制臺(tái)。創(chuàng)建命名空間7.4.2 基于云容器實(shí)例的應(yīng)用案例

創(chuàng)建工作負(fù)載04OPTION配置如下信息:設(shè)置負(fù)載名稱(chēng)為自定義,命名空間為步驟(3)創(chuàng)建的命名空間,Pod數(shù)量為1,Pod規(guī)格保持默認(rèn),容器配置為上傳的容器鏡像。配置“公網(wǎng)訪問(wèn)”負(fù)載訪問(wèn)信息,配置服務(wù)名稱(chēng)為“deployment-2048”,選擇ELB實(shí)例為“elb-b544”,選擇ELB協(xié)議為“HTTP/HTTPS”。配置Ingress名稱(chēng)為“ingress-2048”,ELB端口為“HTTP”“8080”(1)(2)(3)在云容器實(shí)例控制臺(tái)選擇“工作負(fù)載>無(wú)狀態(tài)(Deployment)”選項(xiàng),在右側(cè)界面單擊“鏡像創(chuàng)建”按鈕。創(chuàng)建負(fù)載訪問(wèn)7.4.2 基于云容器實(shí)例的應(yīng)用案例

完成工作負(fù)載創(chuàng)建。單擊“下一步”按鈕,然后單擊“提交”按鈕,單擊“返回?zé)o狀態(tài)負(fù)載列表”按鈕。在負(fù)載列表中,待負(fù)載狀態(tài)為“運(yùn)行中”,負(fù)載創(chuàng)建成功(4)(5)設(shè)置負(fù)載訪問(wèn)端口為“80”(也可以選擇其他端口),容器端口為“80”(容器端口必須為80,因?yàn)?048鏡像配置的端口為80)。HTTP路由映射路徑為“/”并關(guān)聯(lián)到負(fù)載訪問(wèn)端口,這樣就可以通過(guò)“ELBIP地址:端口”訪問(wèn)nginx負(fù)載負(fù)載創(chuàng)建成功配置負(fù)載訪問(wèn)端口7.4.2 基于云容器實(shí)例的應(yīng)用案例

訪問(wèn)工作負(fù)載05OPTION單擊負(fù)載名稱(chēng),進(jìn)入負(fù)載詳情界面,如圖所示。選擇“訪問(wèn)配置>公網(wǎng)訪問(wèn)”選項(xiàng),復(fù)制公網(wǎng)訪問(wèn)地址后,打開(kāi)瀏覽器并在地址欄粘貼復(fù)制的公網(wǎng)訪問(wèn)地址,在瀏覽器中訪問(wèn)公網(wǎng)地址。清理資源06OPTION在左側(cè)導(dǎo)航欄中選擇“工作負(fù)載>無(wú)狀態(tài)(Deployment)”選項(xiàng),在無(wú)狀態(tài)負(fù)載列表中單擊2048右側(cè)的“刪除”按鈕,刪除工作負(fù)載。學(xué)習(xí)進(jìn)步!華為云計(jì)算技術(shù)與應(yīng)用第8章

華為云數(shù)據(jù)庫(kù)服務(wù)組編華為技術(shù)有限公司華為云計(jì)算技術(shù)與應(yīng)用8.1傳統(tǒng)數(shù)據(jù)庫(kù)8.2云數(shù)據(jù)庫(kù)服務(wù)8.3華為云數(shù)據(jù)庫(kù)服務(wù)學(xué)習(xí)要點(diǎn)8.4華為云數(shù)據(jù)庫(kù)實(shí)踐8.1.1 數(shù)據(jù)庫(kù)技術(shù)概念如圖所示,數(shù)據(jù)庫(kù)技術(shù)包含5個(gè)相關(guān)概念,即數(shù)據(jù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng),以及數(shù)據(jù)庫(kù)應(yīng)用,下面將分別對(duì)其進(jìn)行介紹。數(shù)據(jù)庫(kù)技術(shù)是應(yīng)數(shù)據(jù)管理任務(wù)的需要而產(chǎn)生的。數(shù)據(jù)庫(kù)技術(shù)是進(jìn)行數(shù)據(jù)庫(kù)管理的有效技術(shù),它主要研究如何對(duì)數(shù)據(jù)進(jìn)行科學(xué)、高效的管理,從而為人們提供可共享的、安全的、可靠的數(shù)據(jù)。8.1.2 數(shù)據(jù)如圖所示,“88”這個(gè)數(shù)據(jù)既可以是一個(gè)部門(mén)的人數(shù),也可以是某人一門(mén)課的考試成績(jī),沒(méi)有語(yǔ)義的存在,數(shù)據(jù)的含義就會(huì)變得混亂,無(wú)法具體體現(xiàn)一個(gè)數(shù)據(jù)。數(shù)據(jù)(Data)是數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象,是用于描述事物的符號(hào)記錄。描述事物的符號(hào)可以是數(shù)字,也可以是文字、圖形、圖像、音頻、視頻等,數(shù)據(jù)有多種表現(xiàn)形式,但它們都可以在經(jīng)過(guò)數(shù)字化后存入計(jì)算機(jī)?,F(xiàn)代計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)概念是廣義的,僅有數(shù)據(jù)的值并不能完全表達(dá)數(shù)據(jù)的具體內(nèi)容,因此需要一個(gè)新的描述性數(shù)據(jù)來(lái)對(duì)數(shù)據(jù)進(jìn)行描述。數(shù)據(jù)的描述性數(shù)據(jù),稱(chēng)為語(yǔ)義,也就是數(shù)據(jù)的含義,數(shù)據(jù)與其語(yǔ)義是不可分割的。8.1.2 數(shù)據(jù)記錄示例在日常生活中,人們可以直接用自然語(yǔ)言(如漢語(yǔ))來(lái)描述事物。記錄是計(jì)算機(jī)中表示和存儲(chǔ)數(shù)據(jù)的一種格式或方法。這里的學(xué)生記錄就是描述學(xué)生的數(shù)據(jù),通過(guò)這樣一條記錄就具體描述了一個(gè)實(shí)際的學(xué)生。這樣的數(shù)據(jù)是有結(jié)構(gòu)的。日常描述(李明,男,2000-06,江蘇省南京市,計(jì)算機(jī)系,2020),即把學(xué)生的姓名、性別、出生年月、出生地、所在院系、入學(xué)時(shí)間等組織在一起,構(gòu)成一條記錄。某校計(jì)算機(jī)系一位同學(xué)的基本情況:2020級(jí)計(jì)算機(jī)系的李明同學(xué),性別為男,2000年6月出生于江蘇省南京市。計(jì)算機(jī)中的描述8.1.3 數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)(Database),顧名思義是存放數(shù)據(jù)的倉(cāng)庫(kù)。嚴(yán)格地講,數(shù)據(jù)庫(kù)是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)的有組織的、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)中儲(chǔ)存的數(shù)據(jù)具有以下3個(gè)基本特點(diǎn)。可共享數(shù)據(jù)庫(kù)中的數(shù)據(jù)是可為各種用戶(hù)或程序共享使用的,而不是為某個(gè)用戶(hù)或程序?qū)S械摹8鱾€(gè)用戶(hù)或程序可以通過(guò)統(tǒng)一的數(shù)據(jù)接口訪問(wèn)數(shù)據(jù)庫(kù),并依據(jù)特定的協(xié)議規(guī)范獲取數(shù)據(jù)。長(zhǎng)期存儲(chǔ)數(shù)據(jù)庫(kù)提供數(shù)據(jù)長(zhǎng)期存儲(chǔ)的可靠機(jī)制,數(shù)據(jù)一旦被存儲(chǔ)在數(shù)據(jù)庫(kù)中,就不會(huì)因?yàn)闀r(shí)間導(dǎo)致丟失,同時(shí)在系統(tǒng)發(fā)生故障后能夠進(jìn)行數(shù)據(jù)恢復(fù),從而保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)完整。有組織數(shù)據(jù)庫(kù)中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲(chǔ),具有較小的冗余度(Redundancy)、較高的數(shù)據(jù)獨(dú)立性(DataIndependence)和易擴(kuò)展性(Scalability)。0203018.1.4 數(shù)據(jù)庫(kù)管理系統(tǒng)

數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)是一個(gè)能夠科學(xué)地組織和存儲(chǔ)數(shù)據(jù)、高效地獲取和維護(hù)數(shù)據(jù)的系統(tǒng)軟件,是位于用戶(hù)與操作系統(tǒng)之間的數(shù)據(jù)管理軟件,其主要功能如下。數(shù)據(jù)定義功能數(shù)據(jù)組織、存儲(chǔ)和管理功能數(shù)據(jù)操縱功能數(shù)據(jù)庫(kù)的事務(wù)管理和運(yùn)行管理功能數(shù)據(jù)庫(kù)的建立和維護(hù)功能12345提供數(shù)據(jù)定義語(yǔ)言,用戶(hù)通過(guò)該語(yǔ)言可以方便地對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象的組成與結(jié)構(gòu)進(jìn)行定義,方便用戶(hù)對(duì)數(shù)據(jù)進(jìn)行管理。數(shù)據(jù)組織是指需要確定通過(guò)何種文件結(jié)構(gòu)和存取方式來(lái)組織這些數(shù)據(jù);數(shù)據(jù)存儲(chǔ)是指針對(duì)不同的數(shù)據(jù)應(yīng)該存儲(chǔ)哪些內(nèi)容;數(shù)據(jù)管理功能是指為數(shù)據(jù)提供多種存取方法。數(shù)據(jù)庫(kù)管理系統(tǒng)提供數(shù)據(jù)操縱語(yǔ)言(DML),用戶(hù)可以使用該語(yǔ)言來(lái)操縱數(shù)據(jù),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的基本操作,如查詢(xún)、插入、刪除和修改等。數(shù)據(jù)庫(kù)在建立、運(yùn)行和維護(hù)時(shí)由數(shù)據(jù)庫(kù)管理系統(tǒng)統(tǒng)一管理和控制,以保證事務(wù)的正確運(yùn)行,保證數(shù)據(jù)的安全性、完整性等。主要包括數(shù)據(jù)庫(kù)初始數(shù)據(jù)的輸入和轉(zhuǎn)換功能,數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)、恢復(fù)功能,數(shù)據(jù)庫(kù)的重組織功能和性能監(jiān)視、分析功能等。其他功能6包括數(shù)據(jù)庫(kù)管理系統(tǒng)與網(wǎng)絡(luò)中其他軟件系統(tǒng)的通信功能,一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)與另一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)或文件系統(tǒng)的數(shù)據(jù)轉(zhuǎn)換功能等。8.1.5 數(shù)據(jù)庫(kù)系統(tǒng)

如圖所示為數(shù)據(jù)庫(kù)系統(tǒng)架構(gòu),其中的應(yīng)用程序、數(shù)據(jù)庫(kù)管理系統(tǒng)、數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理員為數(shù)據(jù)庫(kù)系統(tǒng)的主要模塊。操作系統(tǒng)不屬于數(shù)據(jù)庫(kù)系統(tǒng),它只是提供了一個(gè)數(shù)據(jù)操作協(xié)議的統(tǒng)一接口。數(shù)據(jù)庫(kù)管理系統(tǒng)是一類(lèi)系統(tǒng)軟件,它和操作系統(tǒng)一樣,是計(jì)算機(jī)系統(tǒng)的基礎(chǔ)軟件。數(shù)據(jù)庫(kù)系統(tǒng)是由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(及應(yīng)用開(kāi)發(fā)工具)、應(yīng)用程序和數(shù)據(jù)庫(kù)管理員(DataBaseAdministrator,DBA)等組成的存儲(chǔ)、管理、處理和維護(hù)數(shù)據(jù)的系統(tǒng)。在不引起混淆的情況下,通常把數(shù)據(jù)庫(kù)系統(tǒng)簡(jiǎn)稱(chēng)為數(shù)據(jù)庫(kù)。8.1.6 數(shù)據(jù)庫(kù)應(yīng)用

數(shù)據(jù)庫(kù)作為一種管理數(shù)據(jù)的技術(shù),主要用于承載數(shù)據(jù)、管理數(shù)據(jù),并基于上層邏輯提供增刪改查的數(shù)據(jù)接口,衍生出了如MySQL、Oracle、SQLServer等傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品;同時(shí),在數(shù)據(jù)類(lèi)型多樣性、業(yè)務(wù)復(fù)雜性的大背景下,還衍生出了如Redis、HBase等非關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品。這些數(shù)據(jù)庫(kù)產(chǎn)品各有特點(diǎn),并在各自的領(lǐng)域中大放光彩。除數(shù)據(jù)庫(kù)技術(shù)本身衍生的數(shù)據(jù)庫(kù)上層應(yīng)用以外,還有一類(lèi)常見(jiàn)的應(yīng)用是數(shù)據(jù)庫(kù)工具應(yīng)用,包括數(shù)據(jù)庫(kù)管理工具和數(shù)據(jù)庫(kù)遷移工具。數(shù)據(jù)庫(kù)管理工具雖然數(shù)據(jù)庫(kù)本身也提供命令端用于管理數(shù)據(jù),但這種方式對(duì)用戶(hù)而言操作難度大、便捷性差,因此,各個(gè)數(shù)據(jù)庫(kù)廠商都會(huì)研發(fā)對(duì)應(yīng)的數(shù)據(jù)庫(kù)管理工具,如MySQL的Workbench等。數(shù)據(jù)庫(kù)遷移工具同構(gòu)數(shù)據(jù)庫(kù)(如MySQL與MySQL)之間的數(shù)據(jù)是可以直接遷移使用的,只需進(jìn)行適配即可,無(wú)須耗費(fèi)過(guò)多的時(shí)間。但異構(gòu)數(shù)據(jù)庫(kù)(如MySQL與Oracle)之間因語(yǔ)法、數(shù)據(jù)存儲(chǔ)定義等的差異,無(wú)法直接進(jìn)行數(shù)據(jù)調(diào)用,需要基于底層的SQL協(xié)議進(jìn)行數(shù)據(jù)互通。8.1傳統(tǒng)數(shù)據(jù)庫(kù)8.2云數(shù)據(jù)庫(kù)服務(wù)8.3華為云數(shù)據(jù)庫(kù)服務(wù)學(xué)習(xí)要點(diǎn)8.4華為云數(shù)據(jù)庫(kù)實(shí)踐8.2.1 云數(shù)據(jù)庫(kù)服務(wù)概念及特征數(shù)據(jù)庫(kù)也是數(shù)據(jù)庫(kù),在語(yǔ)法使用上與傳統(tǒng)數(shù)據(jù)庫(kù)沒(méi)有差異,只不過(guò)在部署方式、形態(tài)和運(yùn)維方面與傳統(tǒng)數(shù)據(jù)庫(kù)不同,在操作層面上帶來(lái)了全新的體驗(yàn),使用起來(lái)更加便捷和高效。云數(shù)據(jù)庫(kù)服務(wù)是構(gòu)建在云服務(wù)模型之上的數(shù)據(jù)庫(kù)解決方案,即數(shù)據(jù)庫(kù)即服務(wù)(DataBaseasaService,DBaaS)。從歸屬角度上來(lái)看,DBaaS運(yùn)行在IaaS之上,屬于PaaS的子類(lèi)。云數(shù)據(jù)庫(kù)天然具備云的靈活性(即開(kāi)即用、彈性伸縮),能夠提供強(qiáng)大的創(chuàng)新能力(便捷測(cè)試、驗(yàn)證和實(shí)施新的業(yè)務(wù)創(chuàng)建)、豐富多樣的產(chǎn)品體系(提供多種衍生的云數(shù)據(jù)庫(kù)應(yīng)用)、經(jīng)濟(jì)高效的部署方式(業(yè)務(wù)初期可以少量訂購(gòu),隨后自主擴(kuò)容)和按需付費(fèi)(按小時(shí)計(jì)費(fèi))的支付模式。云數(shù)據(jù)庫(kù)服務(wù)涵蓋關(guān)系數(shù)據(jù)庫(kù)服務(wù)、非關(guān)系數(shù)據(jù)庫(kù)服務(wù)和數(shù)據(jù)庫(kù)工具服務(wù)等,企業(yè)可根據(jù)實(shí)際數(shù)據(jù)業(yè)務(wù)進(jìn)行選擇8.2.1 云數(shù)據(jù)庫(kù)服務(wù)概念及特征對(duì)企業(yè)而言,云數(shù)據(jù)庫(kù)需要具有如下特征。彈性伸縮數(shù)據(jù)庫(kù)的存儲(chǔ)、CPU、I/O等數(shù)據(jù)庫(kù)資源需要能夠依據(jù)企業(yè)自身業(yè)務(wù)進(jìn)行彈性伸縮,業(yè)務(wù)增長(zhǎng)時(shí)應(yīng)用系統(tǒng)自動(dòng)擴(kuò)容,業(yè)務(wù)下降時(shí)應(yīng)用系統(tǒng)自動(dòng)縮容。計(jì)算存儲(chǔ)分離具有多種存儲(chǔ)方式自動(dòng)化運(yùn)維管理數(shù)據(jù)安全及可靠數(shù)據(jù)庫(kù)采用計(jì)算與存儲(chǔ)分離架構(gòu),在高可用、備份恢復(fù)和升級(jí)擴(kuò)展等方面,都會(huì)帶來(lái)全新性能體驗(yàn)。例如,計(jì)算和存儲(chǔ)可以獨(dú)立彈性伸縮,擴(kuò)縮容無(wú)須進(jìn)行數(shù)據(jù)遷移。數(shù)據(jù)庫(kù)系統(tǒng)通常是IT系統(tǒng)極為重要的系統(tǒng),對(duì)存儲(chǔ)I/O性能要求高。例如,在華為云關(guān)系數(shù)據(jù)庫(kù)中,存儲(chǔ)類(lèi)型可以分為超高I/O和SSD盤(pán),企業(yè)可根據(jù)實(shí)際業(yè)務(wù)選擇所需的存儲(chǔ)類(lèi)型。提供一套完整的自動(dòng)化運(yùn)維管理平臺(tái),提供零停機(jī)維護(hù)、版本滾動(dòng)升級(jí)、故障自動(dòng)監(jiān)控、日志分析及問(wèn)題修復(fù)能力,大大降低運(yùn)維成本,提高開(kāi)發(fā)效率。數(shù)據(jù)庫(kù)上云后,數(shù)據(jù)都存儲(chǔ)在云服務(wù)廠商的后臺(tái),云服務(wù)廠商能夠提供“7×24h”的數(shù)據(jù)庫(kù)業(yè)務(wù)可靠性保證,并能保證數(shù)據(jù)不泄露,操作權(quán)限高度集中。8.2.2 云數(shù)據(jù)庫(kù)服務(wù)技術(shù)存儲(chǔ)與SQL計(jì)算分離為了應(yīng)對(duì)日益增長(zhǎng)的性能要求,傳統(tǒng)的數(shù)據(jù)庫(kù)做了集群化的處理,雖然在某種程度上提高了數(shù)據(jù)庫(kù)的性能,但歸根結(jié)底數(shù)據(jù)庫(kù)中的各個(gè)節(jié)點(diǎn)的資源(CPU、內(nèi)存、磁盤(pán)等)都是獨(dú)立存在的。在典型的大規(guī)模并行處理(MassivelyParallelProcessing,MPP)架構(gòu)中,數(shù)據(jù)庫(kù)中的數(shù)據(jù)在導(dǎo)入或插入時(shí),經(jīng)過(guò)一定的分區(qū)邏輯(Hash、Replication、Random、Range等)后分布到各個(gè)數(shù)據(jù)節(jié)點(diǎn)中,使得數(shù)據(jù)庫(kù)在進(jìn)行數(shù)據(jù)查詢(xún)時(shí),能夠充分利用每一個(gè)數(shù)據(jù)節(jié)點(diǎn)。數(shù)據(jù)查詢(xún)?nèi)蝿?wù)在每個(gè)節(jié)點(diǎn)上都是獨(dú)立存在的,各自處理各自的數(shù)據(jù),相互之間不會(huì)發(fā)生資源爭(zhēng)搶的現(xiàn)象,具有很好的并行處理能力。典型MPP架構(gòu)如圖所示。8.2.2 云數(shù)據(jù)庫(kù)服務(wù)技術(shù)這種存儲(chǔ)與計(jì)算高度耦合的架構(gòu)一定程度上解決了數(shù)據(jù)庫(kù)的性能問(wèn)題,但同時(shí)也帶來(lái)了新的問(wèn)題。因此,在云場(chǎng)景下,將存儲(chǔ)與SQL計(jì)算進(jìn)行解耦成為時(shí)下云數(shù)據(jù)庫(kù)服務(wù)必要的技術(shù)手段。通過(guò)存儲(chǔ)與計(jì)算分離,用戶(hù)能夠有針對(duì)性地獨(dú)立規(guī)劃存儲(chǔ)、計(jì)算規(guī)格,并受益于云原生特性,能夠比較快地完成擴(kuò)容、縮容操作,靈活適應(yīng)某些峰值業(yè)務(wù)場(chǎng)景,同時(shí)也能夠極大地降低成本。這種存儲(chǔ)與計(jì)算分離的架構(gòu)是指將SQL解析、轉(zhuǎn)換、執(zhí)行計(jì)劃生成、計(jì)算等模塊與底層存儲(chǔ)的硬件進(jìn)行解耦。在這一架構(gòu)中,通過(guò)將存儲(chǔ)引擎與SQL計(jì)算引擎分離,可以做到二者之間松耦合、互相獨(dú)立地處理任務(wù)。典型的存儲(chǔ)與計(jì)算分離架構(gòu)如圖所示,通常包含3個(gè)部分:存儲(chǔ)層、網(wǎng)絡(luò)傳輸層、計(jì)算層8.2.2 云數(shù)據(jù)庫(kù)服務(wù)技術(shù)對(duì)于傳統(tǒng)的數(shù)據(jù)庫(kù)而言,一般在部署之后,對(duì)應(yīng)的數(shù)據(jù)庫(kù)版本是確定的,如果安裝了MySQL,就是基于MySQL實(shí)現(xiàn)的數(shù)據(jù)庫(kù)應(yīng)用;安裝了Oracle就需要基于Oracle來(lái)實(shí)現(xiàn)上層邏輯。對(duì)公司而言,使用的數(shù)據(jù)庫(kù)過(guò)多勢(shì)必會(huì)產(chǎn)生額外的數(shù)據(jù)一致性維護(hù)成本。在數(shù)據(jù)庫(kù)上云以后為了實(shí)現(xiàn)不同類(lèi)型數(shù)據(jù)的融合與統(tǒng)一管理,需要具備多模(Multi-Model)數(shù)據(jù)庫(kù)管理與存儲(chǔ)的能力。多模數(shù)據(jù)管理需要支持的數(shù)據(jù)存儲(chǔ)類(lèi)型所謂的多模,指的是一個(gè)數(shù)據(jù)庫(kù)支持多種數(shù)據(jù)庫(kù)存儲(chǔ)引擎,可以滿(mǎn)足上層應(yīng)用對(duì)于結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)的統(tǒng)一管理需求,從而降低企業(yè)使用和運(yùn)維的成本多模數(shù)據(jù)管理8.2.3 云數(shù)據(jù)庫(kù)服務(wù)安全云數(shù)據(jù)庫(kù)服務(wù)安全主要包括兩個(gè)方面,一是從云數(shù)據(jù)庫(kù)自身角度出發(fā),二是從云服務(wù)角度出發(fā)。這里以華為云關(guān)系數(shù)據(jù)庫(kù)服務(wù)為例進(jìn)行介紹,下圖所示為華為云關(guān)系數(shù)據(jù)庫(kù)的安全框架。8.2.3 云數(shù)據(jù)庫(kù)服務(wù)安全云數(shù)據(jù)庫(kù)具備傳統(tǒng)數(shù)據(jù)庫(kù)自身所帶的全部安全措施,包括數(shù)據(jù)庫(kù)用戶(hù)權(quán)限管理、SSL訪問(wèn)認(rèn)證、賬戶(hù)密碼策略等。此外,它還有一些新的安全防護(hù)措施:從云數(shù)據(jù)庫(kù)自身角度出發(fā)ACB訪問(wèn)控制權(quán)限細(xì)分策略DAS安全審計(jì)數(shù)據(jù)庫(kù)上云以后,連接數(shù)據(jù)庫(kù)的方式從原來(lái)的本地或局域網(wǎng)內(nèi)的IP連接轉(zhuǎn)變?yōu)橐怨W(wǎng)IP的方式進(jìn)行連接。此外,用戶(hù)還可以通過(guò)云服務(wù)廠商進(jìn)行內(nèi)網(wǎng)連接,或者通過(guò)數(shù)據(jù)庫(kù)管理服務(wù)(華為云上為DAS)進(jìn)行數(shù)據(jù)庫(kù)連接。上云以后,除數(shù)據(jù)庫(kù)本身以外,還會(huì)涉及數(shù)據(jù)庫(kù)實(shí)例(承載數(shù)據(jù)庫(kù)服務(wù)的對(duì)象)。需要為云用戶(hù)設(shè)定針對(duì)數(shù)據(jù)庫(kù)實(shí)例的操作權(quán)限,這些權(quán)限包括但不限于創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例、刪除數(shù)據(jù)庫(kù)實(shí)例、查詢(xún)數(shù)據(jù)庫(kù)實(shí)例等。通過(guò)權(quán)限細(xì)分策略的擴(kuò)充,可以避免因數(shù)據(jù)庫(kù)上云后,對(duì)云用戶(hù)權(quán)限管理的缺漏。華為云DAS可提供全量SQL洞察(審計(jì))功能,不僅支持全量SQL記錄的查詢(xún)能力,還提供了對(duì)訪問(wèn)最頻繁、更新最頻繁的表和鎖等待時(shí)間最長(zhǎng)的SQL等內(nèi)容的多維度分析、搜索、過(guò)濾服務(wù),幫助用戶(hù)全面對(duì)SQL進(jìn)行洞察和審計(jì),快速找出異常,保障云數(shù)據(jù)庫(kù)穩(wěn)定運(yùn)行。8.2.3 云數(shù)據(jù)庫(kù)服務(wù)安全華為云上有許多衍生的華為云服務(wù)用于輔助云數(shù)據(jù)庫(kù)服務(wù)安全,包括:從云服務(wù)角度出發(fā)數(shù)據(jù)庫(kù)安全服務(wù)01OPTION數(shù)據(jù)庫(kù)安全服務(wù)(DatabaseSecurityService,DBSS)是一種智能的數(shù)據(jù)庫(kù)安全服務(wù),基于機(jī)器學(xué)習(xí)機(jī)制和大數(shù)據(jù)分析技術(shù),提供數(shù)據(jù)庫(kù)安全審計(jì)、SQL注入攻擊檢測(cè)、風(fēng)險(xiǎn)操作識(shí)別等功能,保障云上數(shù)據(jù)庫(kù)的安全。數(shù)據(jù)庫(kù)安全審計(jì)是指通過(guò)在旁路模式下安裝數(shù)據(jù)庫(kù)客戶(hù)端,讓用戶(hù)通過(guò)該客戶(hù)端進(jìn)行數(shù)據(jù)庫(kù)操作,這個(gè)客戶(hù)端可以對(duì)數(shù)據(jù)庫(kù)的操作進(jìn)行風(fēng)險(xiǎn)行為實(shí)時(shí)告警,并對(duì)攻擊行為進(jìn)行阻斷;同時(shí)還可以生成數(shù)據(jù)庫(kù)安全標(biāo)準(zhǔn)的合規(guī)報(bào)告數(shù)據(jù)庫(kù)安全審計(jì)架構(gòu)8.2.3 云數(shù)據(jù)庫(kù)服務(wù)安全云審計(jì)服務(wù)02OPTION云審計(jì)服務(wù)(CloudTraceService,CTS)是華為云安全解決方案中專(zhuān)業(yè)的日志審計(jì)服務(wù),提供對(duì)各種云資源操作記錄的收集、存儲(chǔ)和查詢(xún)功能,可用于支撐安全分析、合規(guī)審計(jì)、資源跟蹤和問(wèn)題定位等常見(jiàn)應(yīng)用場(chǎng)景。CTS介紹企業(yè)數(shù)據(jù)上云以后,為了有效地管理企業(yè)數(shù)據(jù)資源,一般通過(guò)華為云賬戶(hù)進(jìn)行統(tǒng)一的操作,而CTS就是針對(duì)華為云賬戶(hù)而設(shè)立的審計(jì)服務(wù)。它可以有效地監(jiān)聽(tīng)用戶(hù)的各種針對(duì)資源的操作,識(shí)別高風(fēng)險(xiǎn)操作并記錄,從而進(jìn)行資源跟蹤和合規(guī)審計(jì)等工作。8.2.3 云數(shù)據(jù)庫(kù)服務(wù)安全VPC網(wǎng)絡(luò)安全03OPTION數(shù)據(jù)庫(kù)上云后,如何避免數(shù)據(jù)庫(kù)因網(wǎng)絡(luò)攻擊導(dǎo)致數(shù)據(jù)丟失造成數(shù)據(jù)安全隱患,是企業(yè)必須要考慮的問(wèn)題。華為云服務(wù)提供了隔離的虛擬私有網(wǎng)絡(luò)環(huán)境(VPC),用戶(hù)的資源和應(yīng)用與云中的其他用戶(hù)是完全隔離的,安全性更高。VPC網(wǎng)絡(luò)環(huán)境8.2.3 云數(shù)據(jù)庫(kù)服務(wù)安全統(tǒng)一身份認(rèn)證服務(wù)04OPTION數(shù)據(jù)庫(kù)上云后,操作數(shù)據(jù)庫(kù)的方式從直接的命令端訪問(wèn)變?yōu)橥ㄟ^(guò)云賬號(hào)進(jìn)行的上云操作。由于云賬號(hào)是一種主要的操作數(shù)據(jù)庫(kù)的方式,因此用戶(hù)需要對(duì)其進(jìn)行權(quán)限管控。統(tǒng)一身份認(rèn)證服務(wù)(IdentityandAccessManagement,IAM)提供了適合企業(yè)級(jí)組織結(jié)構(gòu)的用戶(hù)賬號(hào)管理服務(wù),可為企業(yè)用戶(hù)分配不同的資源及操作權(quán)限。用戶(hù)通過(guò)使用訪問(wèn)密鑰獲得基于IAM的認(rèn)證和鑒權(quán)后,以調(diào)用API的方式訪問(wèn)云資源。IAM按層次和細(xì)粒度授權(quán),保證同一企業(yè)租戶(hù)的不同用戶(hù)在使用云資源上得到有效管控,避免單個(gè)用戶(hù)因?yàn)檎`操作等導(dǎo)致整個(gè)云服務(wù)的不可用,確保租戶(hù)業(yè)務(wù)的持續(xù)性。IAM賬號(hào)精細(xì)化訪問(wèn)控制8.1傳統(tǒng)數(shù)據(jù)庫(kù)8.2云數(shù)據(jù)庫(kù)服務(wù)8.3華為云數(shù)據(jù)庫(kù)服務(wù)學(xué)習(xí)要點(diǎn)8.4華為云數(shù)據(jù)庫(kù)實(shí)踐8.3 華為云數(shù)據(jù)庫(kù)服務(wù)該架構(gòu)一方面能夠盡量減少跨核內(nèi)存訪問(wèn)的時(shí)延問(wèn)題,另一方面能夠充分發(fā)揮華為芯片的多核算力優(yōu)勢(shì),所提供的關(guān)鍵技術(shù)包括重做日志批插、熱點(diǎn)數(shù)據(jù)NUMA分布、CLog分區(qū)等,可以大幅提升系統(tǒng)的處理性能。基于華為芯片所使用的ARMv8.1架構(gòu),利用LSE擴(kuò)展指令集來(lái)實(shí)現(xiàn)高效的原子操作,可以有效提升CPU利用率,從而提升多線程間同步性能、XLog持久化記錄數(shù)據(jù)庫(kù)中的變更信息寫(xiě)入性能等。華為芯片支持NUMA架構(gòu),能夠很好地解決同時(shí)多線程(SMT)技術(shù)對(duì)CPU核數(shù)的制約。華為芯片的NUMA架構(gòu)華為芯片非統(tǒng)一內(nèi)存訪問(wèn)架構(gòu)優(yōu)化GaussDB(foropenGauss)基于華為處理器的多核非統(tǒng)一內(nèi)存訪問(wèn)(NUMA)架構(gòu),進(jìn)行一系列針對(duì)NUMA架構(gòu)的相關(guān)優(yōu)化。8.3 華為云數(shù)據(jù)庫(kù)服務(wù)SMP并行執(zhí)行技術(shù)華為云數(shù)據(jù)庫(kù)服務(wù)GaussDB(foropenGauss)基于SMP并行執(zhí)行技術(shù)實(shí)現(xiàn)算子級(jí)的并行,能夠有效減少查詢(xún)的執(zhí)行時(shí)間,提升查詢(xún)性能及資源利用率。SMP并行執(zhí)行技術(shù)的整體實(shí)現(xiàn)思想是對(duì)于能夠并行的查詢(xún)算子,將數(shù)據(jù)分片并啟動(dòng)若干個(gè)工作線程分別計(jì)算,最后將結(jié)果匯總并返回前端。SMP并行執(zhí)行可以增加數(shù)據(jù)交互算子(Stream),實(shí)現(xiàn)多個(gè)工作線程之間的數(shù)據(jù)交互,以確保查詢(xún)的正確性,完成整體的查詢(xún)。SMP并行執(zhí)行是在線程級(jí)別上完成的,理論上可以使并行執(zhí)行的子任務(wù)數(shù)達(dá)到物理服務(wù)器核數(shù)的上限。SMP并行線程是在同一個(gè)進(jìn)程內(nèi)的,可以直接通過(guò)內(nèi)存進(jìn)行數(shù)據(jù)交換,不需要占用網(wǎng)絡(luò)連接與帶寬,降低了限制MPP系統(tǒng)性能提升的網(wǎng)絡(luò)因素的影響。由于并行子任務(wù)啟動(dòng)后不需要附帶其他后臺(tái)工作線程,可以提高系統(tǒng)計(jì)算資源的有效利用率。8.3 華為云數(shù)據(jù)庫(kù)服務(wù)SwitchTurbo技術(shù)GaussDB(foropenGauss)提供了多種高可用方案,包括同城AZ內(nèi)高可用、跨AZ高可用、異地跨區(qū)域的“兩地三中心”容災(zāi)方案,滿(mǎn)足金融級(jí)監(jiān)管要求。GaussDB(foropenGauss)通過(guò)獨(dú)有的SwitchTurbo技術(shù),保障了同城AZ內(nèi)出現(xiàn)單點(diǎn)故障時(shí)能夠快速切換,RPO為0,RTO小于10s。SwitchTurbo技術(shù)支持大并發(fā)、大數(shù)據(jù)量、以聯(lián)機(jī)事務(wù)處理為主的交易型應(yīng)用,并且具備PB級(jí)數(shù)據(jù)負(fù)載能力,通過(guò)內(nèi)存分析技術(shù)滿(mǎn)足海量數(shù)據(jù)邊入庫(kù)邊查詢(xún)要求,適用于安全、電信、金融、物聯(lián)網(wǎng)等行業(yè)的詳單查詢(xún)業(yè)務(wù)。8.3 華為云數(shù)據(jù)庫(kù)服務(wù)底層虛擬機(jī)動(dòng)態(tài)編譯技術(shù)在CPU內(nèi)存計(jì)算上,傳統(tǒng)數(shù)據(jù)處理引擎面臨著諸多短板,具體如下。這些短板制約了數(shù)據(jù)庫(kù)執(zhí)行性能的提升,無(wú)法構(gòu)建數(shù)據(jù)庫(kù)產(chǎn)品核心競(jìng)爭(zhēng)力。條件邏輯冗余頻繁虛函數(shù)調(diào)用數(shù)據(jù)局域化程度低難以發(fā)揮新硬件擴(kuò)展指令集性能GaussDB(foropenGauss)借助LLVM提供的庫(kù)函數(shù),依據(jù)查詢(xún)執(zhí)行計(jì)劃樹(shù),將原本在執(zhí)行器階段才會(huì)確定查詢(xún)實(shí)際執(zhí)行路徑的過(guò)程提前到執(zhí)行初始化階段,從而規(guī)避原本查詢(xún)執(zhí)行時(shí)候伴隨的函數(shù)調(diào)用、邏輯條件分支判斷及大量的數(shù)據(jù)讀取等問(wèn)題,以達(dá)到提升查詢(xún)性能的目的。底層虛擬機(jī)(LowLevelVirtualMachine,LLVM)技術(shù)提供了完整編譯系統(tǒng)的中間層,它會(huì)將中間表示(IntermediateRepresentation,IR)從編譯器取出與優(yōu)化,優(yōu)化后的IR接著被轉(zhuǎn)換及鏈接到目標(biāo)平臺(tái)的匯編語(yǔ)言。LLVM也可以在編譯時(shí)期、鏈接時(shí)期,甚至是運(yùn)行時(shí)期產(chǎn)生可重新定位的代碼(RelocatableCode)。8.3 華為云數(shù)據(jù)庫(kù)服務(wù)行級(jí)訪問(wèn)控制ACB傳統(tǒng)的數(shù)據(jù)庫(kù)在數(shù)據(jù)庫(kù)安全層面只能做到最小為表級(jí)的權(quán)限訪問(wèn)控制。GaussDB(foropenGauss)的行級(jí)訪問(wèn)控制特性將數(shù)據(jù)庫(kù)訪問(wèn)粒度控制到數(shù)據(jù)行級(jí)別,使數(shù)據(jù)庫(kù)擁有行級(jí)訪問(wèn)控制的能力。這使得不同用戶(hù)執(zhí)行相同的SQL查詢(xún)操作,讀取到的結(jié)果可能是不同的。用戶(hù)可以在數(shù)據(jù)表創(chuàng)建行級(jí)安全策略,該策略是指針對(duì)特定數(shù)據(jù)庫(kù)用戶(hù)、特定SQL操作生效的表達(dá)式。當(dāng)數(shù)據(jù)庫(kù)用戶(hù)對(duì)數(shù)據(jù)表進(jìn)行訪問(wèn)時(shí),若SQL滿(mǎn)足數(shù)據(jù)表特定的行級(jí)安全策略,則在查詢(xún)優(yōu)化階段將滿(mǎn)足條件的表達(dá)式按照屬性類(lèi)型,通過(guò)AND或OR方式拼接,應(yīng)用到執(zhí)行計(jì)劃上。行級(jí)訪問(wèn)控制旨在控制表中行級(jí)數(shù)據(jù)可見(jiàn)性,通過(guò)在數(shù)據(jù)表上預(yù)定義Filter,在查詢(xún)優(yōu)化階段將滿(mǎn)足條件的表達(dá)式應(yīng)用到執(zhí)行計(jì)劃上,影響最終的執(zhí)行結(jié)果。當(dāng)前行級(jí)訪問(wèn)控制支持的SQL語(yǔ)句包括SELECT、UPDATE、DELETE等。8.3 華為云數(shù)據(jù)庫(kù)服務(wù)支持HyperLogLogHLL在計(jì)算速度和所占存儲(chǔ)空間上都占優(yōu)勢(shì)。在時(shí)間復(fù)雜度上,Sort算法進(jìn)行排序至少需要O(nlogn);Hash算法和HLL均為掃描一次全表O(n)的時(shí)間就可以得出結(jié)果。在存儲(chǔ)空間上,Sort算法和Hash算法都需要先保存原始數(shù)據(jù)再進(jìn)行統(tǒng)計(jì),導(dǎo)致存儲(chǔ)空間消耗巨大;而對(duì)HLL來(lái)說(shuō),它不需要保存原始數(shù)據(jù),只需要維護(hù)HLL數(shù)據(jù)結(jié)構(gòu),故其占用的空間始終是1280字節(jié)。GaussDB(foropenGauss)采用分布式HLL架構(gòu)。數(shù)據(jù)節(jié)點(diǎn)承擔(dān)計(jì)算HLL的任務(wù),使其結(jié)果在CN(CoordinatorNode)匯總,避免了CN計(jì)算瓶頸。HyperLogLog(HLL)是統(tǒng)計(jì)數(shù)據(jù)集中唯一值個(gè)數(shù)的高效近似算法。它有著計(jì)算速度快、節(jié)省空間的特點(diǎn),不需要直接存儲(chǔ)集合本身,而是存儲(chǔ)一種名為HLL的數(shù)據(jù)結(jié)構(gòu)。每當(dāng)有新數(shù)據(jù)加入統(tǒng)計(jì)時(shí),只需將數(shù)據(jù)經(jīng)過(guò)Hash計(jì)算插入HLL中,最后根據(jù)HLL就可以得到結(jié)果。010203在GaussDB的AI全景圖中,主要有AI4DB和DB4AI兩個(gè)部分。其中AI4DB是指用人工智能技術(shù)優(yōu)化數(shù)據(jù)庫(kù)的性能,從而獲得更好的執(zhí)行表現(xiàn),也可以通過(guò)人工智能的手段實(shí)現(xiàn)自治、免運(yùn)維等功能。DB4AI指的是打通數(shù)據(jù)庫(kù)到人工智能應(yīng)用的端到端流程,統(tǒng)一人工智能技術(shù)棧,達(dá)到開(kāi)箱即用、高性能、節(jié)約成本等目的。8.3 華為云數(shù)據(jù)庫(kù)服務(wù)為更好地滿(mǎn)足時(shí)下數(shù)據(jù)庫(kù)日益增長(zhǎng)的性能需求,GaussDB(foropenGauss)提前做好規(guī)劃,引入AI能力,打造智能數(shù)據(jù)庫(kù)。GaussDB的AI全景AI能力8.1傳統(tǒng)數(shù)據(jù)庫(kù)8.2云數(shù)據(jù)庫(kù)服務(wù)8.3華為云數(shù)據(jù)庫(kù)服務(wù)學(xué)習(xí)要點(diǎn)8.4華為云數(shù)據(jù)庫(kù)實(shí)踐8.4 華為云數(shù)據(jù)庫(kù)實(shí)踐操作流程本實(shí)踐使用DRS的實(shí)時(shí)同步功能將本地Oracle數(shù)據(jù)庫(kù)實(shí)時(shí)遷移至華為云GaussDB。通過(guò)全量+增量同步,實(shí)現(xiàn)源數(shù)據(jù)庫(kù)Oracle和目標(biāo)數(shù)據(jù)庫(kù)GaussDB的數(shù)據(jù)長(zhǎng)期同步。8.4.1 創(chuàng)建VPC單擊

按鈕,在右側(cè)選擇“網(wǎng)絡(luò)>虛擬私有云VPC”選項(xiàng),根據(jù)界面提示填寫(xiě)基本信息。單擊“創(chuàng)建虛擬私有云”按鈕,購(gòu)買(mǎi)VPC。單擊“立即創(chuàng)建”按鈕,返回VPC列表,查看創(chuàng)建VPC是否創(chuàng)建完成。(1)(2)(3)登錄華為云控制臺(tái),單擊控制臺(tái)左上角的

按鈕,選擇地區(qū)。選擇“網(wǎng)絡(luò)>虛擬私有云VPC”選項(xiàng)虛擬私有云信息界面8.4.2 創(chuàng)建安全組單擊“創(chuàng)建安全組”按鈕,根據(jù)界面提示,填寫(xiě)安全組名稱(chēng)等信息,單擊“確定”按鈕。(1)(2)(3)登錄華為云控制臺(tái),選擇地區(qū),單擊

按鈕,選擇“網(wǎng)絡(luò)>虛擬私有云VPC”選項(xiàng),再選擇“訪問(wèn)控制>安全組”選項(xiàng)?!皠?chuàng)建安全組”界面配置入方向規(guī)則返回安全組列表,單擊安全組名稱(chēng)“sg-01”,選擇“入方向規(guī)則”選項(xiàng),單擊“添加規(guī)則”按鈕,配置入方向規(guī)則,添加源庫(kù)的IP地址等信息。

添加規(guī)則8.4.3 創(chuàng)建GaussDB實(shí)例單擊“購(gòu)買(mǎi)數(shù)據(jù)庫(kù)實(shí)例”按鈕,配置實(shí)例名稱(chēng)和實(shí)例基本信息(1)(2)(3)登錄華為云控制臺(tái),選擇地區(qū),單擊

按鈕,,選擇“數(shù)據(jù)庫(kù)>云數(shù)據(jù)庫(kù)GaussDB”選項(xiàng),在左側(cè)導(dǎo)航欄選擇“GaussDB>實(shí)例管理”選項(xiàng)。配置實(shí)例名稱(chēng)和實(shí)例基本信息配置實(shí)例規(guī)格根據(jù)界面提示,配置實(shí)例規(guī)格,需要注意的是,本實(shí)例為測(cè)試實(shí)例,因此應(yīng)選擇較小的測(cè)試規(guī)格,在實(shí)際情況中,用戶(hù)可選規(guī)格以界面為準(zhǔn)。8.4.3 創(chuàng)建GaussDB實(shí)例配置實(shí)例密碼等信息,單擊“立即購(gòu)買(mǎi)”按鈕,確認(rèn)信息并提交。(4)(5)(6)選擇實(shí)例所屬的VPC(創(chuàng)建VPC)和安全組(創(chuàng)建安全組),配置數(shù)據(jù)庫(kù)端口。創(chuàng)建VPC和安全組配置實(shí)例密碼返回實(shí)例列表。當(dāng)實(shí)例運(yùn)行狀態(tài)為“正?!睍r(shí),表示實(shí)例創(chuàng)建完成。8.4.4 構(gòu)造遷移前數(shù)據(jù)遷移前需要在源庫(kù)構(gòu)造一些數(shù)據(jù)類(lèi)型,供遷移完成后驗(yàn)證數(shù)據(jù)使用。用戶(hù)可通過(guò)執(zhí)行如下步驟在源庫(kù)構(gòu)造數(shù)據(jù)。①執(zhí)行以下命令,創(chuàng)建一個(gè)用戶(hù)供實(shí)踐測(cè)試使用。createusertest_infoidentifiedbyxxx;其中,test_info為本次實(shí)踐創(chuàng)建的用戶(hù),xxx為用戶(hù)的密碼,用戶(hù)可根據(jù)實(shí)際情況自行替換。②執(zhí)行以下命令,給用戶(hù)賦權(quán)。grantdbatotest_info;③在當(dāng)前用戶(hù)下創(chuàng)建一個(gè)數(shù)據(jù)表,具體命令及數(shù)據(jù)表元素類(lèi)型如下所示。CREATETABLEtest_info.DATATYPELIST(IDINT,COL_01_CHAR______ECHAR(100),(1)根據(jù)本地的Oracle數(shù)據(jù)庫(kù)的IP地址,通過(guò)數(shù)據(jù)庫(kù)連接工具(如DBeaver、Navicat、SQLDeveloper和DataGrip等)連接數(shù)據(jù)庫(kù)。根據(jù)DRS支持的數(shù)據(jù)類(lèi)型,在源庫(kù)執(zhí)行語(yǔ)句構(gòu)造數(shù)據(jù),具體步驟如下。(2)8.4.4 構(gòu)造遷移前數(shù)據(jù)COL_02_NCHAR_____ENCHAR(100),COL_03_VARCHAR___EVARCHAR(1000),COL_04_VARCHAR2__EVARCHAR2(1000),COL_05_NVARCHAR2_ENVARCHAR2(1000),COL_06_NUMBER____ENUMBER(38,0),COL_07_FLOAT_____EFLOAT(126),COL_08_BFLOAT____EBINARY_FLOAT,COL_09_BDOUBLE___EBINARY_DOUBLE,COL_10_DATE______EDATEDEFAULTSYSTIMESTAMP,COL_11_TS________ETIMESTAMP(6),COL_12_TSTZ______ETIMESTAMP(6)WITHTIMEZONE,COL_13_TSLTZ_____ETIMESTAMP(6)WITHLOCALTIMEZONE,COL_14_CLOB______ECLOBDEFAULTEMPTY

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論