云原生技術演進之路-(云技術如何一步步演進的,云原生解決了什么問題?)

云技術如何一步步演進的?
云原生解決了什么問題?

物理設備

電腦剛被發明的時候,還沒有網絡,每個電腦(PC),就是一個單機。
看懂云計算、虛擬化和容器,這一篇就夠啦

這臺單機,包括CPU、內存、硬盤、顯卡等硬件。用戶在單機上,安裝操作系統和應用軟件,完成自己的工作。

后來,有了網絡,單機與單機之間,可以交換信息,協同工作。

看懂云計算、虛擬化和容器,這一篇就夠啦
再后來,單機性能越來越強,就有了服務器(Server)。把一些服務器集中起來,放在機房里,然后讓用戶通過網絡,去訪問和使用機房里的計算機資源。
請添加圖片描述

再后來,小型網絡變成了大型網絡,就有了互聯網(Internet)。小型機房變成了大型機房,就有了IDC(Internet Data Center,互聯網數據中心)。
當越來越多的計算機資源和應用服務被集中起來,就變成了——“云計算(Cloud Computing)”。無數的大型機房,就成了“云端”。
請添加圖片描述

虛擬化

如果要對物理資源進行管理,第一步,就是“虛擬化”。

虛擬化是云計算的基礎。簡單來說,虛擬化就是在一臺物理服務器上,運行多臺“虛擬服務器”。這種虛擬服務器,也叫虛擬機(VM,Virtual Machine)。

直接使用物理設備的缺陷:

  1. 缺乏靈活性
  • 時間靈活性:生產或銷毀資源、資源擴容、物理設備的供給流程及設備到貨后的安裝部署冗長;
  • 空間靈活性:可獲取到的資源規模大小不夠靈活,如為應對計算資源峰值購買大量設備;
  • 操作靈活性:設備上架、安裝、配置都需要人工完成大量工作,大量的設備集群運維工作。
  1. 隔離性差:為了提高資源利用率,可能會將多個服務部署到同一個物理設備上,這可能會導致多個服務之間相互干擾、隔離性差,嚴重時甚至會造成安全問題。
  2. 不可復制:當一個物理設備上的應用需要擴展時,只能在增加物理設備后,再做一遍物理資源配置、應用發布、網絡配置等重復性工作,無法快捷地實現對應用的復制和粘貼。

從表面來看,這些虛擬機都是獨立的服務器,但實際上,它們共享物理服務器的CPU、內存、硬件、網卡等資源。
在這里插入圖片描述請添加圖片描述

虛擬機監視器可以對捕獲的特權指令進行替換操作,從而完整地模擬出某個虛擬機監視器下的特權操作。“陷阱+模擬”機制從本質上保證了可影響虛擬機監視器正常運行的指令由虛擬機監視器模擬執行,而大部分非敏感指令還是照常運行在物理CPU上。
請添加圖片描述

簡單來說,虛擬化就是通過模仿下層原有的功能模塊創造接口來“欺騙”上層的機制。通常的做法是在整個系統架構中增加一個抽象層,負責分割下層的物理資源,然后組合成邏輯資源供上層使用。

云計算

直接使用虛擬機的缺陷:

  • 時間靈活性:虛擬化服務并非隨時可用,同時虛擬化的過程還需要比較復雜的人工配置,隨著集群規模的擴大,人工配置愈加復雜、耗時。所以,僅通過虛擬化軟件管理的物理服務器規模并不是特別大,一般是幾十臺至百臺的規模。

  • 空間靈活性:缺乏分布式部署,無法實現資源彈性擴展。當用戶數量增多時,虛擬化軟件所能管理的集群規模遠未達到理想的程度,很可能造成資源不夠。所以,隨著對集群規模的需求越來越大,必須采取自動化的流程來實現資源彈性擴展。

  • 操作靈活性:缺乏統一的自動化管理。雖然創建一臺虛擬機的過程相對較為基礎,但是操作的靈活性意味著用戶可以更方便、迅速地對資源進行更進一步的管理操作,所有操作都可以通過自動化腳本來實現。

云計算的目標,就是解決這三大靈活性的問題。云控制平臺通過調度器(Scheduler)來管理由幾千臺物理服務器抽象而來的虛擬資源池,無論用戶需要多少CPU、內存、硬盤資源的虛擬機,調度器都會自動在資源池中匹配到最合適的資源,通過虛擬機的形式供給資源,并做好配置。這個階段我們稱為“池化”或者“云化”。虛擬化的能力和靈活性到了這個階段,才可以被稱為“云計算”,在這之前都只能叫作“虛擬化”。

什么是云計算?

