新聞中心
現(xiàn)代云原生架構(gòu):關(guān)于微服務(wù)、容器和無服務(wù)器你需要了解的
作者:開源云中文社區(qū) 2018-10-19 10:49:53
服務(wù)器
云原生 本文旨在揭示現(xiàn)代軟件行業(yè)的關(guān)鍵主題——云原生應(yīng)用程序。這篇文章涉及微服務(wù)、容器和無服務(wù)器應(yīng)用程序。在這里,我們將討論這些技術(shù)的實(shí)際優(yōu)點(diǎn)和缺點(diǎn)。

甘南ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
本文旨在揭示現(xiàn)代軟件行業(yè)的關(guān)鍵主題——云原生應(yīng)用程序。這篇文章涉及微服務(wù)、容器和無服務(wù)器應(yīng)用程序。在這里,我們將討論這些技術(shù)的實(shí)際優(yōu)點(diǎn)和缺點(diǎn)。
微服務(wù)
微服務(wù)架構(gòu)作為構(gòu)建現(xiàn)代軟件應(yīng)用程序的強(qiáng)大方法而享有盛譽(yù)。那么什么是微服務(wù)?微服務(wù)可以簡單地描述為,將軟件應(yīng)用程序所需的功能分離為多個(gè)獨(dú)立的小型軟件服務(wù)或“微服務(wù)”。每個(gè)微服務(wù)負(fù)責(zé)自己專注的任務(wù)。為了使微服務(wù)協(xié)同工作以形成大型可伸縮應(yīng)用程序,它們之間進(jìn)行通信和交換數(shù)據(jù)。
微服務(wù)的誕生是因?yàn)樾枰朔误w應(yīng)用程序的復(fù)雜性和不靈活性。單體應(yīng)用程序是一種應(yīng)用程序,其中所有必需的功能一起編碼到同一服務(wù)中。例如,這是一個(gè)表示單體活動(dòng)(如音樂會(huì)、演出等)預(yù)訂應(yīng)用程序的圖表,負(fù)責(zé)預(yù)訂支付處理和活動(dòng)預(yù)訂:
用戶可以使用該應(yīng)用程序預(yù)訂音樂會(huì)或演出。需要一個(gè)用戶界面。此外,我們還需要一個(gè)搜索功能來查找活動(dòng)、一個(gè)預(yù)訂處理程序來處理用戶預(yù)訂然后保存該預(yù)訂、一個(gè)活動(dòng)處理程序來幫助查找活動(dòng)(確保有可用的座位,然后將其鏈接到預(yù)訂)。在生產(chǎn)級(jí)應(yīng)用程序中,需要更多的任務(wù),例如支付處理,但是現(xiàn)在我們主要關(guān)注上圖中概述的四個(gè)任務(wù)。
這種單體應(yīng)用程序適用于中小負(fù)載。它在單個(gè)服務(wù)器上運(yùn)行,連接到單個(gè)數(shù)據(jù)庫,并且可能使用相同的編程語言編寫。
現(xiàn)在,如果業(yè)務(wù)呈指數(shù)級(jí)增長,需要處理數(shù)十萬或數(shù)百萬用戶,會(huì)發(fā)生什么?最初,短期解決方案是確保運(yùn)行應(yīng)用程序的服務(wù)器具有強(qiáng)大的硬件規(guī)格以承受更高的負(fù)載,如果沒有,則向服務(wù)器添加更多內(nèi)存、存儲(chǔ)和處理能力。這稱為垂直縮放,是增加硬件功能的行為(如RAM和硬盤驅(qū)動(dòng)器容量),以運(yùn)行繁重的應(yīng)用程序。但是,從長遠(yuǎn)來看,這通常是不可持續(xù)的,因?yàn)閼?yīng)用程序上的負(fù)載持續(xù)增加。
單體應(yīng)用程序的另一個(gè)挑戰(zhàn)是僅限于一種或兩種編程語言所導(dǎo)致的不靈活性。這種不靈活性會(huì)影響整體質(zhì)量和應(yīng)用效率。例如,node.js是用于構(gòu)建Web應(yīng)用程序的流行JavaScript框架,而R在數(shù)據(jù)科學(xué)應(yīng)用程序中很流行。單體應(yīng)用程序很難同時(shí)使用這兩種技術(shù),而在微服務(wù)應(yīng)用程序中,我們可以簡單地構(gòu)建用R編寫的數(shù)據(jù)科學(xué)服務(wù)和用Node.js編寫的Web服務(wù)。
活動(dòng)應(yīng)用程序的微服務(wù)版本將采用以下形式:
此應(yīng)用程序?qū)⒛軌蛟诙鄠€(gè)服務(wù)器之間進(jìn)行擴(kuò)展,這種做法稱為水平擴(kuò)展。每個(gè)服務(wù)都可以使用專用資源部署在不同的服務(wù)器上,也可以部署在不同的容器中(稍后會(huì)詳細(xì)介紹)。不同的服務(wù)可以用不同的編程語言編寫,從而實(shí)現(xiàn)更大的靈活性,不同的專業(yè)團(tuán)隊(duì)可以專注于不同的服務(wù),從而實(shí)現(xiàn)應(yīng)用程序的更高整體質(zhì)量。
使用微服務(wù)的另一個(gè)顯著優(yōu)勢(shì)是易于持續(xù)交付,這是經(jīng)常、在任何時(shí)間部署軟件的能力。微服務(wù)使持續(xù)交付更容易的原因是,與單體應(yīng)用程序相比,部署到一個(gè)微服務(wù)的新功能不太可能影響其他微服務(wù)。
微服務(wù)的問題
嚴(yán)重依賴微服務(wù)的一個(gè)顯著缺點(diǎn)是,隨著數(shù)量和范圍的擴(kuò)大,它們可能變得太復(fù)雜而無法長期管理。有一些方法可以通過利用Prometheus等監(jiān)控工具來檢測(cè)問題,像Docker這樣的容器技術(shù)來避免污染主機(jī)環(huán)境并避免過度設(shè)計(jì)服務(wù)。但是,這些方法需要付出努力和時(shí)間。
云原生應(yīng)用程序
微服務(wù)架構(gòu)非常適合云原生應(yīng)用程序。云原生應(yīng)用程序簡單地定義為從頭開始為云計(jì)算架構(gòu)而構(gòu)建應(yīng)用程序。這意味著,如果我們將應(yīng)用程序設(shè)計(jì)為預(yù)期將部署在分布式、可擴(kuò)展的基礎(chǔ)架構(gòu)上,我們的應(yīng)用程序就是云原生的。
例如,構(gòu)建具有冗余微服務(wù)架構(gòu)的應(yīng)用程序使得應(yīng)用程序云原生化,因?yàn)檫@種架構(gòu)允許我們的應(yīng)用程序以分布式方式部署,從而使其可擴(kuò)展且?guī)缀蹩偸强捎谩T圃鷳?yīng)用程序不需要始終部署到AWS等公有云,我們可以將其部署到自己的分布式云基礎(chǔ)設(shè)施中(如果有的話)。
實(shí)際上,使應(yīng)用程序完全云原生的原因不僅僅是使用微服務(wù)。你的應(yīng)用程序應(yīng)采用持續(xù)交付,這樣你能夠不間斷地為生產(chǎn)應(yīng)用程序提供更新。你的應(yīng)用程序還應(yīng)該使用消息隊(duì)列和容器、無服務(wù)器等技術(shù)(容器和無服務(wù)器是現(xiàn)代軟件架構(gòu)的重要主題)。
云原生應(yīng)用程序假定可以訪問眾多服務(wù)器節(jié)點(diǎn),可以訪問預(yù)先部署的軟件服務(wù)(如消息隊(duì)列或負(fù)載均衡器),易于與持續(xù)交付服務(wù)集成等。
如果將云原生應(yīng)用程序部署到AWS或Azure等商業(yè)云,則應(yīng)用程序可以選擇使用只能在云上用的軟件服務(wù)。例如,DynamoDB是一個(gè)功能強(qiáng)大的數(shù)據(jù)庫引擎,只能在AWS上用于生產(chǎn)應(yīng)用程序。另一個(gè)例子是Azure中的DocumentDB數(shù)據(jù)庫。還有僅云的消息隊(duì)列,例如Amazon Simple Queue Service(SQS),可用于允許AWS云中的微服務(wù)之間的通信。
如前所述,云原生微服務(wù)應(yīng)設(shè)計(jì)為允許服務(wù)之間的冗余。如果我們以活動(dòng)預(yù)訂應(yīng)用程序?yàn)槔?,?yīng)用程序?qū)⑷缦滤荆?/p>
每個(gè)微服務(wù)將分配多個(gè)服務(wù)器節(jié)點(diǎn),允許部署冗余微服務(wù)架構(gòu)。如果主節(jié)點(diǎn)或服務(wù)因任何原因而失敗,則輔助節(jié)點(diǎn)可以接管以確保云原生應(yīng)用程序的持久可靠性和可用性。這種可用性對(duì)于電子商務(wù)平臺(tái)等不容錯(cuò)的應(yīng)用程序至關(guān)重要,因?yàn)橥C(jī)時(shí)間會(huì)導(dǎo)致大量的收入損失。
云原生應(yīng)用程序?yàn)殚_發(fā)人員、企業(yè)和初創(chuàng)公司提供了巨大價(jià)值。
Prometheus是一個(gè)值得一提的微服務(wù)和云計(jì)算領(lǐng)域的工具。Prometheus是一個(gè)開源系統(tǒng)監(jiān)控和警報(bào)工具,可用于監(jiān)控復(fù)雜的微服務(wù)架構(gòu),并在需要采取措施時(shí)發(fā)出警報(bào)。Prometheus最初是由SoundCloud創(chuàng)建的,用于監(jiān)控他們的系統(tǒng),后來逐漸發(fā)展成為一個(gè)獨(dú)立的項(xiàng)目。該項(xiàng)目現(xiàn)在是云原生計(jì)算基礎(chǔ)的一部分,該基礎(chǔ)是為云原生應(yīng)用程序構(gòu)建可持續(xù)生態(tài)系統(tǒng)的基礎(chǔ)。
云原生的限制
對(duì)于云原生應(yīng)用程序,如果需要遷移部分或全部應(yīng)用程序,你將面臨一些挑戰(zhàn)。這是由多種原因造成的,具體取決于部署應(yīng)用程序的位置。
例如,如果你的云原生應(yīng)用程序部署在AWS等公有云上,則云原生API不是跨云平臺(tái)的。因此,應(yīng)用程序中使用的DynamoDB數(shù)據(jù)庫API僅適用于AWS,但不適用于Azure,因?yàn)镈ynamoDB僅屬于AWS。API也永遠(yuǎn)不會(huì)在本地環(huán)境中工作,因?yàn)镈ynamoDB在生產(chǎn)中只能在AWS中用。
另一個(gè)原因是因?yàn)樵跇?gòu)建一些云原生應(yīng)用程序時(shí)會(huì)做出一些假設(shè),例如在需要時(shí)可以使用幾乎***數(shù)量的服務(wù)器節(jié)點(diǎn),并且可以非常快速地使用新的服務(wù)器節(jié)點(diǎn)。在需要購買真正的服務(wù)器、網(wǎng)絡(luò)硬件和布線的本地?cái)?shù)據(jù)中心環(huán)境中,有時(shí)難以保證這些假設(shè)。
文章題目:現(xiàn)代云原生架構(gòu):關(guān)于微服務(wù)、容器和無服務(wù)器你需要了解的
鏈接地址:http://m.fisionsoft.com.cn/article/dpojdop.html


咨詢
建站咨詢
