每天叨叨雲原生,你知道雲原生是啥麼?

1. 現代應用的需求

早期人們對於互聯網的依賴還不是很強烈,數字體驗這個詞尚未誕生,你們對於數字體驗還不是那麼敏感,應用程序是否老是可用也沒有那麼重要。對於互聯網產品來講,用戶量少,併發量低,數據量也很小,只須要單個服務器便可知足需求,數據庫和文件服務器什麼的可用部署在另外的服務器上,這就是早期的單體架構web

後來隨着各大互聯網公司業務的增加,訪問量和數據量也暴增,因爲單個服務器的資源有限,性能顯着降低,因此不得不對 IT 架構進行改造。開始只是在應用自己動刀子,好比對數據庫進行讀寫分離、分庫分表等優化,以緩解數據庫的訪問壓力;對應用進行動靜分離,將靜態資源放到 CDN 以加速訪問。數據庫

這是一個惡性循環,如此一來,各大公司的用戶規模和業務量還會繼續飛速增加,業務場景會愈來愈複雜,規模愈來愈龐大,不得不分而治之,採用分佈式架構,往更細粒度的方向經過 SOA 進行垂直拆分。後端

隨着 4G 的普及,高速的網絡讓視頻緩存變得不易察覺,使用數據流量觀看視頻再也不是一種極度炫富的行爲,移動支付也藉着網速提高的大潮迅速普及。現在數字體驗已經再也不是咱們生活中的一個配角,它們在咱們平常生活中的許多活動中都扮演着重要的角色,咱們但願應用程序老是可用的,不能容忍短暫的不可用,而且還得常常更新,防止審美疲勞。緩存

面對用戶的這種變態需求,必須對架構繼續進行優化,主要從兩個方面來入手:安全

保證服務一直可用

要想保證服務一直可用,首先須要優化對狀態信息的處理,好比會話狀態、應用配置數據等。傳統應用的狀態通常都保存在本機實例上,如何使用負載均衡器的會話綁定來確保同一個用戶的請求始終被轉發到同一個後端服務實例上。一但訪問實例發生故障,負載均衡器會創建新的會話,將請求轉發到另外一臺實例,但另外一臺實例沒有以前的狀態信息,從而致使狀態不一致。服務器

要想解決這個問題,須要讓應用無狀態化。這裏的無狀態並非指應用不處理數據,而是在設計時就面向失敗和麪向恢復設計,例如將狀態外部化,存儲到外部存儲中,同時應用須要可以快速重啓,快速彈性伸縮。最好能保證在外部系統故障狀況下依然可用。微信

加速迭代流程

若是產品的進化速度太慢,不能根據用戶的反饋快速迭代,就會引發用戶不滿。但交付速度的提升不能以下降可用性爲代價,傳統企業提高可用性的一種方法就是儘可能少交付,儘可能多審覈,這和快速迭代是背道而馳的。現代互聯網公司須要作的是快速迭代的同時又要保證可用性,而「雲原生」就是用來解決這個問題的良藥。網絡

2. 何爲雲原生

計算機領域每過幾年就會涌現出一批新的概念出來,細分到雲計算領域也是如此,這兩年時常蹦躂在你們眼前的就是「雲原生」這個詞。架構

雲原生的英文原文叫「Cloud Native」,咱們不妨從英文的角度來理解,Native 表示與生俱來,就是親生的。把 Cloud 和 Native 放到一塊兒又該如何理解?說白了就是雲親生的!詳細的解釋是:應用原生被設計爲在雲上以最佳方式運行,充分發揮雲的優點,享受雲的特色。若是嫌太長不看能夠直接理解爲「雲親生的」!併發

雲原生這個詞看起來比較新鮮,其實從開發人員的角度來理解是很簡單的,就是應用在開發的時候就考慮到雲上提供的各類服務,充分利用雲的動態調度、自恢復、經過 API 訪問服務等基本特性,以及敏捷高效的特性。傳統的應用開發方式都是悶頭開發,無論應用跑在哪一個基礎設施環境中,也不用考慮基礎設施提供的各類能力,我只管讓個人應用能正常運行就好。

