日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

关于云原生,这是最详细的技术知识

發(fā)布時間:2024/9/27 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于云原生,这是最详细的技术知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

戳藍(lán)字“CSDN云計算”關(guān)注我們哦!


本文旨在揭示現(xiàn)代軟件行業(yè)的關(guān)鍵主題——云原生應(yīng)用程序。這篇文章涉及微服務(wù)、容器和無服務(wù)器應(yīng)用程序。在這里,我們將討論這些技術(shù)的實際優(yōu)點和缺點。


微服務(wù)是什么


微服務(wù)架構(gòu)作為構(gòu)建現(xiàn)代軟件應(yīng)用程序的強(qiáng)大方法而享有盛譽。那么什么是微服務(wù)?微服務(wù)可以簡單地描述為,將軟件應(yīng)用程序所需的功能分離為多個獨立的小型軟件服務(wù)或“微服務(wù)”。每個微服務(wù)負(fù)責(zé)自己專注的任務(wù)。為了使微服務(wù)協(xié)同工作以形成大型可伸縮應(yīng)用程序,它們之間進(jìn)行通信和交換數(shù)據(jù)。


微服務(wù)的誕生是因為需要克服單體應(yīng)用程序的復(fù)雜性和不靈活性。單體應(yīng)用程序是一種應(yīng)用程序,其中所有必需的功能一起編碼到同一服務(wù)中。例如,這是一個表示單體活動(如音樂會、演出等)預(yù)訂應(yīng)用程序的圖表,負(fù)責(zé)預(yù)訂支付處理和活動預(yù)訂:




用戶可以使用該應(yīng)用程序預(yù)訂音樂會或演出。需要一個用戶界面。此外,我們還需要一個搜索功能來查找活動、一個預(yù)訂處理程序來處理用戶預(yù)訂然后保存該預(yù)訂、一個活動處理程序來幫助查找活動(確保有可用的座位,然后將其鏈接到預(yù)訂)。在生產(chǎn)級應(yīng)用程序中,需要更多的任務(wù),例如支付處理,但是現(xiàn)在我們主要關(guān)注上圖中概述的四個任務(wù)。


這種單體應(yīng)用程序適用于中小負(fù)載。它在單個服務(wù)器上運行,連接到單個數(shù)據(jù)庫,并且可能使用相同的編程語言編寫。


現(xiàn)在,如果業(yè)務(wù)呈指數(shù)級增長,需要處理數(shù)十萬或數(shù)百萬用戶,會發(fā)生什么?最初,短期解決方案是確保運行應(yīng)用程序的服務(wù)器具有強(qiáng)大的硬件規(guī)格以承受更高的負(fù)載,如果沒有,則向服務(wù)器添加更多內(nèi)存、存儲和處理能力。這稱為垂直縮放,是增加硬件功能的行為(如RAM和硬盤驅(qū)動器容量),以運行繁重的應(yīng)用程序。但是,從長遠(yuǎn)來看,這通常是不可持續(xù)的,因為應(yīng)用程序上的負(fù)載持續(xù)增加。


單體應(yīng)用程序的另一個挑戰(zhàn)是僅限于一種或兩種編程語言所導(dǎo)致的不靈活性。這種不靈活性會影響整體質(zhì)量和應(yīng)用效率。例如,node.js是用于構(gòu)建Web應(yīng)用程序的流行JavaScript框架,而R在數(shù)據(jù)科學(xué)應(yīng)用程序中很流行。單體應(yīng)用程序很難同時使用這兩種技術(shù),而在微服務(wù)應(yīng)用程序中,我們可以簡單地構(gòu)建用R編寫的數(shù)據(jù)科學(xué)服務(wù)和用Node.js編寫的Web服務(wù)。


活動應(yīng)用程序的微服務(wù)版本將采用以下形式:



此應(yīng)用程序?qū)⒛軌蛟诙鄠€服務(wù)器之間進(jìn)行擴(kuò)展,這種做法稱為水平擴(kuò)展。每個服務(wù)都可以使用專用資源部署在不同的服務(wù)器上,也可以部署在不同的容器中(稍后會詳細(xì)介紹)。不同的服務(wù)可以用不同的編程語言編寫,從而實現(xiàn)更大的靈活性,不同的專業(yè)團(tuán)隊可以專注于不同的服務(wù),從而實現(xiàn)應(yīng)用程序的更高整體質(zhì)量。


使用微服務(wù)的另一個顯著優(yōu)勢是易于持續(xù)交付,這是經(jīng)常、在任何時間部署軟件的能力。微服務(wù)使持續(xù)交付更容易的原因是,與單體應(yīng)用程序相比,部署到一個微服務(wù)的新功能不太可能影響其他微服務(wù)。


微服務(wù)的問題


嚴(yán)重依賴微服務(wù)的一個顯著缺點是,隨著數(shù)量和范圍的擴(kuò)大,它們可能變得太復(fù)雜而無法長期管理。有一些方法可以通過利用Prometheus等監(jiān)控工具來檢測問題,像Docker這樣的容器技術(shù)來避免污染主機(jī)環(huán)境并避免過度設(shè)計服務(wù)。但是,這些方法需要付出努力和時間。


云原生應(yīng)用程序


微服務(wù)架構(gòu)非常適合云原生應(yīng)用程序。云原生應(yīng)用程序簡單地定義為從頭開始為云計算架構(gòu)而構(gòu)建應(yīng)用程序。這意味著,如果我們將應(yīng)用程序設(shè)計為預(yù)期將部署在分布式、可擴(kuò)展的基礎(chǔ)架構(gòu)上,我們的應(yīng)用程序就是云原生的。


例如,構(gòu)建具有冗余微服務(wù)架構(gòu)的應(yīng)用程序使得應(yīng)用程序云原生化,因為這種架構(gòu)允許我們的應(yīng)用程序以分布式方式部署,從而使其可擴(kuò)展且?guī)缀蹩偸强捎谩T圃鷳?yīng)用程序不需要始終部署到AWS等公有云,我們可以將其部署到自己的分布式云基礎(chǔ)設(shè)施中(如果有的話)。


實際上,使應(yīng)用程序完全云原生的原因不僅僅是使用微服務(wù)。你的應(yīng)用程序應(yīng)采用持續(xù)交付,這樣你能夠不間斷地為生產(chǎn)應(yīng)用程序提供更新。你的應(yīng)用程序還應(yīng)該使用消息隊列和容器、無服務(wù)器等技術(shù)(容器和無服務(wù)器是現(xiàn)代軟件架構(gòu)的重要主題)。


云原生應(yīng)用程序假定可以訪問眾多服務(wù)器節(jié)點,可以訪問預(yù)先部署的軟件服務(wù)(如消息隊列或負(fù)載均衡器),易于與持續(xù)交付服務(wù)集成等。


如果將云原生應(yīng)用程序部署到AWS或Azure等商業(yè)云,則應(yīng)用程序可以選擇使用只能在云上用的軟件服務(wù)。例如,DynamoDB是一個功能強(qiáng)大的數(shù)據(jù)庫引擎,只能在AWS上用于生產(chǎn)應(yīng)用程序。另一個例子是Azure中的DocumentDB數(shù)據(jù)庫。還有僅云的消息隊列,例如Amazon Simple Queue Service(SQS),可用于允許AWS云中的微服務(wù)之間的通信。


如前所述,云原生微服務(wù)應(yīng)設(shè)計為允許服務(wù)之間的冗余。如果我們以活動預(yù)訂應(yīng)用程序為例,應(yīng)用程序?qū)⑷缦滤?#xff1a;



每個微服務(wù)將分配多個服務(wù)器節(jié)點,允許部署冗余微服務(wù)架構(gòu)。如果主節(jié)點或服務(wù)因任何原因而失敗,則輔助節(jié)點可以接管以確保云原生應(yīng)用程序的持久可靠性和可用性。這種可用性對于電子商務(wù)平臺等不容錯的應(yīng)用程序至關(guān)重要,因為停機(jī)時間會導(dǎo)致大量的收入損失。