云計算指IT基礎設施的交付和使用模式,用戶可以通過網絡,以按需、易擴展的方式獲得所需計算機資源。

第一層次,是最底層的硬件資源,主要包括CPU(計算資源),硬盤(存儲資源),還有網卡(網絡資源)等。

第二層次,用戶不直接使用CPU、硬盤、網卡,廠商把操作系統(例如Windows、Linux)裝好,把數據庫軟件裝好,用戶直接使用。

第三層次,廠商不但要裝好操作系統這些基本的,還要把具體的應用軟件裝好,例如FTP服務端軟件、在線視頻服務端軟件等,用戶可以直接使用服務。

IaaS: Infrastructure-as-a-Service(基礎設施即服務)

用戶可以通過管理頁面或者API創建一臺EC2實例(虛擬機),然后直接通過瀏覽器或者通過SSH客戶端登錄控制臺,而不再需要考慮物理服務器購買、網絡的布線、操作系統安裝等煩瑣的傳統IT基礎運維工作。
請添加圖片描述
請添加圖片描述

PaaS: Platform-as-a-Service(平臺即服務)

它直接為用戶提供一套平臺,包括語言運行環境、編程框架及數據存儲中間件等一系列功能。這個平臺可以是Java開發平臺,用戶只需要在遵守平臺開發規范的前提下,編寫自己的業務代碼,單擊運行,平臺就會自動完成代碼編譯和打包,以及程序所需的數據存儲(例如MySQL),即通過調用SDK或者API就可以使用平臺,使得用戶可以更加關注自己的業務代碼的編寫。
請添加圖片描述

SaaS: Software-as-a-Service(軟件即服務)

它是最高層的抽象,對于最終用戶,它不關心任何技術相關內容,以服務的方式交付。我們使用的在線云編輯器就是一種SaaS服務,只需要通過瀏覽器就可以在線編輯Word或者PPT,并且可以云端保存,而且只要在能夠連接到互聯網的情況下,都可以編輯,用戶不需要關心背后的實現細節。SaaS將應用的最終形態直接交付使用者,向用戶暴露更少的技術細節。

看懂云計算、虛擬化和容器,這一篇就夠啦

容器化

使用虛擬化一段時間后,發現它存在一些問題:不同的用戶,有時候只是希望運行各自的一些簡單程序,跑一個小進程。為了不相互影響,就要建立虛擬機。如果建虛擬機,顯然浪費就會有點大,而且操作也比較復雜,花費時間也會比較長。而且,有的時候,想要遷移自己的服務程序,就要遷移整個虛擬機。顯然,遷移過程也會很復雜。所以就引入了“容器(Container)”。
請添加圖片描述

容器也是虛擬化,但是屬于“輕量級”的虛擬化。它的目的和虛擬機一樣,都是為了創造“隔離環境”。但是,它又和虛擬機有很大的不同——虛擬機是操作系統級別的資源隔離,而容器本質上是進程級的資源隔離。

容器與傳統虛擬機的對比

  1. 傳統虛擬機是需要安裝整個操作系統的,然后再在上面安裝業務應用,啟動應用,通常需要幾分鐘去啟動應用,而容器是直接使用鏡像來運行業務容器的,其容器啟動屬于秒級別;
  2. 容器需要的資源更少,容器在操作系統級別進行虛擬化,容器容器和內核交互,幾乎沒有性能損耗,而虛擬機運行著整個操作系統,占用物理機的資源就比較多;
  3. 容器更輕量,容器(docker)的架構可以共用一個內核與共享應用程序庫(yum),所占內存極小;同樣的硬件環境,容器運行的鏡像數遠多于虛擬機數量,對系統的利用率非常高;
  4. 隔離級別,與虛擬機相比,容器隔離性更弱,屬于進程之間的隔離,虛擬機可實現系統級別隔離;
  5. 容器的安全性也更弱,容器的租戶root和宿主機root相同,一旦容器內的用戶從普通用戶權限提升為root權限,它就直接具備了宿主機的root權限,進而可進行無限制的操作。虛擬機租戶root權限和宿主機的root虛擬機權限是分離的,可以防止虛擬機突破和彼此交互,而容器至今還沒有任何形式的硬件隔離;
  6. 虛擬化創建是分鐘級別的,容器創建是秒級別的,容器的快速迭代性,決定了無論是開發、測試、部署都可以節省大量時間;

云原生是什么?

Pivotal最新官網對云原生概括可以具體化為4個要點:DevOps+持續交付+微服務+容器,一種構建和運行應用程序的方法。
請添加圖片描述

微服務:微服務的關鍵優勢在于可組合性,將應用分解為一組更小的輕量級服務,而這些服務可通過應用編程接口 (API) 輕松組合并相互連接。