上面都是從廣義上來理解雲原生,有點空洞,對應到具體的方法論就是你們耳熟能詳的三板斧:容器化、微服務和 DevOps。

容器化

Docker 爲表明的容器化直接對雲的世界進行降維打擊,它提供了一種很是便利的打包機制。這種機制直接打包了應用運行所須要的整個操做系統,從而保證了本地環境和雲端環境的高度一致,避免了用戶經過「試錯」來匹配兩種不一樣運行環境之間差別的痛苦過程。同時它的顆粒度比虛擬機更小,部署更靈活,簡直是紅的發紫啊。

將應用託管到容器中,就註定了應用本質上是無狀態的,爲了保證應用無狀態的同時又不影響用戶體驗,容器平臺的作法是將狀態信息保存到外部存儲中,將日誌採集從業務中剝離,使用 Sidecar 拉抓取業務容器日誌。同時須要應用提供探針,以便讓平臺實現應用的生命週期管理。

對於數據庫應用來講,它們對 IO 和吞吐的性能要求很高,若是要跑在容器中,對於外部存儲的挑戰會很是大,各大公司也在極力優化其外部存儲性能。例如金山雲就推出了一種全新極速雲盤(ESSD)。ESSD 是 Enhanced SSD,即在 SSD 雲盤的基礎上,提供更高的突破與創新,主要體如今:

  • 極簡架構:NVMe SSD 做爲存儲介質,配合 RDMA 組網,超簡潔軟件架構,發揮雲盤高效性能。
  • 高效性能:100W IOPS 4GBps 吞吐,時延低至 200 微秒。
  • 穩定可靠:三副本保存,可靠性 9 個 9,可用性 99.99%,支持加密,支持本地快照、普通快照等多種數據備份方式。
  • 彈性部署:支持在線擴容隨時調整雲盤大小,可利用快照實現雲盤的批量複製,大大加強業務的敏捷性。

從圖上能夠看出 ESSD 相對普通 SSD 的性能提高:ESSD IOPS 單盤高達 100w,相比上一代提高 40 倍;吞吐性能達到 4GBps,提高 16 倍;時延低至 0.2ms(即 200us),爲前代 SSD 時延的 1/15。

若是將 ESSD 和容器服務結合使用,用戶就無需再擔憂核心數據庫部分可否真正遷移到雲的數據庫上,可否有金融級的數據庫的能力。利用 ESSD 的高效性能,徹底知足雲上數據庫對 IO 和吞吐的性能要求。

微服務

隨着數據量的不斷增大,吞吐量不斷增長,業務愈來愈複雜,服務的數量會愈來愈多,分層會愈來愈細。長此以往,單體應用漸漸被拆分紅功能相互獨立的微應用,實現業務架構解耦,你們各司其職,報團取暖,這就是微服務。

微服務區別於單體架構的地方就在於「分而治之」,即經過切分服務以明確模塊或者功能邊界。然而,僅有「分」是不行的,軟件系統是一個總體,不少功能來自若干服務模塊的配合,所以必然要有「合」的手段,這對矛盾會體如今多個方面。

若是使用 Docker,因爲每一個服務打包能夠封裝爲一個 Docker 鏡像,每一個運行時的服務都表現爲一個獨立容器,咱們以前創建的容器依賴就能夠很容易的對應到服務依賴上,基於這種統一性,系統升級就很容易配合一些自動化工具實現「總體升級」(甚至還能夠「總體降級」)。將微服務應用放置在容器中,能夠在開發、測試和上線流程中實現「一次編寫,處處運行」。

DevOps

