【雲原生】這麼火,你不來了解下?

xiezhr發表於2023-05-11

一、前言

隨著雲端計算的不斷髮展與完善。在這樣的浪潮中,各種我們熟悉又陌生的詞彙層出不窮。雲原生( CloudNative )、 元宇宙 ( Metaverse )也在這波浪潮中應運而生。

不知道大家是不是跟我一樣,都聽說它們很火很火,活到什麼程度呢?每天只要你一開啟公眾號、部落格平臺等等,都在說雲原生。

一個公司新產品上線,也會在產品名前加上“雲”。
如果一個產品不帶著“雲”,或者你不知道雲原生。你就更不上時代步伐了。

那麼到底什麼才是雲原生呢?

想必大家跟我一樣好奇,會去網上搜羅各種雲原生相關文章來看。看完文章之後呢,完全就是霧裡看花,雲裡霧裡的,對雲原生概念更是一知半解。

相信會由一些小夥伴可能會跟我一樣,陷入自我懷疑當中,懷疑自己是不是太笨了,理解不了。

事後想想,其實也沒必要。就像自己關注的博主“三太子敖丙”經常說的,你知道的越多,不知道的越多

二、大家對雲原生的理解

看了很多文章,影片。網上對雲原生的理解也是眾說紛紜,每個人都有自己的理解。

下面列舉一些網友的說法:

  • 雲原生是基於雲端計算 ,以容器、微服務、DevOps等技術為基礎建立的一套雲技術產品體系
  • 雲原生是Cloud +Native,將雲和原生分開,就是原生應用上雲的一整套解決方案
  • 雲原生是指應用上雲後可以 利用和發揮雲平臺的彈性+分散式優勢
  • 雲原生是一種架構設計模式,幫助我們解決傳統應用存在的各種問題

三、雲原生的產生

目前比較權威的定義主要來自Pivotal公司和雲原生計算基金會 ( CNCF )

①Pivotal公司定義

  • Pivotal公司是雲原生應用的提出者
  • 2015年,提出雲原生應用架構需要具有:12因素、微服務、 自敏捷架構、基於API協作、扛脆弱性 的特性
  • 2017年, Pivotal對雲原生概括為4個要點:DevOps+持續交付+微服務+容器

② CNCF的定義

  • 起初CNCF對雲原生(Cloud Native)的定義包含以下三個方面:應用容器化、面向微服務架構、應用支援容器的編排排程
  • 2018年,隨著雲原生生態的不斷壯大 , CNCF對雲原生進行了重新定位 。 雲原生技術有利於各組織在公有云、私有云和混合雲等環境中,構建、執行和可彈性擴充套件的應用。雲原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和宣告式API

說了這麼多,還是很亂。其實可以簡單的把雲原生理解為 **DevOps+持續交付+微服務+容器 **。這樣雲原生在腦中就清晰了很多,也很容易理解了。

在這裡插入圖片描述

四、DevOps+持續交付+微服務+容器化的理解

DevOps

DevOps(Development & Operations,開發和運維)是軟體開發人員和 IT 運維人員之間的合作過程 ,最終的目的就是讓流程實現自動化。 DevOps是一個敏捷思維,是一個溝通文化,也是組織形式,為雲原生提供持續交付能力。

持續交付

在日常新功能模組開發完成後,我們經常會面臨一個問題,新開發的功能模組要怎麼打版更新,才會對客戶的影響最小,在更新一些class檔案時候,一般也要伴隨著停機重啟應用。

而持續交付,正是要解決這個傳統模式的更新。做到不停機更新,開發版和穩定版本並存。 避免重複性勞動,減少人工操作的錯誤; 更頻繁地迭代 更新;提高產品質量;

微服務

傳統的應用一般都是單體應用,單體應用經常會面臨這麼一個問題,這個功能出問題了,怎麼另外一個功能也用不了了。作為開發運維人員,我們經常就會面臨這樣的靈魂拷問: 為啥這兩個會互相影響?

