海詩網(wǎng) 頭條熱點 什么是微服務(wù)(什么是微服務(wù)架構(gòu))

什么是微服務(wù)(什么是微服務(wù)架構(gòu))

什么是微服務(wù), 今天給大家分享一下什么是微服務(wù)的知識,也解釋一下什么是微服務(wù)平臺。如果你碰巧解決了你現(xiàn)在面臨的問題,別忘了關(guān)注這個網(wǎng)站,現(xiàn)在就開始吧!

什么是微服務(wù)?什么是微服務(wù)?

舉個簡單的例子:航母雖然作戰(zhàn)能力很強,但是弱點太明顯了,就是防御能力太差。單艘航母很少單獨行動。通常情況下,航母戰(zhàn)斗群是主要軍事力量。你可以把單個航母理解為單一應(yīng)用(防御差,機動性差)。

航母戰(zhàn)斗群(調(diào)度復(fù)雜,維護成本高)理解為微服。

大多數(shù)開發(fā)者都有過開發(fā)單一應(yīng)用的經(jīng)歷,無論是傳統(tǒng)的Servlet JSP、SSM還是現(xiàn)在的SpringBoot,都是單一應(yīng)用,那么問題出在哪里呢?

導(dǎo)致放棄單一應(yīng)用轉(zhuǎn)向微服務(wù)架構(gòu)?主要問題如下:

部署成本高(無論修改1行代碼還是10行代碼,都要全部替換)

變更影響大,風(fēng)險高(無論代碼變更多小,成本都是一樣的)

由于高成本和高風(fēng)險,部署頻率較低(無法快速交付客戶的需求)。

當然,也存在一些問題,如無法滿足快速擴展、靈活擴展和適應(yīng)云環(huán)境特點的要求,這些都是微服務(wù)架構(gòu)要解決的問題。

關(guān)于微服的課程,建議你搜索我們在嗶哩嗶哩的官方賬號“尚學(xué)堂”來學(xué)習(xí)!免費課程!

希望能幫到你,希望采納!

什么是微服務(wù)?什么是微服務(wù)?

微服務(wù)架構(gòu)系統(tǒng)是一個分布式系統(tǒng),按照業(yè)務(wù)劃分成獨立的服務(wù)單元,解決了單一系統(tǒng)的不足,滿足了日益復(fù)雜的業(yè)務(wù)需求。

一.整體架構(gòu)

1.1什么是單一架構(gòu)?

在軟件設(shè)計中,經(jīng)典的三層模型經(jīng)常被提及和使用,即表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。軟件設(shè)計雖然有三層模型,但是沒有業(yè)務(wù)場景的劃分。典型的單一架構(gòu)是集成所有表示層、業(yè)務(wù)邏輯層,

數(shù)據(jù)訪問層放在一個項目中,最后在服務(wù)器上編譯、打包和部署。此時,服務(wù)架構(gòu)如下:

1.2單體結(jié)構(gòu)的缺點

在小規(guī)模應(yīng)用的初期,這種架構(gòu)在訪問量少的情況下性價比還是比較高的,開發(fā)速度快,成本低。但是隨著業(yè)務(wù)的發(fā)展,邏輯越來越復(fù)雜,代碼量越來越大,代碼的可讀性和可維護性越來越低。用戶的增加,

隨著訪問越來越多,單一架構(gòu)的應(yīng)用并發(fā)能力非常有限。有些人可能會想到將單個應(yīng)用程序集群化,添加負載平衡服務(wù)器、緩存服務(wù)器和文件服務(wù)器,并將數(shù)據(jù)庫中的讀寫分離。該架構(gòu)如下:

這種架構(gòu)雖然具有一定的并發(fā)能力,可以應(yīng)對一定的復(fù)雜業(yè)務(wù),但仍然沒有把系統(tǒng)變成單一的架構(gòu)。大量的業(yè)務(wù)必然會有大量的代碼,代碼的可讀性和可維護性還是很差的。如果面對大量用戶,它的并發(fā)能力還是不夠。