容器和編排:容器是輕量級的可執行組件,包含在任何環境中運行代碼所需的所有元素(包括應用源代碼和依賴項)。容器提供工作負載可移植性,支持“一次構建、隨處運行”的代碼,使開發和部署過程大大簡化。由于它們可以獨立部署,因此還有助于避免各種語言、庫和框架之間的磨合。這種可移植性和靈活性使得容器成為構建微服務架構的理想選擇。

DevOps:云原生應用的開發需要改為采用像 DevOps 這樣的敏捷交付方法,開發者和 IT 運營團隊就可以密切協作,自動執行基礎架構和軟件交付流程。DevOps 可以加快一個想法從提出到部署的整個過程。DevOps 的核心在于,在應用的整個生命周期中,都要確保日常運維任務自動化和環境的標準化,容器可以提供標準化的環境。

持續集成和持續交付 (CI/CD):通過該自動化流程,可以更快地修復、擴縮和部署系統。通過 CI/CD 流水線,可以自動構建、測試和部署應用更改,而無需安排停機時間或等待維護窗口。持續交付可確保軟件發布更可靠、風險更低,從而使得團隊可以更快速、更頻繁地提供新的服務和功能。

采用開源堆棧(K8S+Docker)進行容器化,基于微服務架構提高靈活性和可維護性,借助敏捷方法、DevOps支持持續迭代和運維自動化,利用云平臺設施實現彈性伸縮、動態調度、優化資源利用率。

云原生解決了什么問題?
部署和擴展困難:傳統軟件部署通常需要手動配置和管理,而且在應對大規模流量時很難快速擴展。
環境一致性:開發、測試和生產環境之間的不一致性會導致問題的出現,因為應用在不同環境中的運行可能會產生不同的結果。
資源浪費:傳統部署方式可能會導致資源的浪費,因為通常需要為應用的最高負載進行配置,而在低負載時會浪費資源。
恢復緩慢:基于虛擬機的基礎設施相對于基于微服務的應用程序來說,是緩慢而低效的。因為單個虛擬機啟動/關閉的速度很慢,并且在部署應用程序代碼之前就會帶來巨大的開銷。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165890.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165890.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165890.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電線電纜、漆包線工廠開源MES/生產管理系統/云MES

萬界星空科技專業的漆包線MES系統功能介紹: 從原材料出入庫-拉絲機等設備管理-漆包線稱重打印系統自動入庫(支持多臺秤同時稱重)-建立銷售報價、銷售訂單-生產訂單-支持掃碼出庫及自動揀貨出庫-應收應付賬款-對接各種其他系統及財務系統。 …

便攜式水污染物監測設備的招標參數有哪些

便攜式多參數水質檢測儀參數特點: 便攜式多參數水質檢測儀參數特點: 便攜式多參數水質快速測定儀,根據國家檢測標準(G B ) 及環境部檢測標準(H J )研發生產,本儀器具有檢測快速、操作簡單、測試…

python3實現類似expect shell的交互式與SFTP的腳本

前面寫過一篇關于python實現類似expect shell的交互式能力的文章,現在補全一下加上sftp的能力腳本。 例子在代碼中__example()方法。 依賴paramiko庫,所以需要執行pip install paramiko來安裝。 import os import queue import re import threading im…

綜合實力盤點高性價比還優質的云服務器:亞馬遜云科技仍然領跑市場

如果說云計算是一條流向數字化未來的河流,那亞馬遜云科技毫無疑問是航行在最前面的帆船;如果說云計算是一條通往數字化未來的鐵軌,那亞馬遜云科技就是行駛在最前面的高鐵。接下來回首往昔,以史為鏡,得出云服務器哪家便…

毛里塔尼亞市場開發攻略,收藏一篇就夠了

毛里塔尼亞是非洲西北部的一個國家,也是中國長期援建的一個國家,也是一帶一路上的國家。毛里塔尼亞生產生活資料依賴進口,長期依賴跟我們國家的貿易關系也是比較緊密的,今天就來給大家介紹一下毛里塔尼亞的市場開發公路。文章略長…

Python監控服務進程及自啟動服務方法與實踐

1. 需求概述 當我們在Windows Server環境中部署XX系統的實際應用中,往往會遇到一些運維管理的挑戰。為了確保系統的持續穩定運行,特別是在服務程序因各種原因突然關閉的情況下,我們可以借助Python的強大生態系統來構建一個監控與自動重啟的管…

分布式鏈路追蹤入門篇-基礎原理與快速應用

為什么需要鏈路追蹤? 我們程序員在日常工作中,最常做事情之一就是修bug了。如果程序只是運行在單機上,我們最常用的方式就是在程序上打日志,然后程序運行的過程中將日志輸出到文件上,然后我們根據日志去推斷程序是哪一…

