天天叨叨云原生,你知道云原生是啥么?

1. 現(xiàn)代應(yīng)用的需求
早期人們對于互聯(lián)網(wǎng)的依賴還不是很強(qiáng)烈,數(shù)字體驗(yàn)這個(gè)詞還沒有誕生,大家對于數(shù)字體驗(yàn)還不是那么敏感,應(yīng)用程序是否總是可用也沒有那么重要。對于互聯(lián)網(wǎng)產(chǎn)品來說,用戶量少,并發(fā)量低,數(shù)據(jù)量也很小,只需要單個(gè)服務(wù)器即可滿足需求,數(shù)據(jù)庫和文件服務(wù)器什么的可用部署在另外的服務(wù)器上,這就是早期的單體架構(gòu)。

后來隨著各大互聯(lián)網(wǎng)公司業(yè)務(wù)的增長,訪問量和數(shù)據(jù)量也暴增,由于單個(gè)服務(wù)器的資源有限,性能顯著下降,所以不得不對 IT 架構(gòu)進(jìn)行改造。開始只是在應(yīng)用本身動(dòng)刀子,比如對數(shù)據(jù)庫進(jìn)行讀寫分離、分庫分表等優(yōu)化,以緩解數(shù)據(jù)庫的訪問壓力;對應(yīng)用進(jìn)行動(dòng)靜分離,將靜態(tài)資源放到 CDN 以加速訪問。
這是一個(gè)惡性循環(huán),如此一來,各大公司的用戶規(guī)模和業(yè)務(wù)量還會繼續(xù)飛速增長,業(yè)務(wù)場景會越來越復(fù)雜,規(guī)模越來越龐大,不得不分而治之,采用分布式架構(gòu),往更細(xì)粒度的方向通過 SOA 進(jìn)行垂直拆分。
隨著 4G 的普及,高速的網(wǎng)絡(luò)讓視頻緩存變得不易察覺,使用數(shù)據(jù)流量觀看視頻不再是一種極度炫富的行為,移動(dòng)支付也借著網(wǎng)速提升的大潮迅速普及。如今數(shù)字體驗(yàn)已經(jīng)不再是我們生活中的一個(gè)配角,它們在我們?nèi)粘I钪械脑S多活動(dòng)中都扮演著重要的角色,我們希望應(yīng)用程序總是可用的,不能容忍短暫的不可用,并且還得經(jīng)常更新,防止審美疲勞。
面對用戶的這種變態(tài)需求,必須對架構(gòu)繼續(xù)進(jìn)行優(yōu)化,主要從兩個(gè)方面來入手:
保證服務(wù)一直可用
要想保證服務(wù)一直可用,首先需要優(yōu)化對狀態(tài)信息的處理,比如會話狀態(tài)、應(yīng)用配置數(shù)據(jù)等。傳統(tǒng)應(yīng)用的狀態(tài)一般都保存在本機(jī)實(shí)例上,如何使用負(fù)載均衡器的會話綁定來確保同一個(gè)用戶的請求始終被轉(zhuǎn)發(fā)到同一個(gè)后端服務(wù)實(shí)例上。一但訪問實(shí)例發(fā)生故障,負(fù)載均衡器會建立新的會話,將請求轉(zhuǎn)發(fā)到另一臺實(shí)例,但另一臺實(shí)例沒有之前的狀態(tài)信息,從而導(dǎo)致狀態(tài)不一致。
要想解決這個(gè)問題,需要讓應(yīng)用無狀態(tài)化。這里的無狀態(tài)并不是指應(yīng)用不處理數(shù)據(jù),而是在設(shè)計(jì)時(shí)就面向失敗和面向恢復(fù)設(shè)計(jì),例如將狀態(tài)外部化,存儲到外部存儲中,同時(shí)應(yīng)用需要能夠快速重啟,快速彈性伸縮。最好能保證在外部系統(tǒng)故障情況下依然可用。
加速迭代流程
如果產(chǎn)品的進(jìn)化速度太慢,不能根據(jù)用戶的反饋快速迭代,就會引起用戶不滿。但交付速度的提高不能以降低可用性為代價(jià),傳統(tǒng)企業(yè)提升可用性的一種方法就是盡量少交付,盡量多審核,這和快速迭代是背道而馳的。現(xiàn)代互聯(lián)網(wǎng)公司需要做的是快速迭代的同時(shí)又要保證可用性,而“云原生”就是用來解決這個(gè)問題的良藥。
2. 何為云原生
計(jì)算機(jī)領(lǐng)域每過幾年就會涌現(xiàn)出一批新的概念出來,細(xì)分到云計(jì)算領(lǐng)域也是如此,這兩年時(shí)常蹦跶在大家眼前的就是“云原生”這個(gè)詞。
云原生的英文原文叫“Cloud Native”,我們不妨從英文的角度來理解,Native 表示與生俱來,就是親生的。把 Cloud 和 Native 放到一起又該如何理解?說白了就是云親生的!詳細(xì)的解釋是:應(yīng)用原生被設(shè)計(jì)為在云上以最佳方式運(yùn)行,充分發(fā)揮云的優(yōu)勢,享受云的特點(diǎn)。如果嫌太長不看可以直接理解為“云親生的”!
云原生這個(gè)詞看起來比較新鮮,其實(shí)從開發(fā)人員的角度來理解是很簡單的,就是應(yīng)用在開發(fā)的時(shí)候就考慮到云上提供的各種服務(wù),充分利用云的動(dòng)態(tài)調(diào)度、自恢復(fù)、通過 API 訪問服務(wù)等基本特性,以及敏捷高效的特性。傳統(tǒng)的應(yīng)用開發(fā)方式都是悶頭開發(fā),不管應(yīng)用跑在哪個(gè)基礎(chǔ)設(shè)施環(huán)境中,也不用考慮基礎(chǔ)設(shè)施提供的各種能力,我只管讓我的應(yīng)用能正常運(yùn)行就好。
上面都是從廣義上來理解云原生,有點(diǎn)空洞,對應(yīng)到具體的方法論就是大家耳熟能詳?shù)娜甯喝萜骰⑽⒎?wù)和 DevOps。

