[轉]云原生到底是什么?

📋 個人簡介

  • 💖 作者簡介:大家好,我是阿牛😜

  • 📝 個人主頁:館主阿牛🔥

  • 🎉 支持我:點贊👍+收藏??+留言📝

  • 💬格言:迄今所有人生都大寫著失敗,但不妨礙我繼續向前!🔥


請添加圖片描述

目錄

    • 📋 個人簡介
  • 前言
    • 云原生的概念
    • 云原生的四大要點
      • 微服務
      • 容器化
      • devops
      • 持續交付
  • 結語

前言

最近老是看到云原生這個概念,閑暇之余也去了解了一下!看了很多文章,對云原生的解釋總是迷迷糊糊,看完云里霧里,經過博主的大量查閱,用我的理解總結一下。

云原生的概念

云原生(Cloud Native)是一個組合詞。我們把它拆分為云和原生兩個詞來看。
“云”即在線網絡,我們都知道傳統的應用都跑在本地服務器上,而本地部署的傳統應用可能需要停機更新,且無法動態擴展等,而‘云’表示應用程序運行在分布式的云環境中,支持頻繁變更,持續交付。
‘原生’表示應用程序在設計之初就考慮到了云平臺的彈性和分布式特性,就是為云設計的。

那么隨著云原生的技術的不斷發展,他的定義也在不斷地迭代和更新,不同的社區和公司對云原生有著不同的理解和定義,感興趣的可以去看一下云原生的發展歷程。

云原生的四大要點

可以簡單地把云原生理解為:云原生 = 微服務 + DevOps + 持續交付 + 容器化

微服務

微服務就是一種軟件架構,使用微服務架構可以將一個大型的應用程序按照功能模塊拆分成多個獨立自治的微服務,每個微服務僅僅實現一種功能,具有很明確的邊界。

使用微服務架構能夠為我們帶來如下好處:
1)服務的獨立部署。
每個服務都是一個獨立的項目,可以獨立部署,不依賴于其他服務,耦合性低。
2)服務的快速啟動。
拆分之后服務啟動的速度要比拆分之前快很多,因為依賴的庫少了,代碼量也少了。
3)更加適合敏捷開發。
敏捷開發以用戶的需求進化為核心,采用迭代、循序漸進的方法進行。服務拆分可以快速發布新版本,修改哪個服務只需要發布對應的服務即可,不用整體重新發布。
4)職責專一,由專門的團隊負責專門的服務。
業務發展迅速時,研發人員也會越來越多,每個團隊可以負責對應的業務線,服務的拆分有利于團隊之間的分工。
5)服務可以動態按需擴容。
當某個服務的訪問量較大時,我們只需要將這個服務擴容即可。
6)代碼的復用。
每個服務都提供 REST API,所有的基礎服務都必須抽出來,很多的底層實現都可以以接口方式提供。

容器化

容器技術是云原生的核心技術,容器是一種相對于虛擬機來說更加輕量的虛擬化技術。能為我們提供一種可移植、可重用的方式來打包、分發和運行程序。

容器的基本思想就是將需要執行的所有軟件打包到一個可執行程序包。例如,將一個 Java 虛擬機、 Tomcat 服務器以及應用程序本身打包進一個容器鏡像。用戶可以在基礎設施環境中使用這個容器鏡像啟動容器并運行應用程序。

而Docker是目前應用最為廣泛的容器引擎,容器化為微服務提供實施保障,起到應用隔離作用,K8S是容器編排系統,用于容器管理,容器間的負載均衡,Docker和K8s都采用Go編寫,(K8s全稱Kubernetes,由首字母K,結尾字母s以及中間的8個字母組成,所以簡稱為K8s)。

容器技術好處如下。

  • 應用程序的創建和部署過程更加敏捷:與虛擬機鏡像相比,使用應用程序的容器鏡像更簡便和高效。
  • 可持續開發、集成和部署:借助容器鏡像的不可變性,可以快速更新或回滾容器鏡像版本,進行可靠且頻繁的容器鏡像構建和部署。
  • 提供環境一致性:標準化的容器鏡像可以保證開發、測試和生產環境的一致性,不必為不同環境的細微差別而苦惱。
  • 提供應用程序的可移植性:標準化的容器鏡像可以保證應用程序運行于 Ubuntu 、 CentOS 等各種操作系統或云環境下。
  • 為應用程序的松耦合架構提供基礎設置:應用程序可以被分解成更小的獨立組件,可以很方便地進行組合和分發。
  • 資源利用率更高。
  • 實現了資源隔離:容器應用程序與主機之間的隔離、容器應用程序之間的隔離可以為運行應用程序提供一定的安全保證。

