-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
部署成本高(無論是修改1行代碼,還是10行代碼,都要全量替換)
改動(dòng)影響大,風(fēng)險(xiǎn)高(不論代碼改動(dòng)多小,成本都相同)
因?yàn)槌杀靖?,風(fēng)險(xiǎn)高,所以導(dǎo)致部署頻率低(無法快速交付客戶需求)
微服務(wù)架構(gòu)什么意思(微服務(wù)架構(gòu)是什么,它的優(yōu)缺點(diǎn))
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于微服務(wù)架構(gòu)什么意思的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、什么是微服務(wù)
什么是微服務(wù)
微服務(wù)架構(gòu)的系統(tǒng)是一個(gè)分布式的系統(tǒng),按業(yè)務(wù)進(jìn)行劃分為獨(dú)立的服務(wù)單元,解決單體系統(tǒng)的不足,同時(shí)也滿足越來越復(fù)雜的業(yè)務(wù)需求。
一.單體架構(gòu)
1.1什么是單體架構(gòu)
在軟件設(shè)計(jì)的時(shí)候經(jīng)常提到和使用經(jīng)典的3層模型,即表現(xiàn)層,業(yè)務(wù)邏輯層,數(shù)據(jù)訪問層。雖然在軟件設(shè)計(jì)中劃分了3層模型,但是對(duì)業(yè)務(wù)場景沒有劃分,一個(gè)典型的單體架構(gòu)就是將所有的業(yè)務(wù)場景的表現(xiàn)層,業(yè)務(wù)邏輯層,數(shù)據(jù)訪問層放在一個(gè)工程中最終經(jīng)過編譯,打包,部署在一臺(tái)服務(wù)器上。此時(shí)服務(wù)架構(gòu)如圖:
1.2單體架構(gòu)存在的不足
在小型應(yīng)用的初期,訪問量小的時(shí)候這種架構(gòu)的性價(jià)比還是比較高的,開發(fā)速度快,成本低,但是隨著業(yè)務(wù)的發(fā)展,邏輯越來越復(fù)雜,代碼量越來越大,代碼得可讀性和可維護(hù)性越來越低。用戶的增加,訪問量越來越多單體架構(gòu)的應(yīng)用并發(fā)能力十分有限。可能會(huì)有人想到將單體應(yīng)用進(jìn)行集群部署,并增加負(fù)載均衡服務(wù)器,再來個(gè)緩存服務(wù)器和文件服務(wù)器,數(shù)據(jù)庫再搞個(gè)讀寫分離。這種架構(gòu)如圖:
這種架構(gòu)雖然有一定的并發(fā)能力,及應(yīng)對(duì)一定復(fù)雜業(yè)務(wù),但是依然沒有改變系統(tǒng)為單體架構(gòu)的事實(shí)。大量的業(yè)務(wù)必然會(huì)有大量的代碼,代碼得可讀性和可維護(hù)性依然很差。如果面對(duì)海量的用戶,它的并發(fā)能力依然不夠?;谝陨蠁误w架構(gòu)系統(tǒng)的不足,提出了微服務(wù)架構(gòu)。
二.微服務(wù)
2.1什么是微服務(wù)
說了這么多現(xiàn)在來看看到底什么是微服務(wù)。微服務(wù)最初是由Martin Fowler提出來的他的理解如下:
微服務(wù)架構(gòu)就是將單一程序開發(fā)成一個(gè)微服務(wù),每個(gè)微服務(wù)運(yùn)行在自己的進(jìn)程中,并使用輕量級(jí)的機(jī)制通信,通常是HTTP RESTFUL API。這些服務(wù)圍繞業(yè)務(wù)能力來劃分,并通過自動(dòng)化部署機(jī)制來獨(dú)立部署。這些服務(wù)可以使用不同的編程語言,不同數(shù)據(jù)庫,以保證最低限度的集中式管理。
1
總結(jié)起來微服務(wù)就是將一個(gè)單體架構(gòu)的應(yīng)用按業(yè)務(wù)劃分為一個(gè)個(gè)的獨(dú)立運(yùn)行的程序即服務(wù),它們之間通過HTTP協(xié)議進(jìn)行通信(也可以采用消息隊(duì)列來通信,如RoocketMQ,Kafaka等),可以采用不同的編程語言,使用不同的存儲(chǔ)技術(shù),自動(dòng)化部署(如Jenkins)減少人為控制,降低出錯(cuò)概率。服務(wù)數(shù)量越多,管理起來越復(fù)雜,因此采用集中化管理。例如Eureka,Zookeeper等都是比較常見的服務(wù)集中化管理框架。
2.2微服務(wù)的優(yōu)勢
1)將復(fù)雜的業(yè)務(wù)拆分成多個(gè)小的業(yè)務(wù),每個(gè)業(yè)務(wù)拆分成一個(gè)服務(wù),將復(fù)雜的問題簡單化。利于分工,降低新人的學(xué)習(xí)成本。
2)微服務(wù)系統(tǒng)是分布式系統(tǒng),業(yè)務(wù)與業(yè)務(wù)之間完全解耦,隨著業(yè)務(wù)的增加可以根據(jù)業(yè)務(wù)再拆分,具有極強(qiáng)的橫向擴(kuò)展能力。面對(duì)搞并發(fā)的場景可以將服務(wù)集群化部署,加強(qiáng)系統(tǒng)負(fù)載能力。
3)服務(wù)間采用HTTP協(xié)議通信,服務(wù)與服務(wù)之間完全獨(dú)立。每個(gè)服務(wù)可以根據(jù)業(yè)務(wù)場景選取合適的編程語言和數(shù)據(jù)庫。
4)微服務(wù)每個(gè)服務(wù)都是獨(dú)立部署的,每個(gè)服務(wù)的修改和部署對(duì)其他服務(wù)沒有影響。
2.3微服務(wù)和SOA的關(guān)系
SOA即面向服務(wù)的架構(gòu),SOA是根據(jù)企業(yè)服務(wù)總線(ESB)模式來整合集成大量單一龐大的系統(tǒng),微服務(wù)可以說是SOA的一種實(shí)現(xiàn),將復(fù)雜的業(yè)務(wù)組件化。但它比ESB實(shí)現(xiàn)的SOA更加的輕便敏捷和簡單。
二、微服務(wù)架構(gòu)總覽
微服務(wù)是一種基于有界上下文的,松散耦合的面向服務(wù)的架構(gòu)。
什么場景下適用微服務(wù)?什么階段時(shí)適用微服務(wù)?
設(shè)計(jì)的微服務(wù)系統(tǒng)的組織,其產(chǎn)生的架構(gòu)設(shè)計(jì)應(yīng)等價(jià)于組織間的溝通結(jié)構(gòu)。
這句話的意思是說,原始組織之間的結(jié)構(gòu)最好能映射到設(shè)計(jì)的微服務(wù)系統(tǒng)架構(gòu)上。比如一個(gè)系統(tǒng)包含訂單、商品、用戶等功能,現(xiàn)實(shí)中分別由A、B、C三個(gè)小組進(jìn)行開發(fā)維護(hù),那么如果要拆分為微服務(wù)的架構(gòu),最好就能拆分為訂單服務(wù)、商品服務(wù)、用戶服務(wù)三個(gè)微服務(wù),對(duì)應(yīng)A、B、C三個(gè)現(xiàn)實(shí)的小組結(jié)構(gòu)。
微服務(wù)并不是適合任何階段,最好的方式就是隨著項(xiàng)目的擴(kuò)大或者團(tuán)隊(duì)的擴(kuò)大時(shí),逐步演進(jìn)到微服務(wù)。因?yàn)閱误w應(yīng)用會(huì)隨著規(guī)模的擴(kuò)大而逐漸增加內(nèi)耗,導(dǎo)致生產(chǎn)力降低。微服務(wù)的目標(biāo)是在規(guī)模擴(kuò)大時(shí),使得生產(chǎn)力能維持在一個(gè)穩(wěn)定的水準(zhǔn)之上。
微服務(wù)生產(chǎn)力超過單體的拐點(diǎn),一般來說是指當(dāng)團(tuán)隊(duì)人數(shù)規(guī)模達(dá)到百人時(shí)。當(dāng)然,這也不是絕對(duì)的,需要團(tuán)隊(duì)負(fù)責(zé)人自己視情況進(jìn)行評(píng)估。
如果在項(xiàng)目一開始就設(shè)計(jì)微服務(wù)的架構(gòu),一路上會(huì)遇到極大的困難與風(fēng)險(xiǎn)。比如業(yè)務(wù)模塊邊界的劃分、無法預(yù)估的業(yè)務(wù)或者技術(shù)復(fù)雜性,這些都會(huì)耗費(fèi)更多的人力和時(shí)間,甚至最終導(dǎo)致項(xiàng)目失敗。
建議的方式就是由單體演進(jìn),我們可以在單體階段不斷摸索和沉淀業(yè)務(wù)和技術(shù)上的問題,隨著越來越清晰的認(rèn)知,再加上日漸增加的復(fù)雜度,可以考慮逐步拆分部分服務(wù)出來,朝著微服務(wù)架構(gòu)的方向演進(jìn)。
微服務(wù)架構(gòu)中服務(wù)與服務(wù)各有不同,相互之間也應(yīng)該按照層級(jí)的方式進(jìn)行編排。有的與業(yè)務(wù)無關(guān)的服務(wù)天然屬于底層基礎(chǔ)服務(wù),有的與業(yè)務(wù)有關(guān)聯(lián)的服務(wù)則屬于聚合了基礎(chǔ)服務(wù)的聚合服務(wù)。
在常見的公司微服務(wù)總體架構(gòu)中,一般的架構(gòu)表現(xiàn)就如下所示:
有了各個(gè)層級(jí)的服務(wù)之后,中臺(tái)的概念和戰(zhàn)略就顯得很自然。
服務(wù)注冊(cè)與發(fā)現(xiàn)是微服務(wù)架構(gòu)得以運(yùn)轉(zhuǎn)的核心功能,它不提供任何業(yè)務(wù)功能,僅僅用來進(jìn)行服務(wù)的發(fā)現(xiàn)和注冊(cè),并對(duì)服務(wù)的健康狀態(tài)進(jìn)行監(jiān)控和管理。其核心的工作原理:
現(xiàn)在注冊(cè)中心比較多,主流的有Eureka、Consul、Zookeeper、Nacos等。
網(wǎng)關(guān)是整個(gè)系統(tǒng)對(duì)外暴露的唯一入口,它封裝了系統(tǒng)內(nèi)的所有微服務(wù),對(duì)外看來,別人只知道也只能通過網(wǎng)關(guān)才可以和系統(tǒng)進(jìn)行交互。網(wǎng)關(guān)對(duì)所有請(qǐng)求進(jìn)行非業(yè)務(wù)功能的處理,然后再將請(qǐng)求發(fā)送給內(nèi)部指定的微服務(wù)進(jìn)行業(yè)務(wù)上的處理??偟膩碚f,網(wǎng)關(guān)最主要的功能如下:
現(xiàn)在常見的網(wǎng)關(guān)有Kong、Zuul、Spring Cloud Gateway等;
在實(shí)際應(yīng)用中,一個(gè)微服務(wù)體系架構(gòu)的系統(tǒng)可以有多個(gè)網(wǎng)關(guān)用來應(yīng)對(duì)不同的使用場景,比如公司內(nèi)網(wǎng)網(wǎng)關(guān)、外網(wǎng)網(wǎng)關(guān)、提供給第三方調(diào)用的網(wǎng)關(guān)等;
微服務(wù)在啟動(dòng)和運(yùn)行的過程中,經(jīng)常會(huì)需要讀取一些配置信息,這些配置信息擁有如下的特點(diǎn):
如上這些特點(diǎn)和需求,催生了配置中心的出現(xiàn)。現(xiàn)在主流的配置中心有Spring Cloud Config、Nacos、Apollo等;
在微服務(wù)架構(gòu)中,一次調(diào)用請(qǐng)求可能貫穿多個(gè)服務(wù),這些服務(wù)可能是由不同的團(tuán)隊(duì)使用不同的技術(shù)開發(fā)而成的,如果出現(xiàn)調(diào)用失敗需要排查問題時(shí),如何能快速地復(fù)現(xiàn)調(diào)用現(xiàn)場,發(fā)現(xiàn)問題出在哪個(gè)服務(wù)哪個(gè)服務(wù)器上就成了全鏈路監(jiān)控需要解決的問題。
全鏈路監(jiān)控的基本原理都是:
全鏈路監(jiān)控主流工具有CAT、Zipkin、Pinpoint、Skywalking等;
在微服務(wù)架構(gòu)體系中,服務(wù)之間的調(diào)用是很頻繁的,一旦某些服務(wù)出現(xiàn)故障或者高延遲,會(huì)很可能造成級(jí)聯(lián)故障,如果客戶端還在不停重試,將會(huì)加劇問題的嚴(yán)重性,最終導(dǎo)致整個(gè)系統(tǒng)徹底崩潰。
斷路器的設(shè)計(jì)與實(shí)現(xiàn)有助于防止多服務(wù)之間的級(jí)聯(lián)故障,允許我們構(gòu)建具有容錯(cuò)性和高彈性的微服務(wù)架構(gòu)系統(tǒng),當(dāng)某些服務(wù)不可用時(shí),提供服務(wù)熔斷和服務(wù)降級(jí)功能,保證系統(tǒng)的其它部分仍能正常運(yùn)行。
斷路器的三個(gè)狀態(tài)和含義如下:
主流常見的斷路器有Hystrix、Sentinel等;
如果使用了容器技術(shù),那么容器編排、發(fā)布、治理就成了避不開的話題。主流的技術(shù)如下:
各大容器云廠商基本都是使用基于k8s的容器治理方案,k8s也已經(jīng)成為該領(lǐng)域事實(shí)上的標(biāo)準(zhǔn)了。
如上是自己在極客時(shí)間App上學(xué)習(xí)《微服務(wù)架構(gòu)核心20講》的筆記,該課程一天就能學(xué)完,沒有實(shí)現(xiàn)微服務(wù)的細(xì)節(jié),是高屋建瓴地講解微服務(wù)架構(gòu)的藍(lán)圖,帶你鳥瞰整個(gè)微服務(wù)架構(gòu),推薦學(xué)習(xí)。
三、“微服務(wù)”是什么意思?
微服務(wù)是對(duì)于微信公眾平臺(tái)帳號(hào)提供的輔助管理平臺(tái),強(qiáng)化了微信公眾號(hào)的互動(dòng)營銷推廣與客戶關(guān)系維護(hù)功能。
一、微服務(wù)涵蓋了微信管家、微信應(yīng)用解決方案、微信客服客戶端、人工微信客服幾部分。
二、微服務(wù)平臺(tái)開發(fā)了為商家定制的“個(gè)性化管理、營銷推廣、客戶關(guān)系管理、會(huì)員卡管理”等幾個(gè)重要的運(yùn)營管理模塊。
四、什么是微服務(wù)?
什么是微服務(wù)?
簡單舉例:一艘航空母艦作戰(zhàn)能力雖然很強(qiáng),但是弱點(diǎn)太明顯,就是防御能力太差,單艘的航空母艦很少單獨(dú)行動(dòng),通常航空母艦戰(zhàn)斗群才是主要軍事力量,你可以把單艘航母理解為的單體應(yīng)用(防御差,機(jī)動(dòng)性不好),把航母戰(zhàn)斗群(調(diào)度復(fù)雜,維護(hù)費(fèi)用高)理解為微服務(wù)。
大部分的開發(fā)者經(jīng)歷和開發(fā)過單體應(yīng)用,無論是傳統(tǒng)的 Servlet + JSP,還是 SSM,還是現(xiàn)在的 SpringBoot,它們都是單體應(yīng)用,那么是什么問題,導(dǎo)致要拋棄單體應(yīng)用轉(zhuǎn)向微服務(wù)架構(gòu)?主要問題如下:
當(dāng)然還有例如無法滿足快速擴(kuò)容,彈性伸縮,無法適應(yīng)云環(huán)境特性等問題,都是微服務(wù)架構(gòu)要解決的問題。
關(guān)于微服務(wù)的課程,建議您在B站搜索我們官方賬號(hào)“尚學(xué)堂”進(jìn)行學(xué)習(xí)!免費(fèi)的課程喲!
希望能幫到您,望采納??!
以上就是關(guān)于微服務(wù)架構(gòu)什么意思相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
微服務(wù)設(shè)計(jì)模式(微服務(wù)設(shè)計(jì)模式pdf下載)
微服務(wù)架構(gòu)什么意思(微服務(wù)架構(gòu)是什么,它的優(yōu)缺點(diǎn))
微服務(wù)和soa(微服務(wù)和soa架構(gòu)的區(qū)別)
u鈣網(wǎng)免費(fèi)頭像(u鈣網(wǎng)免費(fèi)頭像logo在線制作)