得益於容器和 Docker 技術的紅利,開發人員能夠輕鬆地與 IT 操做和生產環境共享他們的軟件和依賴項,同時消除典型的「適用於計算機」的藉口,間接地將開發人員和運維人員更緊密地結合在一塊兒,使他們更能高效地協做。運維和開發小哥表示如今他們的關係很融洽,沒事還能一塊兒出去喝兩杯,即便線上環境出了問題,也可以一塊兒愉快地背鍋

雖然雲原生有三板斧,但主角其實仍是 Kubernetes,它是雲原生領域的當紅小生,甚至成爲了雲原生的代名詞。Kubernetes 從誕生之初便一路飆升,將對手甩開了十幾條街,將來也將會以火箭的速度保持上升。

爲了推進 Kubernetes 產品的一致性和可移植性,踐行 Kubernetes 被創立時的初心,CNCF 還啓動了 Kubernetes 一致性認證計劃,目前幾乎全部的互聯網巨頭都經過了這個一致性認證:

除了這些,Kubernetes 的行業成功案例也數不勝數:

  • 超過 20 個知名的集羣管理平臺從自研架構遷移到 Kubernetes,包括阿里巴巴的 Sigma、亞馬遜的 Apollo、Apache Mesos、百度的 Matrix、Cloud Foundry 的 Diego/Garden 等
  • 歐洲核子研究中心(CERN)正在使用 Kubernetes 管理着超過 200 個雲計算中心,運行着 40 多萬個工做負載,每秒處理着高達 30GB 的數據。
  • 中國移動使用容器取代虛擬機,以輕量級的方式在其平臺上運行各類應用程序,利用 Kubernetes 提升資源利用率。
  • 金山雲已經開始爲金蝶軟件提供的物理機自建分佈式存儲服務,爲小米支撐 FDS 容器、全套基礎運維平臺,爲金山 WPS 在線文本處理提供支持。

3. 雲原生的將來

大型企業將會在 Kubernetes 上加倍投入

2018 年 1 月,Red Hat 收購 CoreOS 公司,在隨後的一年中,Red Hat 將 CoreOS 優秀的功能和組件迅速融合到 OpenShift 中。2019 年 7 月 9 日,IBM 又收購了 Red Hat,將其併入混合雲部門。將來,IBM 會將 Red Hat 開放式混合雲技術的強大功能和靈活性與 IBM 創新和行業專業知識的規模和深度相結合,共同推出下一代混合多雲平臺,該平臺基於 Linux 和 Kubernetes 等開源技術,容許企業在本地以及私有和多個公共雲上安全地部署、運行和管理數據與應用。

無獨有偶,2020 年 7 月 8 日,開源公司 SUSE 宣佈收購 Kubernetes 管理平臺建立者 Rancher Labs。這讓 SUSE 在雲原生領域拿到一張重要的門票,同時,Rancher 團隊的加入也彌補了 SUSE 在雲原生方面的研發能力。SUSE 併購 Rancher 以後將來發展的方向更多的會是雲原生技術和 2B 客戶的需求場景的結合,加速對非雲原生軟件類產品的替代,加速對傳統 IT 市場的雲化過程。

而國內的金山雲則從基礎設施層面着手,推出了三款全新的產品:金山雲星曜裸金屬服務器、新一代高性能雲服務器和全新極速雲盤 ESSD。ESSD 前面已經介紹過了,這裏主要介紹下裸金屬服務器。星曜裸金屬服務器是一種專屬、獨享的雲上物理服務器,提供超高性能計算服務。它跟雲服務器、容器同樣,享受到雲的統一管理。而且,在多層安全防禦等級下,它的採購、運維、管理跟分佈式雲計算現有的服務互通,能夠同時享受到物理服務器的優秀性能和雲服務器的彈性能力。性能方面主要體如今:

  • 原生裸金屬服務器,不產生性能損耗,無資源搶佔現象,服務安全、穩定、可靠。
  • 最大可支持 50Gbps 帶寬,原生網絡性能可達到 3000W PPS。
  • 支持與客戶託管 IDC 區域的裸金屬服務器經過 10Tbps 專線互通,造成一個延遲和收斂比可控的內網,網絡效果等同於在同一 IDC 內互通。