容器大大簡化了云原生應用程序的分發和部署,可以說容器是云原生應用發展的基石。

devops

DevOps ( Development & Operations ,開發和運維)是軟件開發人員和 IT 運維人員之間的合作過程,是一種工作環境、文化和實踐的集合,目標是高效地自動執行軟件交付和基礎架構更改流程。開發和運維人員通過持續不斷的溝通和協作,可以以一種標準化和自動化的方式快速、頻繁且可靠地交付應用。

云原生應用通常包含多個子功能組件,devops可以大大簡化云原生應用從開發到交付的過程。實現了真正的價值交付。

持續交付

持續交付就是不誤時開發,不停機更新,是一種軟件開發方法,它利用自動化來加快新代碼的發布。在持續交付流程中,開發人員對應用所做的更改可通過自動化被推送至代碼存儲庫或容器鏡像倉庫。

結語

附上一張云原生圖譜

在這里插入圖片描述

歡迎各位參考與指導!!!


---------------------
作者:館主阿牛
來源:CSDN
原文:https://blog.csdn.net/qq_57421630/article/details/123137575?spm=1001.2100.3001.7377&utm_medium=distribute.pc_feed_blog_category.none-task-blog-classify_tag-2.nonecase&depth_1-utm_source=distribute.pc_feed_blog_category.none-task-blog-classify_tag-2.nonecase
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件

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

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

相關文章

【GlobalMapper精品教程】008:如何根據指定區域(shp、kml、cad)下載衛星影像?

本文講解在Globalmapper中根據指定的范圍(shp、kml、cad等格式)進行在線衛星影像的下載方法。 文章目錄 一、根據shp范圍下載谷歌影像1. 加載谷歌影像2. 加載shp矢量范圍3. 根據范圍導出影像二、根據kml范圍下載谷歌影像1. 生成研究區范圍kml2. 根據kml范圍下載影像三、根據CAD…

膛目結舌的代碼技巧!一看就是冷暴力~~~~

你見過哪些令你膛目結舌的代碼技巧? 代碼世界有很多令人大呼小叫的技巧!有的代碼像魔術師一樣巧妙地隱藏了自己,有的像魔法師一樣讓你眼花繚亂,還有的像瑜伽大師一樣靈活自如。它們讓我們驚嘆不已,讓我們覺得自己仿佛置…

聯合線程

聯合線程實際上就是把多線程又聯合成了一個線程,但這里還是要比單線程靈活很多,比如說,我可以讓一個線程到運行到某一個條件再聯合其他線程。當前線程與其他線程聯合在一起,又一種讓出cpu,而且直到別個線程運行完&…

Kafka學習征途:不再依賴ZK的KRaft

【Kafka】| 總結/Edison Zhou1新的KRaft架構在Kafka 2.8之前,Kafka重度依賴于Zookeeper集群做元數據管理和集群的高可用(即所謂的共識服務)。在Kafka 2.8之后,引入了基于Raft協議的KRaft模式,支持取消對Zookeeper的依賴…

探索java世界中的日志奧秘

java日志簡單介紹 對于一個應用程序來說日志記錄是必不可少的一部分。線上問題追蹤,基于日志的業務邏輯統計分析等都離不日志。JAVA領域存在多種日志框架,目前常用的日志框架包括Log4j,Log4j 2,Commons Logging,Slf4j&…

nginx的負載均衡集群

針對域名:vim /usr/local/nginx/conf/vhosts/lb.conf //自定義名稱upstream xrc { //別名server 192.168.0.1:80 weight2; //包含的主機server,負載均衡里面的機器server 192.168.0.2:80 weight1; //權重weight}server {li…

英語名言警句100句

1、寧為百夫長,勝作一書生。——楊炯 Better be a centurion than a scholar. 2、我是閑暇為所有中最的。——蘇格拉底 I am the most leisure of all. 3、立志不堅,終不濟事。——朱熹 If you are not determined, you will not help. 4、人學始知道&am…

RabbitMQ細說之開篇

前言關于消息中間件的應用場景,小伙伴們應該都耳熟能詳了吧,比如經常提到的削峰填谷、分布式事務、異步業務處理、大數據分析等等,分布式消息隊列成為其中比較關鍵的橋梁,也就意味著小伙伴們得掌握相關技能;當下相對比…

【Java】五種常見排序之-----------冒泡排序