Comsol Multiphysics 6.2 for Mac建模仿真軟件

COMSOL Multiphysics是一款多物理場仿真軟件,旨在幫助工程師、科學家和研究人員解決各種復雜的工程和科學問題。該軟件使用有限元分析方法,可以模擬和分析多個物理場的相互作用,包括結構力學、熱傳導、電磁場、流體力學和化學反應等。 COMSOL…

一些好用的前端小插件(轉自知乎)

一些好用的前端小插件(2) 1. cropper.js Cropper.js 2.0 是一系列用于圖像裁剪的 Web 組件。 官網地址:https://fengyuanchen.github.io/cropperjs/v2/zh/ 2. Vditor Vditor是一款瀏覽器端的 Markdown 編輯器,支持所見即所得、…

2024年度投資策略:AI大模型和半導體國產化加速

今天分享的是AI系列深度研究報告:《2024年度投資策略:AI大模型和半導體國產化加速》。 (報告出品方:東方證券) 報告共計:48頁 前言: 行情回顧與未來展望 電子板塊漲幅轉正,信心逐漸回歸。截至…

人人都會Blazor —— 3.3 參數

參數最常見的使用,目的是使組件可以接收動態數據。 聲明參數 參數使用 [Parameter] 特性的公共 C# 屬性進行定義。 在下面的示例中,內置引用類型 (System.String) 和用戶定義的引用類型 (PanelBody) 作為組件參數進行傳遞。 PanelBody.cs: public class PanelBody {publ…

SQL注入漏洞發現和利用,以及SQL注入的防護

一、背景 SQL注入漏洞是一種常見的軟件安全問題,它發生在應用程序的數據庫層中。其核心原理是將用戶輸入的數據當做代碼來執行,違反了“數據與代碼分離”的原則。具體來說,攻擊者通過構造惡意的SQL查詢語句,使得應用程序在執行SQ…

Android NFC手機上實現卡模擬

1, 問:能否在AndroidNFC手機上實現卡模擬? 答:在技術上可行,但是,對一般開發人員來講,目前看來僅僅是技術上可行。 2, 問:具體如何實現呢? 答&#xff1…

git的使用記錄

GitHub是公有的遠程倉庫,Gitlab是私有的遠程倉庫。 git add file git commit -m "add file" git mv filea fileb git log 顯示提交記錄 git log --oneline 一行的簡略信息顯示 git log --oneline --decorate 顯示當前指針 git reset --ha…

矩陣知識補充

正交矩陣 定義: 正交矩陣是一種滿足 A T A E A^{T}AE ATAE的方陣 正交矩陣具有以下幾個重要性質: A的逆等于A的轉置,即 A ? 1 A T A^{-1}A^{T} A?1AT**A的行列式的絕對值等于1,即 ∣ d e t ( A ) ∣ 1 |det(A)|1 ∣det(A)∣…

通用功能——git 攻略

摘要 本文主要介紹git常用命令的使用方法,同時介紹一些常見問題的處理方法,持續更新中… git命令通用選項 大多數git命令都適用的選項列表如下: -v, --verbose show hash and subject, give twice for upstream branch -q, --quie…

Vim 一下日志文件,Java 進程沒了?

一次端口告警,發現 java 進程被異常殺掉,而根因竟然是因為在問題機器上 vim 查看了 nginx 日志。下面我將從時間維度詳細回顧這次排查,希望讀者在遇到相似問題時有些許啟發。 時間線 15:19 收到端口異常 odin 告警。 狀態:P1故障 名稱:應用端…

黑馬點評筆記 redis實現優惠卷秒殺

文章目錄 難題全局唯一IDRedis實現全局唯一Id 超賣問題問題解決方案樂觀鎖問題 一人一單 難題 要解決優惠卷秒殺的問題我們要考慮到三個個問題,全局唯一ID,超賣問題,一人一單。 全局唯一ID 用戶搶購時,就會生成訂單并保存到同一…

【git】pip install git+https://github.com/xxx/xxx替換成本地下載編譯安裝解決網絡超時問題

目錄 🌑🌑 背景 🌒 🌒作用 🌔🌔 問題 🌔🌔解決方案 🌙方法一 🌙方法二 🌝🌝我的解決方案 整理不易,歡迎一鍵三連…

7-12 統計投票情況(集合)

7-12 統計投票情況(集合) 分數 10 作者 python課程組 單位 福州大學至誠學院 利用集合分析活動投票情況。 第一小隊有五名隊員,序號是1,2,3,4,5;第二小隊也有五名隊員,序號6,7,8,9,10。 輸入一個由得票隊員編號組成的…