基于以上單體架構(gòu)系統(tǒng)的不足,提出了微服務(wù)架構(gòu)。

二.微服務(wù)

2.1什么是微服務(wù)

說了這么多現(xiàn)在來看看到底什么是微服務(wù)。微服務(wù)最初是由Martin Fowler提出來的他的理解如下:

微服務(wù)架構(gòu)就是將單一程序開發(fā)成一個微服務(wù),每個微服務(wù)運行在自己的進程中,并使用輕量級的機制通信,通常是HTTP RESTFUL API。這些服務(wù)圍繞業(yè)務(wù)能力來劃分,并通過自動化部署機制來獨立部署。

這些服務(wù)可以使用不同的編程語言,不同數(shù)據(jù)庫,以保證最低限度的集中式管理。

1

總結(jié)起來微服務(wù)就是將一個單體架構(gòu)的應(yīng)用按業(yè)務(wù)劃分為一個個的獨立運行的程序即服務(wù),它們之間通過HTTP協(xié)議進行通信(也可以采用消息隊列來通信,如RoocketMQ,Kafaka等),

可以采用不同的編程語言,使用不同的存儲技術(shù),自動化部署(如Jenkins)減少人為控制,降低出錯概率。服務(wù)數(shù)量越多,管理起來越復(fù)雜,因此采用集中化管理。例如Eureka,

Zookeeper等都是比較常見的服務(wù)集中化管理框架。

2.2微服務(wù)的優(yōu)勢

1)將復(fù)雜的業(yè)務(wù)拆分成多個小的業(yè)務(wù),每個業(yè)務(wù)拆分成一個服務(wù),將復(fù)雜的問題簡單化。利于分工,降低新人的學(xué)習(xí)成本。

2)微服務(wù)系統(tǒng)是分布式系統(tǒng),業(yè)務(wù)與業(yè)務(wù)之間完全解耦,隨著業(yè)務(wù)的增加可以根據(jù)業(yè)務(wù)再拆分,具有極強的橫向擴展能力。面對搞并發(fā)的場景可以將服務(wù)集群化部署,加強系統(tǒng)負載能力。

3)服務(wù)間采用HTTP協(xié)議通信,服務(wù)與服務(wù)之間完全獨立。每個服務(wù)可以根據(jù)業(yè)務(wù)場景選取合適的編程語言和數(shù)據(jù)庫。

4)微服務(wù)每個服務(wù)都是獨立部署的,每個服務(wù)的修改和部署對其他服務(wù)沒有影響。

2.3微服務(wù)和SOA的關(guān)系

SOA即面向服務(wù)的架構(gòu),SOA是根據(jù)企業(yè)服務(wù)總線(ESB)模式來整合集成大量單一龐大的系統(tǒng),微服務(wù)可以說是SOA的一種實現(xiàn),將復(fù)雜的業(yè)務(wù)組件化。但它比ESB實現(xiàn)的SOA更加的輕便敏捷和簡單。

什么是微服務(wù)架構(gòu)什么是微服務(wù)微服務(wù)架構(gòu)是一種方法,其中單個應(yīng)用程序由許多松散耦合且可獨立部署的較小服務(wù)組成。

微服務(wù)(或微服務(wù)架構(gòu))是一種云原生架構(gòu)方法,其中單個應(yīng)用程序由許多松散耦合且可獨立部署的較小組件或服務(wù)組成。

這些服務(wù)通常

雖然關(guān)于微服務(wù)的大部分討論都圍繞架構(gòu)定義和特征展開,但它們的價值可以通過相當簡單的業(yè)務(wù)和組織優(yōu)勢來更普遍地理解:

微服務(wù)也可以通過它們 不是 什么來理解。

與微服務(wù)架構(gòu)最常進行的兩個比較是單體架構(gòu)和面向服務(wù)的架構(gòu)(SOA)。

微服務(wù)和單體架構(gòu)之間的區(qū)別在于,微服務(wù)由許多較小的、松散耦合的服務(wù)組成一個應(yīng)用程序,而不是大型、緊密耦合的應(yīng)用程序的單體方法

