日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 架構師社區(qū)
[導讀]近年來,隨著云計算概念和技術的普及,云原生一詞也越來越熱門,無論是應用還是安全,凡是和云相關的,都要在云后面加上原生二字,好像不提云原生,在技術上就落后了一大截。一、云原生產生背景隨著云計算技術的發(fā)展,企業(yè)上云已成為趨勢,越來越多的企業(yè)都已將應用部署到了云上。但是應用上云并不意味...


近年來,隨著云計算概念和技術的普及,云原生一詞也越來越熱門,無論是應用還是安全,凡是和云相關的,都要在云后面加上原生二字,好像不提云原生,在技術上就落后了一大截。

一、云原生產生背景


隨著云計算技術的發(fā)展,企業(yè)上云已成為趨勢,越來越多的企業(yè)都已將應用部署到了云上。但是應用上云并不意味著就能充分利用云平臺的優(yōu)勢。目前,大部分云化的應用,都是基于傳統(tǒng)的軟件架構來搭建的,然后再移植到云上去運行,和云平臺的整合度非常低,主要表現在以下幾個方面:


1. 操作系統(tǒng)依賴強
傳統(tǒng)應用程序和底層操作系統(tǒng)、硬件、存儲和后備服務之間存在緊密的依賴關系,這些依賴關系使得應用程序在跨越云基礎設施進行遷移和擴展時非常復雜且有風險。


2. 系統(tǒng)緊耦合
傳統(tǒng)的企業(yè)應用多采用單體架構,將許多不同的功能模塊捆綁在一個部署包中,導致功能模塊之間產生不必要的依賴,并導致開發(fā)和部署過程中喪失敏捷性,無法獨立的部署、發(fā)布更新、重啟。


3. 手動化擴展
通過手工管理基礎設施,包括手工編寫管理服務器、網絡和存儲的配置腳本。在大規(guī)模復雜的操作中,操作人員在診斷問題時會很慢,而且無法大規(guī)模地實施。手工制作的自動化腳本還有可能將人為錯誤硬編碼到基礎設施中。


4. 恢復緩慢
基于虛擬機的基礎設施相對于基于微服務的應用程序來說,是緩慢而低效的。因為單個虛擬機啟動/關閉的速度很慢,并且在部署應用程序代碼之前就會帶來巨大的開銷。


5. 瀑布開發(fā)
傳統(tǒng)應用的開發(fā)模式,IT團隊定期發(fā)布軟件,通常間隔幾周或幾個月。盡管發(fā)布的許多組件已經提前準備好了,并且沒有依賴關系,也必須等待版本中的其他組件??蛻粝胍墓δ鼙谎舆t,企業(yè)失去贏得客戶和增加收入的機會。


總體來說,提供方便的基礎設施,只是對云計算最初級的利用(提升利用率,按需使用,不夠了隨時擴容),無法充分發(fā)揮云計算的優(yōu)勢,要想充分發(fā)揮云計算的優(yōu)勢(彈性、高可用性、易擴展性),就必須進行真正的云化,不僅僅是基礎設施和平臺的變化,應用也需要做出改變,這就需要擯棄傳統(tǒng)的方法,在架構設計、開發(fā)方式、部署維護等各個階段和方面都基于云的特點重新設計,從而建設全新的云化的應用,也就是云原生的應用。


二、云原生的定義


關于什么是云原生,不同的人定義不同,目前比較權威的定義主要來自Pivotal公司和云原生計算基金會(Cloud Native Computing Foundation,簡稱CNCF)。


1. Pivotal的定義
Pivotal公司是云原生應用的提出者,并推出了Cloud Foundry和Spring系列開發(fā)框架。早在2015年,Pivotal公司的Matt Stine寫了一本名為《遷移到云原生應用架構》的小冊子,其中探討了云原生應用架構的幾個主要特征:符合12因素的應用、面向微服務架構、自服務敏捷架構、基于API的協(xié)作以及抗脆弱性。


在2017年10月,接受采訪時,Matt Stine對云原生的定義做了小幅調整,將云原生架構定義為具有以下六個特質:模塊化(Modularity)、可觀測性(Observability)、可部署性(Deployability)、可測試性(Testability)、可處理性(Disposability)以及可替換性(Replaceability)。而Pivotal官網對云原生概括為4個要點:DevOps、持續(xù)交付、微服務以及容器化。


萬字長文揭穿你,根本就不懂云原生!

圖 1:Pivotal云原生思想


Matt Stine認為云原生是一個思想的集合,云原生既包含技術(微服務,敏捷基礎設施),也包含管理(DevOps、持續(xù)交付、康威定律以及重組等),云原生也可以說是一系列云技術、企業(yè)管理方法的集合。


2. CNCF的定義

CNCF是在2015年由Google聯(lián)合Linux基金會成立的,它是一個非盈利組織,主要宗旨是統(tǒng)一云計算接口和相關標準,通過技術優(yōu)勢和用戶價值創(chuàng)造一套新的通用容器技術,推動云計算和服務的發(fā)展。起初CNCF對云原生(Cloud Native)的定義包含以下三個方面:


  • 應用容器化

  • 面向微服務架構

  • 應用支持容器的編排調度