而微服務的 應運而生 正是為了解決以上問題,降低各個模組之間的耦合度,也就是我們經常聽到的解耦。不把所有雞蛋放到一個籃子裡,把一塊蛋糕分成若干份低耦合的小塊,各塊負責不同的功能。

容器化

我們在部署一個新應用到新的伺服器的時候,往往會面臨在自己電腦上跑的好好的,怎麼應用部署到生產伺服器就啟不起來的尷尬局面。應用啟不起來,原因可能很多。比如缺少配置檔案、生產環境跟我們開發、測試時候的環境不一致又或者少了什麼資料。

而Dockers作為一個“集裝箱”的身份出現,可以把應用需要的環境,各種配置檔案、執行檔案打包隔離執行,以保證我們開發出來的程式,不管部署到那臺伺服器上,都不會因為缺少東西,或者環境問題而執行不正常。

集裝箱顧名思義,就是把各種零碎的物品收集到一個容器裡,包裝零散的物件不容易丟失。

五、雲原生技術棧

下面是官網上找的一張圖,真是森羅永珍,看得我們眼花繚亂。
圖片地址:
https://landscape.cncf.io/?category=app-definition-and-development&grouping=category
在這裡插入圖片描述

六、怎麼學習雲原生呢?

看到官網雲原生的技術棧圖,你慌了沒有?反正我是慌了,不知道從什麼入手才好。

作為一名Java攻城獅,該如何入手雲原生呢?

答案是: Docker+k8s+KubeSphere+Spring Cloud +DevOps 。當然了,這個不是我說的。前面B站看雲原生影片的時候,雷神大佬總結的。

上面的名詞對我們來說應該不陌生了。這裡不做過多的說明,只簡單說下,感興趣的小夥伴可以關注後面文章。

Ⅰ docker

① 什麼是docker?

docker是一個用來裝應用的容器,就像杯子可以裝水,筆筒可以放筆,書包可以放書,可以把hello word放在docker中,可以把網站放入docker中,可以把任何想得到的程式放在docker中

官方解釋:Docker is the world’s leading software containerizatior platform.

​ Docker公司開發、開源、託管在github,跨平臺、支援Linux、Windows、Macos

②解決什麼問題?

一個新產品的出現往往是為了解決某種問題,其實上面在容器化中已經說了。

這裡就不贅述了,在這裡在補充那麼一點。docker也屬於一種虛擬化技術。它是從傳統硬體層面上的虛擬化發展而來的。相比傳統虛擬化技術,容器技術節省了更多效能。

在這裡插入圖片描述

③docker執行原理及相關命令

在這裡插入圖片描述

Ⅱ k8s

① k8s 是什麼?

k8s 是 Kubernetes 的縮寫,首字母K和尾字母s中間共8個字母,為了好記,k8s便誕生了

② k8s 幹嘛的?
在這裡插入圖片描述

結合上圖,和上一小節說的容器。隨著容器技術的出現,一臺伺服器上可能執行著很多很多個容器,那麼怎麼管理這些容器呢。這就是k8s要做的事了

③ k8s有哪些特性?(我太懶了,下面完全是從官網拿過來的)

  • 服務發現和負載均衡
    Kubernetes 可以使用 DNS 名稱或自己的 IP 地址公開容器,如果進入容器的流量很大, Kubernetes 可以負載均衡並分配網路流量,從而使部署穩定。
  • 儲存編排
    Kubernetes 允許你自動掛載你選擇的儲存系統,例如本地儲存、公共雲提供商等。
  • 自動部署和回滾
    你可以使用 Kubernetes 描述已部署容器的所需狀態,它可以以受控的速率將實際狀態 更改為期望狀態。例如,你可以自動化 Kubernetes 來為你的部署建立新容器, 刪除現有容器並將它們的所有資源用於新容器。
  • 自動完成裝箱計算
    Kubernetes 允許你指定每個容器所需 CPU 和記憶體(RAM)。 當容器指定了資源請求時,Kubernetes 可以做出更好的決策來管理容器的資源。
  • 自我修復
    Kubernetes 重新啟動失敗的容器、替換容器、殺死不響應使用者定義的 執行狀況檢查的容器,並且在準備好服務之前不將其通告給客戶端。
  • 金鑰與配置管理
    Kubernetes 允許你儲存和管理敏感資訊,例如密碼、OAuth 令牌和 ssh 金鑰。 你可以在不重建容器映象的情況下部署和更新金鑰和應用程式配置,也無需在堆疊配置中暴露金鑰