微服務(wù)和SOA 之間的區(qū)別可能不太清楚。

雖然可以在微服務(wù)和SOA 之間進行技術(shù)對比,尤其是圍繞企業(yè)服務(wù)總線(ESB) 的角色,但更容易將差異視為 范圍之一 。

SOA 是企業(yè)范圍內(nèi)的一項努力,旨在標準化 組織中 所有Web 服務(wù)相互通信和集成的方式,而微服務(wù)架構(gòu)是特定于應(yīng)用程序的。

微服務(wù)可能至少與開發(fā)人員一樣受高管和項目負責人的歡迎。

這是微服務(wù)更不尋常的特征之一,因為架構(gòu)熱情通常是為軟件開發(fā)團隊保留的。

原因是微服務(wù)更好地反映了許多業(yè)務(wù)領(lǐng)導(dǎo)者希望構(gòu)建和運行他們的團隊和開發(fā)流程的方式。

換句話說,微服務(wù)是一種架構(gòu)模型,可以更好地促進所需的操作模型。

在IBM 最近對1,200 多名開發(fā)人員和IT 主管進行的一項調(diào)查中,87% 的微服務(wù)用戶同意微服務(wù)的采用是值得的。

也許微服務(wù)最重要的一個特點是,由于服務(wù)更小并且可以獨立部署,它不再需要國會的法案來更改一行代碼或在應(yīng)用程序中添加新功能。

微服務(wù)向組織承諾提供一種解毒劑,以解決與需要大量時間的小改動相關(guān)的內(nèi)心挫敗感。

它不需要博士學(xué)位。

在計算機科學(xué)中看到或理解一種更好地促進速度和敏捷性的方法的價值。

但速度并不是以這種方式設(shè)計服務(wù)的唯一價值。

一種常見的新興組織模型是圍繞業(yè)務(wù)問題、服務(wù)或產(chǎn)品將跨職能團隊聚集在一起。

微服務(wù)模型完全符合這一趨勢,因為它使組織能夠圍繞一個服務(wù)或一組服務(wù)創(chuàng)建小型、跨職能的團隊,并讓他們以敏捷的方式運行。

微服務(wù)的松散耦合還為應(yīng)用程序建立了一定程度的故障隔離和更好的彈性。

服務(wù)的小規(guī)模,加上清晰的邊界和溝通模式,使新團隊成員更容易理解代碼庫并快速為其做出貢獻——在速度和員工士氣方面都有明顯的好處。

在傳統(tǒng)的n 層架構(gòu)模式中,應(yīng)用程序通常共享一個公共堆棧,其中一個大型關(guān)系數(shù)據(jù)庫支持整個應(yīng)用程序。

這種方法有幾個明顯的缺點——其中最重要的是應(yīng)用程序的每個組件都必須共享一個公共堆棧、數(shù)據(jù)模型和數(shù)據(jù)庫,即使對于某些元素的工作有一個清晰、更好的工具。

它造成了糟糕的架構(gòu),并且對于那些不斷意識到構(gòu)建這些組件的更好、更有效的方法是可用的開發(fā)人員來說是令人沮喪的。

相比之下,在微服務(wù)模型中,組件是獨立部署的,并通過REST、事件流和消息代理的某種組合進行通信——因此每個單獨服務(wù)的堆棧都可以針對該服務(wù)進行優(yōu)化。

技術(shù)一直在變化,由多個較小的服務(wù)組成的應(yīng)用程序更容易和更便宜地隨著更理想的技術(shù)發(fā)展而變得可用。

使用微服務(wù),可以單獨部署單個服務(wù),但也可以單獨擴展它們。由此產(chǎn)生的好處是顯而易見的:如果做得正確,微服務(wù)比單體應(yīng)用程序需要更少的基礎(chǔ)設(shè)施,因為它們只支持對需要它的組件進行精確擴展,

而不是在單體應(yīng)用程序的情況下對整個應(yīng)用程序進行擴展。

微服務(wù)的顯著優(yōu)勢伴隨著重大挑戰(zhàn)。