到了2018年,隨著云原生生態(tài)的不斷壯大,所有主流云計算供應商都加入了該基金會,且從云原生的全景圖中可以看出云原生正在蠶食原先非云原生應用的部分。


CNCF基金會中的會員以及容納的項目越來越多,該定義已經限制了云原生生態(tài)的發(fā)展,CNCF為云原生進行了重新定位,并于2018年6月11日明確了云原生定義1.0版本:云原生技術有利于各組織在公有云、私有云和混合云等新型動態(tài)環(huán)境中,構建和運行可彈性擴展的應用。云原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式API。


萬字長文揭穿你,根本就不懂云原生!

圖 2:云原生代表技術


這些技術能夠構建容錯性好、易于管理和便于觀察的松耦合系統(tǒng)。結合可靠的自動化手段,云原生技術使工程師能夠輕松地對系統(tǒng)作出頻繁和可預測的重大變更。


三、云原生相關技術


依據CNCF發(fā)布的云原生1.0版本的定義,云原生技術主要包括容器、微服務、服務網格、不可變基礎設施以及聲明式API,下面就這幾類技術做個概述:


1. 容器技術
容器技術和云原生好比一對螺旋體,容器技術催生了云原生思潮,云原生生態(tài)推動了容器技術發(fā)展。從2013年Docker技術誕生,到2015年CNCF這個云原生領域重量級聯(lián)盟成立,這不是歷史的巧合而是歷史的必然。作為云原生關鍵技術之一的容器,從2013年誕生以來一直是行業(yè)關注的焦點之一。


2013年之前,云計算行業(yè)一直在為云原生的正確打開姿勢而操心。Platform as a Service(PaaS)看起來是個有前途的方向。2006年Fotango公司發(fā)布的Zimi服務,可以說是PaaS行業(yè)的鼻祖,具有按使用付費、免運維(Serverless)、API化配置和服務等典型云原生的特征;2008年Google推出Google App Engine(GAE);2011年Pivotal發(fā)布Cloud Foundry。


這些早期的PaaS平臺在云原生領域進行了非常有益的探索,推動了云原生生態(tài)的健康發(fā)展,但是這些早期探索技術并沒有形成大的行業(yè)趨勢,而是局限在一些的特定的領域。直到Docker開源,大家才如夢方醒,原來不是方向不對,而是應用分發(fā)和交付的手段不行。


Docker真正核心的創(chuàng)新是容器鏡像(docker image),一種新型的應用打包、分發(fā)和運行機制。容器鏡像將應用運行環(huán)境,包括代碼、依賴庫、工具、資源文件和元信息等,打包成一種操作系統(tǒng)發(fā)行版無關的不可變更軟件包。


容器鏡像打包了整個容器運行依賴的環(huán)境,以避免依賴運行容器的服務器的操作系統(tǒng),從而實現“build once, run anywhere”。容器鏡像一旦構建完成,就變成read only,成為不可變基礎設施的一份子。


2. 微服務
微服務架構是相對于單體架構來說的,兩者分屬不同的架構風格。在微服務架構中,服務是一個單一的、可獨立部署的軟件組件,它實現了一些有用的功能,服務的API封裝了其內部實現,與單體架構不同,開發(fā)人員無法繞過服務的API直接訪問服務內部的方法和數據,因此,微服務架構強制實現了應用程序的模塊化。


微服務架構的最核心特性是服務之間的松耦合性。服務之間的交互采用API完成,這樣做就封裝了服務的實現細節(jié),從而實現了在不影響客戶端的情況下,對實現方式做出修改。


微服務架構通過將大的系統(tǒng)按照業(yè)務服務的粒度進行拆分,每個服務可獨立開發(fā)、測試、驗證和部署,這樣分解后,帶來的好處有如下幾點:


  • 使大型的復雜應用程序可以持續(xù)交付和持續(xù)部署

  • 每個服務都相對較小并容易維護

  • 服務可以獨立部署

  • 服務可以獨立擴展

  • 微服務架構可以實現團隊的自治

  • 更容易實驗和采納新的技術

  • 更好的容錯性


3. 服務網格

服務網格是用于處理服務間通信的專用基礎設施層,負責在微服務間進行可靠地請求傳遞。服務網格通常通過一組輕量級網絡代理來實現,這些代理與應用程序代碼一起部署,而不需要感知應用程序本身。


隨著規(guī)模和復雜性的增長,服務網格包含的實現的功能越來越多,它的需求包括服務發(fā)現、負載均衡、故障恢復、指標收集和監(jiān)控以及通常更加復雜的運維需求,例如A/B測試、金絲雀發(fā)布、限流、訪問控制和端到端認證等。其部署結構如下圖所示:


萬字長文揭穿你,根本就不懂云原生!

圖 3:服務網格部署圖