云原生應(yīng)用程序為開發(fā)人員、企業(yè)和初創(chuàng)公司提供了巨大價值。


Prometheus是一個值得一提的微服務(wù)和云計算領(lǐng)域的工具。Prometheus是一個開源系統(tǒng)監(jiān)控和警報工具,可用于監(jiān)控復(fù)雜的微服務(wù)架構(gòu),并在需要采取措施時發(fā)出警報。Prometheus最初是由SoundCloud創(chuàng)建的,用于監(jiān)控他們的系統(tǒng),后來逐漸發(fā)展成為一個獨立的項目。該項目現(xiàn)在是云原生計算基礎(chǔ)的一部分,該基礎(chǔ)是為云原生應(yīng)用程序構(gòu)建可持續(xù)生態(tài)系統(tǒng)的基礎(chǔ)。


云原生的限制


對于云原生應(yīng)用程序,如果需要遷移部分或全部應(yīng)用程序,你將面臨一些挑戰(zhàn)。這是由多種原因造成的,具體取決于部署應(yīng)用程序的位置。


例如,如果你的云原生應(yīng)用程序部署在AWS等公有云上,則云原生API不是跨云平臺的。因此,應(yīng)用程序中使用的DynamoDB數(shù)據(jù)庫API僅適用于AWS,但不適用于Azure,因為DynamoDB僅屬于AWS。API也永遠(yuǎn)不會在本地環(huán)境中工作,因為DynamoDB在生產(chǎn)中只能在AWS中用。


另一個原因是因為在構(gòu)建一些云原生應(yīng)用程序時會做出一些假設(shè),例如在需要時可以使用幾乎無限數(shù)量的服務(wù)器節(jié)點,并且可以非??焖俚厥褂眯碌姆?wù)器節(jié)點。在需要購買真正的服務(wù)器、網(wǎng)絡(luò)硬件和布線的本地數(shù)據(jù)中心環(huán)境中,有時難以保證這些假設(shè)。

容器


軟件容器技術(shù)是下一個需要討論以解釋云原生應(yīng)用程序的關(guān)鍵技術(shù)。容器只是將一些軟件封裝在隔離的用戶空間或“容器”中的想法。


例如,MySQL數(shù)據(jù)庫可以在容器內(nèi)部隔離,其中存在環(huán)境變量和它所需的配置。容器外部的軟件默認(rèn)情況下不會看到容器內(nèi)包含的環(huán)境變量或配置。多個容器可以存在于同一本地虛擬機(jī)、云虛擬機(jī)或硬件服務(wù)器上。

容器提供了在同一臺機(jī)器上運行眾多隔離了的軟件服務(wù)的能力,包括所有配置、軟件依賴關(guān)系、運行時、工具和附帶文件。在云環(huán)境中,這種能力轉(zhuǎn)化為節(jié)省的成本和工作量,因為為每個微服務(wù)配置和購買服務(wù)器節(jié)點的需求將減少,不同的微服務(wù)可以部署在同一主機(jī)上而不會相互干擾。容器與微服務(wù)架構(gòu)相結(jié)合,是構(gòu)建現(xiàn)代、便攜、可擴(kuò)展且經(jīng)濟(jì)高效的軟件的強(qiáng)大工具。在生產(chǎn)環(huán)境中,需要多個服務(wù)器節(jié)點與眾多容器相結(jié)合才能實現(xiàn)可擴(kuò)展性和冗余。


除了微服務(wù)隔離之外,容器還為云原生應(yīng)用程序增加了更多好處。使用容器,你可以將具有所需的所有配置、依賴關(guān)系和環(huán)境變量的微服務(wù)移動到新的服務(wù)器節(jié)點,而無需重新配置環(huán)境,實現(xiàn)強(qiáng)大的可移植性。


由于軟件容器技術(shù)的強(qiáng)大和普及,一些新的操作系統(tǒng),如CoreOS或Photon OS,是為用作容器的主機(jī)而從頭開始構(gòu)建的。