從單體架構(gòu)到微服務(wù)意味著更多的管理復(fù)雜性——更多的服務(wù),由更多的團隊創(chuàng)建,部署在更多的地方。

一項服務(wù)中的問題可能會導(dǎo)致或由其他服務(wù)中的問題引起。

日志數(shù)據(jù)(用于監(jiān)控和解決問題)更加龐大,并且在服務(wù)之間可能不一致。

新版本可能會導(dǎo)致向后兼容性問題。

應(yīng)用程序涉及更多的網(wǎng)絡(luò)連接,這意味著出現(xiàn)延遲和連接問題的機會更多。

DevOps 方法可以解決其中的許多問題,但DevOps 的采用也有其自身的挑戰(zhàn)。

然而,這些挑戰(zhàn)并沒有阻止非采用者采用微服務(wù)——或者采用者深化他們的微服務(wù)承諾。

新的IBM 調(diào)查數(shù)據(jù)顯示,56% 的當前非用戶可能或非??赡茉谖磥韮赡陜?nèi)采用微服務(wù),78% 的當前微服務(wù)用戶可能會增加他們在微服務(wù)上投入的時間、金錢和精力

微服務(wù)架構(gòu)通常被描述為針對DevOps 和持續(xù)集成/持續(xù)交付(CI/CD) 進行了優(yōu)化,在可以頻繁部署的小型服務(wù)的上下文中,原因很容易理解。

但另一種看待微服務(wù)和DevOps 之間關(guān)系的方式是,微服務(wù)架構(gòu)實際上 需要 DevOps 才能成功。

雖然單體應(yīng)用程序具有本文前面討論過的一系列缺點,但它們的好處是它不是一個具有多個移動部件和獨立技術(shù)堆棧的復(fù)雜分布式系統(tǒng)。

相比之下,鑒于微服務(wù)帶來的復(fù)雜性、移動部件和依賴項的大量增加,在部署、監(jiān)控和生命周期自動化方面沒有大量投資的情況下使用微服務(wù)是不明智的。

雖然幾乎任何現(xiàn)代工具或語言都可以在微服務(wù)架構(gòu)中使用,但有一些核心工具已成為微服務(wù)必不可少的邊界定義:

微服務(wù)的關(guān)鍵要素之一是它通常非常小。

(沒有任意數(shù)量的代碼可以確定某物是否是微服務(wù),但名稱中的“微”就在那里。)

當Docker在2013 年迎來現(xiàn)代容器時代時,它還引入了與微服務(wù)最密切相關(guān)的計算模型。

由于單個容器沒有自己的操作系統(tǒng)的開銷,它們比傳統(tǒng)的虛擬機更小更輕,并且可以更快地啟動和關(guān)閉,使其成為微服務(wù)架構(gòu)中更小、更輕的服務(wù)的完美匹配.

隨著服務(wù)和容器的激增,編排和管理大量容器很快成為關(guān)鍵挑戰(zhàn)之一。

Kubernetes是一個開源容器編排平臺,已成為最受歡迎的編排解決方案之一,因為它做得非常好。

微服務(wù)通常通過API 進行通信,尤其是在首次建立狀態(tài)時。

雖然客戶端和服務(wù)確實可以直接相互通信,但API 網(wǎng)關(guān)通常是一個有用的中間層,尤其是當應(yīng)用程序中的服務(wù)數(shù)量隨著時間的推移而增長時。

API 網(wǎng)關(guān)通過路由請求、跨多個服務(wù)扇出請求以及提供額外的安全性和身份驗證來充當客戶端的反向代理。

有多種技術(shù)可用于實現(xiàn)API 網(wǎng)關(guān),包括API 管理平臺,但如果使用容器和Kubernetes 實現(xiàn)微服務(wù)架構(gòu),則網(wǎng)關(guān)通常使用Ingress 或最近的Istio 來實現(xiàn)。

雖然最佳實踐可能是設(shè)計無狀態(tài)服務(wù),但狀態(tài)仍然存在,服務(wù)需要了解它。