容器化
以 Docker 為代表的容器化直接對云的世界進(jìn)行降維打擊,它提供了一種非常便利的打包機(jī)制。這種機(jī)制直接打包了應(yīng)用運(yùn)行所需要的整個(gè)操作系統(tǒng),從而保證了本地環(huán)境和云端環(huán)境的高度一致,避免了用戶通過“試錯(cuò)”來匹配兩種不同運(yùn)行環(huán)境之間差異的痛苦過程。同時(shí)它的顆粒度比虛擬機(jī)更小,部署更靈活,簡直是紅的發(fā)紫啊。
將應(yīng)用托管到容器中,就注定了應(yīng)用本質(zhì)上是無狀態(tài)的,為了保證應(yīng)用無狀態(tài)的同時(shí)又不影響用戶體驗(yàn),容器平臺的做法是將狀態(tài)信息保存到外部存儲中,將日志采集從業(yè)務(wù)中剝離,使用 Sidecar 拉抓取業(yè)務(wù)容器日志。同時(shí)需要應(yīng)用提供探針,以便讓平臺實(shí)現(xiàn)應(yīng)用的生命周期管理。
對于數(shù)據(jù)庫應(yīng)用來說,它們對 IO 和吞吐的性能要求很高,如果要跑在容器中,對于外部存儲的挑戰(zhàn)會非常大,各大公司也在極力優(yōu)化其外部存儲性能。例如金山云就推出了一種全新極速云盤(ESSD)。ESSD 是 Enhanced SSD,即在 SSD 云盤的基礎(chǔ)上,提供更高的突破與創(chuàng)新,主要體現(xiàn)在:
極簡架構(gòu):NVMe SSD 作為存儲介質(zhì),配合 RDMA 組網(wǎng),超簡潔軟件架構(gòu),發(fā)揮云盤高效性能。 高效性能:100W IOPS 4GBps 吞吐,時(shí)延低至 200 微秒。 穩(wěn)定可靠:三副本保存,可靠性 9 個(gè) 9,可用性 99.99%,支持加密,支持本地快照、普通快照等多種數(shù)據(jù)備份方式。 彈性部署:支持在線擴(kuò)容隨時(shí)調(diào)整云盤大小,可利用快照實(shí)現(xiàn)云盤的批量復(fù)制,大大增強(qiáng)業(yè)務(wù)的敏捷性。