軟件行業(yè)最受歡迎的軟件容器項目之一是Docker。思科、谷歌和IBM等大公司在其基礎(chǔ)設(shè)施及產(chǎn)品中使用Docker容器。


軟件容器世界中另一個值得注意的項目是Kubernetes。Kubernetes是一個允許自動化容器部署、管理和擴(kuò)展的工具。它是由谷歌建立的,以便管理容器(每周數(shù)十億個)。Kubernetes提供了一些強(qiáng)大的功能,例如容器之間的負(fù)載均衡、故障容器的重新啟動以及容器使用的存儲編排。該項目和Prometheus都是云原生基礎(chǔ)的一部分。


容器的復(fù)雜性


在容器的情況下,有時管理它們的任務(wù)可能變得相當(dāng)復(fù)雜,原因與管理不斷增加的微服務(wù)數(shù)量相同。隨著容器或微服務(wù)的規(guī)模不斷擴(kuò)大,需要有一種機(jī)制來識別每個容器或微服務(wù)的部署位置、目的是什么以及它們需要什么資源保持運行。


無服務(wù)器應(yīng)用程序


無服務(wù)器架構(gòu)是一種新的軟件架構(gòu)范式,它因為AWS Lambda服務(wù)而推廣。為了完全理解無服務(wù)器應(yīng)用程序,有助于了解一個稱為功能即服務(wù)或簡稱FaaS的重要概念。


FaaS的理念是,諸如亞馬遜之類的云提供商甚至是諸如Fission.io或funktion之類的本地軟件都可以提供服務(wù),其中用戶可以請求遠(yuǎn)程運行的功能以執(zhí)行非常特定的任務(wù)。功能結(jié)束后,這些結(jié)果將返回給用戶。不維護(hù)任何服務(wù)或有狀態(tài)數(shù)據(jù),并且用戶將功能代碼提供給運行該功能的服務(wù)。


使用恰當(dāng)無服務(wù)器架構(gòu)設(shè)計的云原生生產(chǎn)應(yīng)用程序背后的想法是,不構(gòu)建預(yù)期持續(xù)運行的多個微服務(wù)以執(zhí)行單個任務(wù),而是構(gòu)建一個與FaaS結(jié)合的微服務(wù)較少的應(yīng)用程序,其中FaaS涵蓋不需要持續(xù)運行服務(wù)的任務(wù)。


FaaS是一種比微服務(wù)更小的結(jié)構(gòu)。例如,在我們之前介紹的活動預(yù)訂應(yīng)用程序的情況下,有多個微服務(wù)涵蓋不同的任務(wù)。如果我們使用無服務(wù)器應(yīng)用程序模型,一些微服務(wù)會被替換為用于相同目的的許多功能。


這是一個使用無服務(wù)器架構(gòu)展示應(yīng)用程序的圖:

在此圖中,事件處理程序微服務(wù)以及預(yù)訂處理程序微服務(wù)被許多產(chǎn)生相同功能的功能所取代。這消除了運行和維護(hù)兩個現(xiàn)有微服務(wù)的需要。


無服務(wù)器架構(gòu)的優(yōu)勢在于,不需要配置虛擬機(jī)和/或容器來構(gòu)建利用FaaS的應(yīng)用程序部分。一旦它們的功能結(jié)束,運行這些功能的計算實例從用戶的角度來看就不再存在。此外,需要由用戶監(jiān)控和維護(hù)的微服務(wù)和/或容器的數(shù)量減少,節(jié)省了成本、時間和精力。


無服務(wù)器架構(gòu)為軟件工程師和架構(gòu)師提供了另一種功能強(qiáng)大的軟件構(gòu)建工具,可用于設(shè)計靈活且可擴(kuò)展的軟件。已知的FaaS有Amazon的AWS Lambda、Microsoft的Azure Functions、Google的Cloud Functions等。