雖然API 調(diào)用通常是為給定服務(wù)初始建立狀態(tài)的有效方式,但它并不是保持最新狀態(tài)的特別有效方式。

不斷的輪詢,“我們到了嗎?” 保持服務(wù)最新的方法根本不切實際。

相反,有必要將建立狀態(tài)的API 調(diào)用與消息傳遞或事件流結(jié)合起來,以便服務(wù)可以廣播狀態(tài)的變化,而其他相關(guān)方可以監(jiān)聽這些變化并進行相應(yīng)的調(diào)整。

這項工作可能最適合通用消息代理,但在某些情況下,事件流平臺(例如Apache Kafka)可能更適合。

通過將微服務(wù)與事件驅(qū)動架構(gòu)相結(jié)合,開發(fā)人員可以構(gòu)建分布式、高度可擴展、容錯和可擴展的系統(tǒng),可以實時消費和處理大量事件或信息。

無服務(wù)器架構(gòu)將一些核心云和微服務(wù)模式得出其合乎邏輯的結(jié)論。

在無服務(wù)器的情況下,執(zhí)行單元不僅僅是一個小服務(wù),而是一個函數(shù),它通??梢灾皇菐仔写a。

將無服務(wù)器功能與微服務(wù)分開的界限很模糊,但通常認為功能比微服務(wù)還要小。

無服務(wù)器架構(gòu)和功能即服務(wù)(FaaS)平臺與微服務(wù)的相似之處在于,它們都對創(chuàng)建更小的部署單元和根據(jù)需求精確擴展感興趣。

微服務(wù)不一定與云計算完全相關(guān),但它們?nèi)绱祟l繁地結(jié)合在一起有幾個重要原因——這些原因超越了微服務(wù)成為新應(yīng)用程序的流行架構(gòu)風(fēng)格以及云成為新應(yīng)用程序的流行托管目的地的原因。

微服務(wù)架構(gòu)的主要優(yōu)勢之一是與單獨部署和擴展組件相關(guān)的利用率和成本優(yōu)勢。

雖然這些優(yōu)勢在一定程度上仍然存在于本地基礎(chǔ)設(shè)施中,但小型、獨立可擴展的組件與按需、按使用付費的基礎(chǔ)設(shè)施相結(jié)合是可以找到真正成本優(yōu)化的地方。

其次,也許更重要的是,微服務(wù)的另一個主要好處是每個單獨的組件都可以采用最適合其特定工作的堆棧。

當您自己管理堆棧擴散時,可能會導(dǎo)致嚴重的復(fù)雜性和開銷,但是將支持堆棧作為云服務(wù)使用可以大大減少管理挑戰(zhàn)。

換句話說,雖然推出自己的微服務(wù)基礎(chǔ)設(shè)施并非不可能,但不可取,尤其是剛開始時。

在微服務(wù)架構(gòu)中,有許多常見且有用的設(shè)計、通信和集成模式有助于解決一些更常見的挑戰(zhàn)和機遇,包括:

例如,在桌面上使用的應(yīng)用程序?qū)⒕哂信c移動設(shè)備不同的屏幕尺寸、顯示和性能限制。

BFF 模式允許開發(fā)人員使用該界面的最佳選項為每個用戶界面創(chuàng)建和支持一種后端類型,而不是嘗試支持適用于任何界面但可能會對前端性能產(chǎn)生負面影響的通用后端。

例如,在電子商務(wù)網(wǎng)站上,產(chǎn)品對象可能通過產(chǎn)品名稱、類型和價格來區(qū)分。

聚合是應(yīng)被視為一個單元的相關(guān)實體的集合。

因此,對于電子商務(wù)網(wǎng)站,訂單將是買家訂購的產(chǎn)品(實體)的集合(集合)。

這些模式用于以有意義的方式對數(shù)據(jù)進行分類。

在微服務(wù)架構(gòu)中,服務(wù)實例會因伸縮、升級、服務(wù)故障甚至服務(wù)終止而動態(tài)變化。