從圖上可以看出 ESSD 相對普通 SSD 的性能提升:ESSD IOPS 單盤高達(dá) 100w,相比上一代提升 40 倍;吞吐性能達(dá)到 4GBps,提升 16 倍;時(shí)延低至 0.2ms(即 200us),為前代 SSD 時(shí)延的 1/15。
如果將 ESSD 和容器服務(wù)結(jié)合使用,用戶就無需再擔(dān)心核心數(shù)據(jù)庫部分能否真正遷移到云的數(shù)據(jù)庫上,能否有金融級的數(shù)據(jù)庫的能力。利用 ESSD 的高效性能,完全滿足云上數(shù)據(jù)庫對 IO 和吞吐的性能要求。
微服務(wù)
隨著數(shù)據(jù)量的不斷增大,吞吐量不斷增加,業(yè)務(wù)越來越復(fù)雜,服務(wù)的數(shù)量會越來越多,分層會越來越細(xì)。久而久之,單體應(yīng)用漸漸被拆分成功能相互獨(dú)立的微應(yīng)用,實(shí)現(xiàn)業(yè)務(wù)架構(gòu)解耦,大家各司其職,報(bào)團(tuán)取暖,這就是微服務(wù)。
微服務(wù)區(qū)別于單體架構(gòu)的地方就在于“分而治之”,即通過切分服務(wù)以明確模塊或者功能邊界。然而,僅有“分”是不行的,軟件系統(tǒng)是一個(gè)整體,很多功能來自若干服務(wù)模塊的配合,因此必然要有“合”的手段,這對矛盾會體現(xiàn)在多個(gè)方面。
如果使用 Docker,由于每個(gè)服務(wù)打包可以封裝為一個(gè) Docker 鏡像,每個(gè)運(yùn)行時(shí)的服務(wù)都表現(xiàn)為一個(gè)獨(dú)立容器,我們之前建立的容器依賴就可以很容易的對應(yīng)到服務(wù)依賴上,基于這種統(tǒng)一性,系統(tǒng)升級就很容易配合一些自動(dòng)化工具實(shí)現(xiàn)“整體升級”(甚至還可以“整體降級”)。將微服務(wù)應(yīng)用放置在容器中,可以在開發(fā)、測試和上線流程中實(shí)現(xiàn)“一次編寫,到處運(yùn)行”。
DevOps
得益于容器和 Docker 技術(shù)的紅利,開發(fā)人員可以輕松地與 IT 操作和生產(chǎn)環(huán)境共享他們的軟件和依賴項(xiàng),同時(shí)消除典型的“適用于計(jì)算機(jī)”的借口,間接地將開發(fā)人員和運(yùn)維人員更緊密地結(jié)合在一起,使他們更能高效地協(xié)作。運(yùn)維和開發(fā)小哥表示現(xiàn)在他們的關(guān)系很融洽,沒事還能一起出去喝兩杯,即使線上環(huán)境出了問題,也能夠一起愉快地背鍋。
雖然云原生有三板斧,但主角其實(shí)還是 Kubernetes,它是云原生領(lǐng)域的當(dāng)紅小生,甚至成為了云原生的代名詞。Kubernetes 從誕生之初便一路飆升,將對手甩開了十幾條街,未來也將會以火箭的速度保持上升。

為了推動(dòng) Kubernetes 產(chǎn)品的一致性和可移植性,踐行 Kubernetes 被創(chuàng)立時(shí)的初心,CNCF 還啟動(dòng)了 Kubernetes 一致性認(rèn)證計(jì)劃,目前幾乎所有的互聯(lián)網(wǎng)巨頭都通過了這個(gè)一致性認(rèn)證:

除了這些,Kubernetes 的行業(yè)成功案例也數(shù)不勝數(shù):
超過 20 個(gè)知名的集群管理平臺從自研架構(gòu)遷移到 Kubernetes,包括阿里巴巴的 Sigma、亞馬遜的 Apollo、Apache Mesos、百度的 Matrix、Cloud Foundry 的 Diego/Garden 等 歐洲核子研究中心(CERN)正在使用 Kubernetes 管理著超過 200 個(gè)云計(jì)算中心,運(yùn)行著 40 多萬個(gè)工作負(fù)載,每秒處理著高達(dá) 30GB 的數(shù)據(jù)。 中國移動(dòng)使用容器取代虛擬機(jī),以輕量級的方式在其平臺上運(yùn)行各種應(yīng)用程序,利用 Kubernetes 提高資源利用率。 金山云已經(jīng)開始為金蝶軟件提供的物理機(jī)自建分布式存儲服務(wù),為小米支撐 FDS 容器、全套基礎(chǔ)運(yùn)維平臺,為金山 WPS 在線文本處理提供支持。
3. 云原生的未來
大型企業(yè)將會在 Kubernetes 上加倍投入
2018 年 1 月,Red Hat 收購 CoreOS 公司,在隨后的一年中,Red Hat 將 CoreOS 優(yōu)秀的功能和組件迅速融合到 OpenShift 中。2019 年 7 月 9 日,IBM 又收購了 Red Hat,將其并入混合云部門。未來,IBM 會將 Red Hat 開放式混合云技術(shù)的強(qiáng)大功能和靈活性與 IBM 創(chuàng)新和行業(yè)專業(yè)知識的規(guī)模和深度相結(jié)合,共同推出下一代混合多云平臺,該平臺基于 Linux 和 Kubernetes 等開源技術(shù),允許企業(yè)在本地以及私有和多個(gè)公共云上安全地部署、運(yùn)行和管理數(shù)據(jù)與應(yīng)用。
無獨(dú)有偶,2020 年 7 月 8 日,開源公司 SUSE 宣布收購 Kubernetes 管理平臺創(chuàng)建者 Rancher Labs。這讓 SUSE 在云原生領(lǐng)域拿到一張重要的門票,同時(shí),Rancher 團(tuán)隊(duì)的加入也彌補(bǔ)了 SUSE 在云原生方面的研發(fā)能力。SUSE 并購 Rancher 之后未來發(fā)展的方向更多的會是云原生技術(shù)和 2B 客戶的需求場景的結(jié)合,加速對非云原生軟件類產(chǎn)品的替代,加速對傳統(tǒng) IT 市場的云化過程。
而國內(nèi)的金山云則從基礎(chǔ)設(shè)施層面著手,推出了三款全新的產(chǎn)品:金山云星曜裸金屬服務(wù)器、新一代高性能云服務(wù)器和全新極速云盤 ESSD。ESSD 前面已經(jīng)介紹過了,這里主要介紹下裸金屬服務(wù)器。星曜裸金屬服務(wù)器是一種專屬、獨(dú)享的云上物理服務(wù)器,提供超高性能計(jì)算服務(wù)。它跟云服務(wù)器、容器一樣,享受到云的統(tǒng)一管理。并且,在多層安全防護(hù)等級下,它的采購、運(yùn)維、管理跟分布式云計(jì)算現(xiàn)有的服務(wù)互通,可以同時(shí)享受到物理服務(wù)器的優(yōu)秀性能和云服務(wù)器的彈性能力。性能方面主要體現(xiàn)在:
原生裸金屬服務(wù)器,不產(chǎn)生性能損耗,無資源搶占現(xiàn)象,服務(wù)安全、穩(wěn)定、可靠。 最大可支持 50Gbps 帶寬,原生網(wǎng)絡(luò)性能可達(dá)到 3000W PPS。 支持與客戶托管 IDC 區(qū)域的裸金屬服務(wù)器通過 10Tbps 專線互通,形成一個(gè)延遲和收斂比可控的內(nèi)網(wǎng),網(wǎng)絡(luò)效果等同于在同一 IDC 內(nèi)互通。
除了性能優(yōu)勢外,彈性能力也不容小覷:
可作為傳統(tǒng) IDC 的邏輯擴(kuò)展部分。 支持云容器一體化管理,托管資源與云資源統(tǒng)一管理。 單個(gè)可用區(qū)支持超過 10 萬臺裸金屬云資源擴(kuò)展,突破了機(jī)柜不足的限制。
如果你很關(guān)心虛擬機(jī)的性能損耗問題,希望將物理服務(wù)器的性能全部發(fā)揮出來,可以選擇金山云的裸金屬服務(wù)器,它默認(rèn)已經(jīng)集成了監(jiān)控、容器、大數(shù)據(jù)等 PaaS 層服務(wù),均支持插件式安裝。其他 PaaS 層服務(wù)也在持續(xù)集成中。
作為用戶,你也無需擔(dān)心遷移成本,只需要接入裸金屬服務(wù)器的控制臺 API,就可以像管理本地服務(wù)器一樣管理裸金屬服務(wù)器了。
利用這三大法寶,金山云提供了一站式的商用方案,數(shù)據(jù)庫、大數(shù)據(jù)什么的上云從未如此簡單,不再需要自己瞎折騰,老牛拉破車,越拉腎越虛。。。
混合云、多云趨勢凸顯
在公有云的 IaaS 層,先發(fā)者 AWS 是事實(shí)上的標(biāo)準(zhǔn)制定者。所有的公有云廠商推出的云服務(wù)器,都相當(dāng)于“兼容機(jī)”。出于不想被單一廠商鎖定、以及數(shù)據(jù)敏感性等的考慮,用戶在使用云的過程中,越來越呈現(xiàn)混合云、多云的趨勢。
由于 IaaS 層相當(dāng)于形成了標(biāo)準(zhǔn)化,各用戶也可以利用第三方廠家實(shí)現(xiàn)混合云多云管理。微軟、谷歌 和 AWS 都提供了跨云和混合云的方案。例如谷歌的 Anthos:

Anthos 允許你在私有云中部署,并安裝一個(gè)代理,保持與 Google Cloud Platform(GCP)的加密連接。該代理允許你從 GCP 控制臺管理 Anthos 集群及其工作負(fù)載,部署和擴(kuò)展應(yīng)用程序。
微軟的 Azure Stack 也有類似的服務(wù):

它允許你在自己的數(shù)據(jù)中心部署 Azure 服務(wù),有了 Azure 和 Azure Stack 組成的混合云,開發(fā)者就可以基于統(tǒng)一的 Azure 服務(wù)和 DevOps 敏捷開發(fā)流程和工具,開發(fā)最適合業(yè)務(wù)、技術(shù)和合規(guī)要求的應(yīng)用。
金山云也不甘落后,一方面,金山云提供的銀河專有云,可以滿足用戶將兼容機(jī)方便地部署在自己機(jī)房的訴求;另一方面,金山云利用開源社區(qū)技術(shù),提供了較為簡便的、基于容器的混合云、多云管理方案,便于用戶將 IaaS 層實(shí)現(xiàn)跨云的統(tǒng)一管理。
如果你覺得這種專有云起步太大了,那也完全不用擔(dān)心,金山云已經(jīng)把專有云做的越來越小型化,從原來的 50 臺服務(wù)器壓縮到了現(xiàn)在的 10 臺,同時(shí)服務(wù)可以選配。這種解決方案在很多場景下對小型私有云平臺有碾壓式的優(yōu)勢,實(shí)現(xiàn)了無縫擴(kuò)展,而且混合云的管理也會非常簡單,因?yàn)楸镜睾瓦h(yuǎn)程資源基本上是一致的。
隨著云原生的理念越來越深入人心,利用金山云的專有云,客戶可以輕松部署各種高性能的云原生應(yīng)用到私有數(shù)據(jù)中心中,數(shù)據(jù)庫和大數(shù)據(jù)應(yīng)用也不在話下,把云原生的價(jià)值最大化,真香!


你可能還喜歡
點(diǎn)擊下方圖片即可閱讀

云原生是一種信仰??

掃碼關(guān)注公眾號
后臺回復(fù)?k8s?獲取史上最方便快捷的 Kubernetes 高可用部署工具,只需一條命令,連 ssh 都不需要!


點(diǎn)擊?"閱讀原文"?獲取更好的閱讀體驗(yàn)!
??給個(gè)「在看」,是對我最大的支持??

