云原生的定義
云原生指構(gòu)建和運(yùn)行應(yīng)用以充分利用通過云交付模式交付的分布式計(jì)算。云原生應(yīng)用旨在充分利用云平臺(tái)特有的可擴(kuò)展性、彈性和靈活性優(yōu)勢(shì)。
根據(jù)云原生計(jì)算基金會(huì) (CNCF) 的定義,云原生技術(shù)可幫助企業(yè)在公有云、私有云和混合云上構(gòu)建和運(yùn)行可擴(kuò)展的應(yīng)用。云原生方法的典型特性包括容器、服務(wù)網(wǎng)格、微服務(wù)、不可變基礎(chǔ)設(shè)施以及聲明式應(yīng)用編程接口 (API) 等等。
借助這些特性,企業(yè)可以獲得松散耦合的彈性、可管理、可觀察的系統(tǒng),工程師也能盡可能減輕工作負(fù)擔(dān),高頻實(shí)施重大變更。
云原生之核心技術(shù)
容器
容器(container)這一概念最早出現(xiàn)在Linux中出現(xiàn)的,又稱LXC(Linux Container),主要是通過Cgroups的資源管理能力和Namespace的資源隔離能力結(jié)合在一起實(shí)現(xiàn)進(jìn)程級(jí)別的隔離。
K8s
全稱是Kubernetes,由Google 基于 Borg 開源的容器編排調(diào)度系統(tǒng),是一種基于容器技術(shù)的分布式架構(gòu)領(lǐng)先方案。在Docker技術(shù)的基礎(chǔ)上,為容器化的應(yīng)用提供部署運(yùn)行、資源調(diào)度、服務(wù)發(fā)現(xiàn)和動(dòng)態(tài)伸縮等功能,用戶不需要再過度的關(guān)注資源的管理問題,降低操作的復(fù)雜度,提高了大規(guī)模容器集群管理的便捷性。
微服務(wù)(Microservices)
微服務(wù)則是一種用于構(gòu)建應(yīng)用的架構(gòu)方案,微服務(wù)架構(gòu)有別于為傳統(tǒng)的單體應(yīng)用的是將應(yīng)用拆分成多個(gè)核心功能,每個(gè)功能都被稱為一個(gè)獨(dú)立的服務(wù),可以單獨(dú)構(gòu)建和部署,其中某個(gè)服務(wù)出現(xiàn)故障也不會(huì)影響其他的功能模塊,這句體現(xiàn)了其針對(duì)特定服務(wù)發(fā)布,影響小,風(fēng)險(xiǎn)小等特點(diǎn)。
服務(wù)網(wǎng)格(Service Mesh)
服務(wù)網(wǎng)格指的是用于微服務(wù)應(yīng)用的可配置基礎(chǔ)架構(gòu)層。在使用服務(wù)網(wǎng)格時(shí)通常會(huì)提供一個(gè)sidecar代理實(shí)例,主要處理 service 間的通信、監(jiān)控、以及一些安全相關(guān)的考量,每個(gè)serivce里面都會(huì)有一個(gè)sidecar,同樣也提供了服務(wù)發(fā)現(xiàn)、負(fù)載均衡、授權(quán)等功能。
無服務(wù)(Serverless)
根據(jù) CNCF 的定義,Serverless 是指構(gòu)建和運(yùn)行不需要服務(wù)器管理的應(yīng)用程序的概念。即開發(fā)人員無需關(guān)注底層的基礎(chǔ)設(shè)施,只需要關(guān)注應(yīng)用程序的業(yè)務(wù)本身就行,且該服務(wù)是可以自動(dòng)擴(kuò)展。
DevOps
早期的項(xiàng)目使用的是‘瀑布模型’進(jìn)行軟件交付,即一個(gè)階段所有的完成工作之后再往下一個(gè)階段,但這樣的模式無法滿足業(yè)務(wù)快速開發(fā)交付及變更需求的情況,于是后面就出現(xiàn)了敏捷開發(fā)這一概念,即一種快速應(yīng)對(duì)需求變化軟件開發(fā)能力,而DevOps就是基于敏捷開發(fā)將軟件開發(fā)/測(cè)試人員/IT運(yùn)維關(guān)聯(lián)在一起,通過工具、組織等方式使開發(fā)、測(cè)試、發(fā)布流程自動(dòng)化,軟件發(fā)布頻繁,高效。
云(Cloud)
常常聽到的‘公有云’,‘私有云’,‘混合云’都是基于這個(gè)生態(tài)衍生出來的各種場(chǎng)景,不同的云搭建環(huán)境,所需資源亦有所不同,比如公有云是在互聯(lián)網(wǎng)上發(fā)布的云計(jì)算服務(wù),而私有云則是在公司內(nèi)網(wǎng)發(fā)布的云計(jì)算服務(wù),目前沒有一種云計(jì)算類型可以解決所有場(chǎng)景出現(xiàn)的問題,怎么選擇適合自己的場(chǎng)景則需要根據(jù)技術(shù)需求決定。
云原生應(yīng)用的優(yōu)勢(shì)
云原生應(yīng)用,或者說原生云應(yīng)用 (NCA),是專為云計(jì)算架構(gòu)而設(shè)計(jì)的程序。它們具有多重優(yōu)勢(shì)。
獨(dú)立:云原生應(yīng)用架構(gòu)支持企業(yè)構(gòu)建相互獨(dú)立的云原生應(yīng)用,同時(shí)單獨(dú)管理和部署各個(gè)云原生應(yīng)用。
可恢復(fù)性:即便基礎(chǔ)設(shè)施發(fā)生故障,云原生應(yīng)用也能繼續(xù)運(yùn)行,保持聯(lián)機(jī)狀態(tài)。
基于標(biāo)準(zhǔn):為實(shí)現(xiàn)出色的互操作性和工作負(fù)載可移植性,云原生服務(wù)通?;陂_源和標(biāo)準(zhǔn)技術(shù)構(gòu)建而成。這有助于降低供應(yīng)商依賴,提高可移植性。
業(yè)務(wù)敏捷性:云原生應(yīng)用支持跨網(wǎng)絡(luò)靈活部署,同時(shí)相比傳統(tǒng)應(yīng)用規(guī)模更小,更易于開發(fā)、部署和迭代。
自動(dòng)化:云原生應(yīng)用支持 DevOps 自動(dòng)化特性,支持持續(xù)交付以及持續(xù)部署定期軟件變更。此外,開發(fā)人員還可以使用藍(lán)綠部署和金絲雀部署等方法來優(yōu)化應(yīng)用,避免對(duì)用戶體驗(yàn)產(chǎn)生任何不利影響。
零停機(jī):借助 Kubernetes 等容器編排器,企業(yè)可以零停機(jī)地部署軟件更新。