這些模式提供了發(fā)現(xiàn)機制來應(yīng)對這種短暫性。

負載平衡可以通過使用健康檢查和服務(wù)故障作為重新平衡流量的觸發(fā)器來使用服務(wù)發(fā)現(xiàn)模式。

適配器模式的目的是幫助翻譯不兼容的類或?qū)ο笾g的關(guān)系。

依賴第三方API 的應(yīng)用程序可能需要使用適配器模式來確保應(yīng)用程序和API 可以通信。

這個色彩繽紛的名字指的是藤蔓(微服務(wù))如何隨著時間的推移慢慢地超越并扼殺一棵樹(單體應(yīng)用程序)。

雖然有很多模式可以很好地完成微服務(wù),但同樣數(shù)量的模式可以很快讓任何開發(fā)團隊陷入困境。

其中一些——改寫為微服務(wù)“不要”——如下:

一旦應(yīng)用程序變得太大且難以輕松更新和維護,微服務(wù)是一種管理復(fù)雜性的方法。

只有當您感覺到單體架構(gòu)的痛苦和復(fù)雜性開始蔓延時,才值得考慮如何將該應(yīng)用程序重構(gòu)為更小的服務(wù)。

在你感受到那種痛苦之前,你甚至沒有真正擁有需要重構(gòu)的單體。

嘗試在沒有a) 適當?shù)牟渴鸷捅O(jiān)控自動化或b) 托管云服務(wù)來支持您現(xiàn)在龐大的異構(gòu)基礎(chǔ)設(shè)施的情況下進行微服務(wù),會帶來很多不必要的麻煩。

省去你自己的麻煩,這樣你就可以把時間花在擔心狀態(tài)上。

最好傾向于更大的服務(wù),然后只在它們開始開發(fā)微服務(wù)解決的特征時才將它們分開——即部署更改變得困難和緩慢,通用數(shù)據(jù)模型變得過于復(fù)雜,或者不同部分服務(wù)有不同的負載/規(guī)模要求。

微服務(wù)和SOA 之間的區(qū)別在于,微服務(wù)項目通常涉及重構(gòu)應(yīng)用程序以便更易于管理,而SOA 關(guān)注的是改變IT 服務(wù)在企業(yè)范圍內(nèi)的工作方式。

一個演變成SOA 項目的微服務(wù)項目可能會因自身的重量而崩潰。

你最好從一個你可以處理的速度開始,避免復(fù)雜性,并盡可能多地使用現(xiàn)成的工具。

微服務(wù)是是什么意思啊微服務(wù)是是什么意思啊如下:希望可以幫助你

微服務(wù)涵蓋了微信管家、微信應(yīng)用解決方案、微信客服客戶端、人工微信客服幾部分。

微服務(wù)是對于微信公眾平臺帳號提供的輔助管理平臺,強化了微信公眾號的互動營銷推廣與客戶關(guān)系維護功能。

微服務(wù)平臺開發(fā)了為商家定制的“個性化管理、營銷推廣、客戶關(guān)系管理、會員卡管理”等幾個重要的運營管理模塊。

關(guān)于什么是微服務(wù)和什么是微服務(wù)平臺的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

什么是微服務(wù),以上就是本文為您收集整理的什么是微服務(wù)最新內(nèi)容,希望能幫到您!更多相關(guān)內(nèi)容歡迎關(guān)注。

本文來自網(wǎng)絡(luò),不代表海詩網(wǎng)立場,轉(zhuǎn)載請注明出處:http://x91880.com/n/153486.html
      

騰訊視頻怎么會員簽到 看完你就學(xué)會了

騰訊視頻怎樣修改昵稱(騰訊視頻如何修改昵稱)

發(fā)表回復(fù)
聯(lián)系我們
聯(lián)系我們

在線咨詢: QQ交談

郵箱: 3587015498@qq.com

工作時間:周一至周五,9:00-17:30,節(jié)假日休息

關(guān)注微信
微信掃一掃關(guān)注我們
微信掃一掃關(guān)注我們
關(guān)注微博
返回頂部