Ⅲ KubeSphere

① KubeSphere 是什麼?
在這裡插入圖片描述

KubeSphere 願景是打造一個以 Kubernetes 為核心的雲原生分散式作業系統,它的架構可以非常方便地使第三方應用與雲原生生態元件進行即插即用(plug-and-play)的整合,支援雲原生應用在多雲與多叢集的統一分發和運維管理

② 官方地址

https://kubesphere.com.cn/

Ⅳ Spring Cloud

① Spring Cloud 是什麼?

Spring Cloud 是一套完整的微服務解決方案,基於 Spring Boot 框架,準確的說,它不是一個框架,而是一個大的容器,它將市面上較好的微服務框架整合進來,從而簡化了開發者的程式碼量

② Spring Cloud 優缺點

  • Spring Cloud 包含了微服務架構的方方面面
  • 約定優於配置,基於註解,沒有配置檔案
  • 輕量級元件,Spring Cloud 整合的元件大多比較輕量級,且都是各自領域的佼佼者
  • 開發簡便,Spring Cloud 對各個元件進行了大量的封裝,從而簡化了開發
  • 開發靈活,Spring Cloud 的元件都是解耦的,開發人員可以靈活按需選擇元件

當然了它也存在著很明顯的確定

  • 專案結構複雜,每一個元件或者每一個服務都需要建立一個專案

  • 部署門檻高,專案部署需要配合 Docker 等容器技術進行叢集部署

Ⅴ DevOps

①DevOps是什麼?

DevOps 是一系列做法和工具,可以使 IT 和軟體開發團隊之間的流程實現自動化。使我們可以快速、安全、可靠地將內部軟體部署到生產環境。

在這裡插入圖片描述
在這裡插入圖片描述

七、部署實戰

Ⅰ 專案推薦

知道再多理論的東西,沒有實戰都是紙上談兵。

如果你也心動了,那就趕緊行動起來吧。

這裡給大家推薦一款全部開源的 基於SpringBoot的許可權管理系統。

它就是RuoYi,相信你肯定也聽過了。隨著RuoYi專案的不斷髮展,已經衍生出不少版本,從一開始的單體應用前後端分離版本微服務版本

不少博主、up主在推薦入門專案、講解相關知識點、應用部署實戰時,首選也是RuoYi

若依作者的更新頻率很高,一直在維護和更新

專案地址:https://gitee.com/y_project

在這裡插入圖片描述

若依有很多版本,這裡呢我們當然是選RuoYi-Cloud微服務版本

專案地址:https://gitee.com/y_project/RuoYi-Cloud

Ⅱ 專案架構

在這裡插入圖片描述

在這裡插入圖片描述

Ⅲ 實戰部署

具體部署,RuoYi官方有了很詳細的文件,照著文件來就可以了,這裡就不多說了。

文件地址:http://doc.ruoyi.vip/ruoyi-cloud/

在這裡插入圖片描述

八、小結

以上就是個人對雲原生 的一些理解,雲原生簡單的說就是**DevOps+持續交付+微服務+容器 **(我又再次把這幾個詞搬過來了(●'◡'●))。

不知道你看完文章後有沒有對雲原生 更加清楚了呢。當然了,我也是小白,也正在努力學習中,有什麼說的不對的地方歡迎大家指出來,大家共同學習哈。

相關文章