服務網格有如下幾個特點:


  • 應用程序間通訊的中間層

  • 輕量級網絡代理

  • 應用程序無感知

  • 解耦應用程序的重試/超時、監(jiān)控、追蹤和服務發(fā)現


如果用一句話來解釋什么是服務網格,可以將它比作是應用程序或者說微服務間的TCP/IP,負責服務之間的網絡訪問、限流、熔斷和監(jiān)控。對于編寫應用程序來說一般無須關心TCP/IP這一層(比如通過HTTP協(xié)議的RESTful應用),同樣使用服務網格也就無須關系服務之間的那些原來是通過應用程序或者其他框架實現的事情,比如Spring Cloud、OSS,現在只要交給服務網格就可以了,從而極大地方便了微服務應用的開發(fā)。


4. 不可變基礎設施
一個工作負載(比如容器、虛擬機等)一旦部署以后就不會被修改。當需要更新,修復或修改某些內容的時候,只需要將新的、經過驗證的工作負載替換舊的即可。


不可變基礎設施的作用主要體現在系統(tǒng)的穩(wěn)定性方面。傳統(tǒng)的應用程序一旦部署到用戶特定的服務器上以后,服務器系統(tǒng)是會不斷變化的,不是操作系統(tǒng)升級,就是安裝了新的應用,可能引起沖突,導致應用程序需要跟著用戶系統(tǒng)環(huán)境的改變而不斷升級,這中間就會不斷地出現新的問題。而不可變基礎設施就規(guī)避了所有的這些問題,因為云原生應用是部署在不可變的基礎設施上的,因此就不存在變化的問題。


5. 聲明式API
聲明式API是一種比命令式API更高級的接口設計方式,簡單來說,命令式API提供給用戶怎么做的能力,而聲明式API給用戶提供了做什么的能力。


聲明式API是比命令式API更高級的一種接口,舉個例子,假如我們有一個炒菜機,如果炒菜機提供的接口是放油、放調料、放食材、大火、小火等操作,那就是命令式API。


如果炒菜機提供的接口是來盤宮保雞丁、來盤魚香肉絲之類的,那就是聲明式API了。聲明式API比較典型的例子就是數據庫提供的SQL接口,只需要告訴數據庫你需要什么數據即可,至于怎么去獲取這些數據,數據庫自己會去按步驟操作。


四、云原生的意義


傳統(tǒng)的軟件開發(fā)模式,在使用云計算平臺時和使用物理機時沒有什么大的區(qū)別,那么就沒有將云平臺的能力利用充分,在一定程度上導致了資源的浪費。云原生就是用來解決這一類的問題,將云計算平臺的優(yōu)勢發(fā)揮到極致。


讓企業(yè)應用能夠利用云平臺實現資源的按需分配和彈性伸縮,是云原生應用重點關注的地方。它要求云原生應用具備可用性和伸縮性,以及自動化部署和管理能力,可隨處運行,并且能夠通過持續(xù)集成、持續(xù)交付提升研發(fā)、測試與發(fā)布的效率。云原生應用并未完全顛覆傳統(tǒng)的應用,采用云原生的設計模式可以優(yōu)化和改進傳統(tǒng)應用模式,使應用更加適合在云平臺上運行。


云原生存在的意義是解放開發(fā)和運維,而不是讓開發(fā)和運維的工作變得更加復雜和繁重。云原生還關注規(guī)模,分布式系統(tǒng)應該具備將節(jié)點進行水平擴展的能力,能輕易地擴展到成千上萬的規(guī)模,并且這些節(jié)點具備多租戶和自愈能力。云原生使得應用本身具備“柔性”,即面對強大壓力的緩解能力以及壓力過后的恢復能力。


五、云原生當前生態(tài)


作為云原生領域最具權威的組織,CNCF在每年的年度報告中都會提及CNCF Landscape項目,該項目開始于2016年11月,旨在為云原生應用者提供一個資源地圖,幫助企業(yè)和開發(fā)人員快速了解云原生體系的全貌。CNCF Landscape項目在Github上已經獲得超過7000顆星,表明廣大開發(fā)者和使用者對該項目的關注和重視。該項目給出當前云原生生態(tài)的全景圖(如下圖所示),通過該全景圖我們可以了解云原生相關的各種類型的項目和產品:


萬字長文揭穿你,根本就不懂云原生!

圖 4:CNCF生態(tài)全景圖


這張全景圖從云原生的層次結構,以及不同的功能組成上,展現了云原生體系的全貌,可以幫助用戶在不同組件層次去選擇恰當的軟件和工具進行支持。總體來看,云原生生態(tài)分為以下幾層:


1. Kubernetes服務提供商
圖中最底層是Kubernetes認證的服務提供商,以及Kubernetes認證的培訓伙伴。


2. Provisioning
有了物理機或虛擬機后,在運行容器化服務之前,需要為容器準備標準化的基礎環(huán)境,這就是Provisioning這一層的作用。在Provisioning這一層中,分為以下幾個功能組成模塊:


  • Automation
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
關閉