冒泡排序: 原理: 將關鍵字較小的值不斷地上浮,將關鍵字值較大的不斷下沉;時間復雜度:O(n^2)空間復雜度:最優(即已經排好序)為0,平均空間復雜度為O(1);核心代碼:for(int i…

混戰的低代碼江湖,如何區分「李逵」和「李鬼」?

作者:APICloud 創始人劉鑫 這兩年,無論是資本層面,還是企業IT部門的關注,“低代碼”都是絕對的熱點。互聯網圈也似在一夜之間冒出了各種各樣的低代碼公司。 到底什么是低代碼?低代碼是新技術么?低代碼開發能…

關于捕獲鍵盤信息的processDialogkey方法2--具體應用

自定義控件里的keydown方法無法捕獲所有的按鍵消息的處理方法1(自定義控件里的keydown方法無法獲取的鍵值如上下左右鍵等) 處理辦法具體如下: 1、首先在自定義控件UserControl1中重寫ProcessDialogKey方法 自定義控件UserControl1中重寫Proce…

指針

指針 題目一: 計算兩數的和與差 本題要求實現一個計算輸入的兩數的和與差的簡單函數。 函數接口定義: void sum_diff( float op1, float op2, float psum, float pdiff ); 其中op1和op2是輸入的兩個實數,psum和pdiff是計算得出的和與差。 裁判…

【MapGIS精品教程】006:MapGIS根據經緯度計算各比例尺圖幅編號

己知某點的經緯度或圖幅西南圖廓點的經緯度,計算該點所在圖幅號。 例題一:某點的經度為11433′45″,緯度為3922′30″,計算所在1:250000圖幅的編號。 文章目錄 1. 公式計算編號的方法2. 軟件計算編號的方法1. 公式計算編號的方法 求解過程: 第一步,利用下列公式計算其所…

寫出一個緩存系統的偽代碼001

/*** 寫出一個緩存系統的偽代碼*/ public class CacheDemo {private Map<String, Object> map new HashMap<String, Object>();public static void main(String[] args) {// TODO Auto-generated method stub} public synchronized Object getData(String key)…

分析完百年飛機空難數據,我發現了這幾條“保命”小秘訣

來 源&#xff5c;Giao數據 數 據 | YaJie 文 章 | 張子豪,YaJie 本文爬取了飛機失事網1908-2020年空難相關數據&#xff0c;包括空難發生次數、機組和乘客的死亡人數與死亡率、不同季節的空難發生次數、空難相關文本的關鍵詞、空難高發地、空難高發航空公司、空難高發機型以…

用 QuestPDF操作生成PDF更快更高效!

QuestPDFQuestPDF是一個開源的工具庫&#xff0c;可以在.NET或者.Net Core中生成pdf文檔它提供了一個布局引擎&#xff0c;設計時考慮到了完整的分頁支持以及靈活性要求&#xff01;比市面上常見的Aspose和iTextSharp好用太多了&#xff01;GitHub地址安裝Install-Package Ques…

ASP.NET vs MVC vs WebForms

許多ASP.NET開發人員開始接觸MVC認為MVC與ASP.NET完全沒有關系&#xff0c;是一個全新的Web開發&#xff0c;事實上ASP.NET是創建WEB應用的框架而MVC是能夠用更好的方法來組織并管理代碼的一種更高級架構體系&#xff0c;所以可以稱之為ASP.NET MVC。 我們可將原來的ASP.NET稱為…

產品經理有哪些類型?

不知道大家是如何給產品經理這個職業進行分類&#xff0c; 按負責的產品&#xff1f;按等級&#xff1f;按工作年限&#xff1f;按工作方向等&#xff1f; 一、按工作內容分 1. 功能設計產品經理 最常見的了&#xff0c;負責的工作就是設計出功能來。從 APP 的界面&#xff0…

在Blazor 中自定義權限驗證

Blazor是什么Blazor 是微軟在 .NET 里推出的一個 WEB 客戶端 UI 交互的框架&#xff0c;使用 Blazor 你可以代替 JavaScript 來實現自己的頁面交互邏輯&#xff0c;可以很大程度上進行 C# 代碼的復用&#xff0c;Blazor 對于 .NET 開發人員來說是一個不錯的選擇。需求背景其實我…

看出每個應用程序最高可用內存是多少

int maxMemory (int) (Runtime.getRuntime().maxMemory() / 1024); Log.d("TAG", "Max memory is " maxMemory "KB"); 轉載于:https://www.cnblogs.com/coderwjq/p/6501639.html