除了性能優點外,彈性能力也不容小覷:

  • 可做爲傳統 IDC 的邏輯擴展部分。
  • 支持雲容器一體化管理,託管資源與雲資源統一管理。
  • 單個可用區支持超過 10 萬臺裸金屬雲資源擴展,突破了機櫃不足的限制。

若是你很關心虛擬機的性能損耗問題,但願將物理服務器的性能所有發揮出來,能夠選擇金山雲的裸金屬服務器,它默認已經集成了監控、容器、大數據等 PaaS 層服務,均支持插件式安裝。其餘 PaaS 層服務也在持續集成中。

做爲用戶,你也無需擔憂遷移成本,只須要接入裸金屬服務器的控制檯 API,就能夠像管理本地服務器同樣管理裸金屬服務器了。

利用這三大法寶,金山雲提供了一站式的商用方案,數據庫、大數據什麼的上雲從未如此簡單,再也不須要本身瞎折騰,老牛拉破車,越拉腎越虛。。。

混合雲、多雲趨勢凸顯

在公有云的 IaaS 層,先發者 AWS 是事實上的標準制定者。全部的公有云廠商推出的雲服務器,都至關於「兼容機」。出於不想被單一廠商鎖定、以及數據敏感性等的考慮,用戶在使用雲的過程當中,愈來愈呈現混合雲、多雲的趨勢。

因爲 IaaS 層至關於造成了標準化,各用戶也能夠利用第三方廠家實現混合雲多雲管理。微軟、谷歌 和 AWS 都提供了跨雲和混合雲的方案。例如谷歌的 Anthos

Anthos 容許你在私有云中部署,並安裝一個代理,保持與 Google Cloud Platform(GCP)的加密鏈接。該代理容許你從 GCP 控制檯管理 Anthos 集羣及其工做負載,部署和擴展應用程序。

微軟的 Azure Stack 也有相似的服務:

它容許你在本身的數據中心部署 Azure 服務,有了 Azure 和 Azure Stack 組成的混合雲,開發者就能夠基於統一的 Azure 服務和 DevOps 敏捷開發流程和工具,開發最適合業務、技術和合規要求的應用。

金山雲也不甘落後,一方面,金山雲提供的銀河專有云,能夠知足用戶將兼容機方便地部署在本身機房的訴求;另外一方面,金山雲利用開源社區技術,提供了較爲簡便的、基於容器的混合雲、多雲管理方案,便於用戶將 IaaS 層實現跨雲的統一管理。

若是你以爲這種專有云起步太大了,那也徹底不用擔憂,金山雲已經把專有云作的愈來愈小型化,從原來的 50 臺服務器壓縮到了如今的 10 臺,同時服務能夠選配。這種解決方案在不少場景下對小型私有云平臺有碾壓式的優點,實現了無縫擴展,並且混合雲的管理也會很是簡單,由於本地和遠程資源基本上是一致的。

隨着雲原生的理念愈來愈深刻人心,利用金山雲的專有云,客戶能夠輕鬆部署各類高性能的雲原生應用到私有數據中心中,數據庫和大數據應用也不在話下,把雲原生的價值最大化,真香!


你可能還喜歡

點擊下方圖片便可閱讀

Linux Capabilities 與容器的水乳交融

雲原生是一種信仰 🤘



碼關注公衆號

後臺回覆◉k8s◉獲取史上最方便快捷的 Kubernetes 高可用部署工具,只需一條命令,連 ssh 都不須要!



點擊 "閱讀原文" 獲取更好的閱讀體驗!

         
❤️ 給個 「在看」 ,是對我最大的支持❤️

本文分享自微信公衆號 - 雲原生實驗室(cloud_native_yang)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索