無服務(wù)器應(yīng)用程序的另一個定義是使用BaaS或后端作為服務(wù)范式的應(yīng)用程序。?BaaS的想法是,開發(fā)人員只編寫其應(yīng)用程序的客戶端代碼,然后依賴于托管在云中的多個軟件預(yù)構(gòu)建服務(wù)(可通過API訪問)。BaaS在移動應(yīng)用程序編程中很受歡迎,開發(fā)人員可以依賴大量的后端服務(wù)來驅(qū)動應(yīng)用程序的大部分功能。?BaaS服務(wù)的例子有:Firebase和Parse。


無服務(wù)器應(yīng)用程序的缺點


與微服務(wù)和云原生應(yīng)用程序類似,無服務(wù)器架構(gòu)并不適用于所有場景。


FaaS提供的功能本身并不保持狀態(tài),這意味著在編寫功能代碼時需要特別注意。這與全微服務(wù)不同——開發(fā)人員可以完全控制狀態(tài)。盡管有這種限制,但在FaaS的情況下保持狀態(tài)的一種方法是將狀態(tài)傳播到數(shù)據(jù)庫或像Redis這樣的內(nèi)存緩存。


這些功能的啟動時間并不總是很快,因為要有時間分配給FaaS服務(wù)提供商發(fā)送請求,然后在某些情況下啟動運行該功能的計算實例也需要時間。在設(shè)計無服務(wù)器應(yīng)用程序時必須考慮這些延遲。


FaaS不像微服務(wù)那樣持續(xù)運行,這使得它們不適合任何需要持續(xù)運行軟件的任務(wù)。


無服務(wù)器應(yīng)用程序具有與其他云原生應(yīng)用程序相同的限制,其中應(yīng)用程序從一個云提供商到另一個云提供商,或從云到本地環(huán)境的可移植性因供應(yīng)商鎖定而變得具有挑戰(zhàn)性。


結(jié)論


云計算架構(gòu)為開發(fā)高效、可擴(kuò)展且可靠的軟件開辟了道路。本文介紹了云計算領(lǐng)域的一些重要概念,如微服務(wù)、云原生應(yīng)用程序、容器和無服務(wù)器應(yīng)用程序。


微服務(wù)是大多數(shù)可擴(kuò)展的云原生應(yīng)用程序的構(gòu)建塊,它們將應(yīng)用程序任務(wù)分解為各種有效的服務(wù)。容器是如何將微服務(wù)隔離并安全地部署到生產(chǎn)環(huán)境而不污染它們的方式。無服務(wù)器應(yīng)用程序?qū)?yīng)用程序任務(wù)分離為更小的構(gòu)造,這些構(gòu)造通常稱為可通過API使用的功能。云原生應(yīng)用程序利用所有這些架構(gòu)模式來構(gòu)建可擴(kuò)展、可靠且始終可用的軟件。


原文鏈接:

  • http://superuser.openstack.org/articles/modern-cloud-native-architecture-what-you-need-to-know-about-micro-services-containers-and-serverless/

  • http://superuser.openstack.org/articles/modern-cloud-native-architectures-microservices-containers-and-serverless-part-2/

  • 推薦閱讀

    • 8 年后重登王座,Python 再度成為 TIOBE 年度編程語言

    • 心疼!能為程序員男友做些什么嗎?

    • 2019年人工智能行業(yè)又進(jìn)入冬天了嗎?

    • 以太坊升級的拖油瓶,竟只是這幾行代碼

    • 程序員有話說 | 程序猿在乘地鐵的時候都在想什么?

    • 清華北大“世界排名斷崖式下跌”?

    • Spark+Alluxio性能調(diào)優(yōu)十大技巧

    • 從云計算到AI:NetApp的數(shù)據(jù)網(wǎng)絡(luò)轉(zhuǎn)型之道


    1.微信群:

    添加小編微信:color_ld,備注“進(jìn)群+姓名+公司職位”即可,加入【云計算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!


    2.征稿:

    投稿郵箱:liudan@csdn.net;微信號:color_ld。請備注投稿+姓名+公司職位。

    喜歡就點擊“好看”吧!

    總結(jié)

    以上是生活随笔為你收集整理的关于云原生,这是最详细的技术知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。