大家好,今天來為大家分享什么是微服務(wù)框架的一些知識點,和微服務(wù)框架比較的問題解析,大家要是都明白,那么可以忽略,如果不太清楚的話可以看看本篇文章,相信很大概率可以解決您的問題,接下來我們就一起來看看吧!
微服務(wù)項目結(jié)構(gòu)如何劃分
1微服務(wù)項目的結(jié)構(gòu)可以劃分為三個部分:應(yīng)用程序、服務(wù)和基礎(chǔ)設(shè)施。2應(yīng)用程序是指提供實際業(yè)務(wù)價值的服務(wù),可以包含多個微服務(wù)。服務(wù)是指執(zhí)行特定任務(wù)的單個微服務(wù),每個服務(wù)都有自己的職責(zé)和功能。基礎(chǔ)設(shè)施是指支持微服務(wù)架構(gòu)的各種工具和框架,包括服務(wù)發(fā)現(xiàn)、負(fù)載均衡、日志管理等。3在微服務(wù)項目中,應(yīng)該將應(yīng)用程序和服務(wù)分離出來,使它們能夠獨立部署和擴展。同時,基礎(chǔ)設(shè)施應(yīng)該被視為一個單獨的部分,以便更好地管理和維護。對于服務(wù)的劃分,應(yīng)該根據(jù)業(yè)務(wù)邏輯和職責(zé)來進(jìn)行,每個服務(wù)應(yīng)該盡可能地獨立和自治。
微服務(wù)架構(gòu)是什么現(xiàn)在國內(nèi)能落地嗎
微服務(wù)與SOA架構(gòu)
微服務(wù)
維基上對其定義為:一種軟件開發(fā)技術(shù)-面向服務(wù)的體系結(jié)構(gòu)(SOA)架構(gòu)樣式的一種變體,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價值。每個服務(wù)運行在其獨立的進(jìn)程中,服務(wù)與服務(wù)間采用輕量級的通信機制互相溝通(通常是基于HTTP的RESTfulAPI)。每個服務(wù)都圍繞著具體業(yè)務(wù)進(jìn)行構(gòu)建,并且能夠獨立地部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等。另外,應(yīng)盡量避免統(tǒng)一的、集中式的服務(wù)管理機制,對具體的一個服務(wù)而言,應(yīng)根據(jù)上下文,選擇合適的語言、工具對其進(jìn)行構(gòu)建。
微服務(wù)概念的由來是怎么樣的呢,參考維基百科英文版,簡單梳理后的微服務(wù)出現(xiàn)的歷史:
2005年:Dr.PeterRodgers在WebServicesEdge大會上提出了“Micro-Web-Services”的概念。2011年:一個軟件架構(gòu)工作組使用了“microservice”一詞來描述一種架構(gòu)模式。2012年:同樣是這個架構(gòu)工作組,正式確定用“microservice”來代表這種架構(gòu)。2012年:ThoughtWorks的JamesLewis針對微服務(wù)概念在QConSanFrancisco2012發(fā)表了演講。2014年:JamesLewis和MartinFlower合寫了關(guān)于微服務(wù)的一篇學(xué)術(shù)性的文章,詳細(xì)闡述了微服務(wù)。順便說一句,這幾個人都是大名鼎鼎的,名字可能陌生,但是擺出他們的作品,相信多少是有些了解的。MartinFlower是《重構(gòu)》、《UML精粹》的作者;RobertMartin,人稱Bob大叔,敏捷專家,《代碼整潔之道》、《架構(gòu)整潔之道》的作者。既然微服務(wù)是SOA架構(gòu)的一種變體,那么,談微服務(wù),SOA就是一個跨不過去的一個話題。
SOA
SOA的全稱是“ServiceOrientedArchitecture”,中文翻譯是“面向服務(wù)架構(gòu)”,1996年,由Gartner公司最早提出SOA概念。它的誕生是有其歷史背景的。
公司內(nèi)部所有部門都有自己獨立的IT系統(tǒng)隨著每個部門的業(yè)務(wù)發(fā)展,獨立的IT系統(tǒng)的復(fù)雜度越來越高同時,基于這樣的背景,Gartner公司提出了SOA的概念,并且還給了一個預(yù)言,它預(yù)言在2008年,SOA會成為一種最流行的、且占有絕對優(yōu)勢的軟件工程實踐辦法。
基于你對軟件行業(yè)發(fā)展的關(guān)注和理解,Gartner公司關(guān)于SOA的預(yù)言是否靠譜呢?很顯然,Gartner的預(yù)言并不是很準(zhǔn)確,雖然在一段時間內(nèi)SOA的概念、設(shè)計思路有占據(jù)過一段熱點排行,但最終它也將成為架構(gòu)歷史長河中的一個匆匆過客。這也正是驗證了那句話:“沒有最好的架構(gòu),只有最合適的架構(gòu)”
SOA架構(gòu)圖:SOA架構(gòu)示意圖
很多時候,我們認(rèn)為SOA已經(jīng)消失在江湖,實際上并非如此,許多傳統(tǒng)行業(yè),比如物流、倉儲行業(yè)的系統(tǒng)都是采用SOA架構(gòu)來構(gòu)建的。
對于SOA,從圖中可以看到,它的每一項業(yè)務(wù)功能都是一個服務(wù),都需要對外提供服務(wù)的能力,來完成企業(yè)所需的各項業(yè)務(wù)功能,也就意味著它具有對外提供開放的能力,這些能力無需定制化就可以實現(xiàn)。為什么無需定制化呢,核心就在于ESB。
ESB(EnterpriseServiceBus)即,企業(yè)級服務(wù)總線,ESB是SOA架構(gòu)中的核心,起著將企業(yè)中不同異構(gòu)系統(tǒng)的連接在一起的作用。它本身提供了消息路由、協(xié)議轉(zhuǎn)換等等能力。通過ESB,SOA架構(gòu)實現(xiàn)了服務(wù)與服務(wù)之間的松耦合,減少了各個服務(wù)間的依賴和相互影響。每項服務(wù)只需要關(guān)注自身對外提供的能力即可,無需關(guān)注其他服務(wù)是怎么實現(xiàn)的。
看到ESB的功能,是不是覺得它的功能有點似曾相識?是的,它就是微服務(wù)所需要的基礎(chǔ)服務(wù)。
微服務(wù)架構(gòu)簡而言之,微服務(wù)架構(gòu)風(fēng)格,是一種將單個應(yīng)用程序開發(fā)為一組小服務(wù)的方法,每個小服務(wù)都在自己的進(jìn)程中運行并與輕量級機制(通常是HTTP資源API)進(jìn)行通信。這些服務(wù)是圍繞業(yè)務(wù)能力構(gòu)建的,并且可以通過全自動部署機制獨立部署。這些服務(wù)的集中管理最少,可以用不同的編程語言編寫并使用不同的數(shù)據(jù)存儲技術(shù)。
圖:微服務(wù)架構(gòu)示意圖
上面一段話是MartinFowler關(guān)于微服務(wù)架構(gòu)論文中的核心片段,從上述片段中,我們提煉出微服務(wù)架構(gòu)的核心有三點:
其一是“小服務(wù)”,將應(yīng)用拆分為一組小服務(wù);
其二是“在自己的進(jìn)程中運行并與輕量級機制(通常是HTTP資源API)進(jìn)行通信”,微服務(wù)是由獨立進(jìn)程且進(jìn)程之間通過輕量級機制進(jìn)行通信;
其三是“可以通過全自動部署機制獨立部署”,也就是說每個微服務(wù)可以快速獨立部署。
其實這已經(jīng)非常精確、精準(zhǔn)的描述出了微服務(wù)的基本特征。完全可以作為在微服務(wù)架構(gòu)實踐中落地的三個參考依據(jù)與檢驗標(biāo)準(zhǔn)。
微服務(wù)與SOA對比對比維度
微服務(wù)
SOA
舉例
技術(shù)本質(zhì)
Smartendpointsanddumbpipes
Smartpipesanddumbendpoints
應(yīng)用場景
互聯(lián)網(wǎng)行業(yè)
傳統(tǒng)行業(yè)或企業(yè)內(nèi)部
SOA,企業(yè)OA;微服務(wù),電商平臺
服務(wù)粒度
細(xì)
較粗
服務(wù)通信
標(biāo)準(zhǔn)化,輕量級
重量級
SOA,ESB;微服務(wù),HTTP,RCP
服務(wù)交付
快速
較慢
微服務(wù),服務(wù)小容易升級;SOA功能集中,較難升級
應(yīng)用架構(gòu)的演化圖:應(yīng)用架構(gòu)的變遷
最初的應(yīng)用都是單體架構(gòu),所謂單體架構(gòu)就是將一系列功能全部集中在一個大的應(yīng)用中,比如傳統(tǒng)行業(yè)一般整個財務(wù)就做一個系統(tǒng),將費用管理、賬務(wù)管理、薪資結(jié)算等等都集中在一起,這種架構(gòu)的局限性非常明顯,不適合大規(guī)模項目的建設(shè)。
當(dāng)項目逐漸變大后,代碼量逐漸增多,會出現(xiàn)編譯、打包費時,嚴(yán)重影響效率。當(dāng)業(yè)務(wù)逐漸增多后,不同的業(yè)務(wù)創(chuàng)建不同的項目,不同的項目的功能模塊可能會出現(xiàn)重復(fù)建設(shè)的情況,造成浪費。隨著軟件架構(gòu)的發(fā)展,出現(xiàn)SOA架構(gòu),SOA將單體架構(gòu)做了拆分,拆分成粗粒度的服務(wù),同時將部分公共功能獨立出來形成ESB,它的優(yōu)點是
把模塊拆分,使用接口通信,降低模塊之間的耦合度把項目拆分成若干個子項目,不同的團隊負(fù)責(zé)不同的子項目增加功能時只需要在增加一個子項目,調(diào)用其它系統(tǒng)的接口就可以可以靈活的進(jìn)行分布式部署但是由于SOA架構(gòu)需要一個統(tǒng)一的通信交互(ESB),導(dǎo)致了接口開發(fā)增加工作量。
更進(jìn)一步發(fā)展,微服務(wù)架構(gòu)出現(xiàn),對服務(wù)進(jìn)一步的拆分,拆分成更細(xì)粒度的服務(wù);進(jìn)一步提供了架構(gòu)選擇的多樣性,微服務(wù)架構(gòu)主要優(yōu)點是
開發(fā)簡單,每個服務(wù)都盡可能的小。獨立提供更小的業(yè)務(wù)能力。技術(shù)棧靈活,不需要在乎使用什么語言、數(shù)據(jù)存儲方式等服務(wù)獨立無依賴,每個服務(wù)都能獨立部署、獨立運行獨立按需擴展,更少的依賴,更高的擴展性高可用性,獨立模塊,即使一個進(jìn)程宕機也不影響整體服務(wù)能力。正是因為微服務(wù)將服務(wù)拆分的更小,它同樣也帶來了一些挑戰(zhàn),比如多服務(wù)運維難度增大、服務(wù)通信成本變高、數(shù)據(jù)一致性保持更難、性能監(jiān)控要求提升等等。
所以業(yè)務(wù)在選擇架構(gòu)的時候,應(yīng)從多方面考量選擇更合適的架構(gòu)。
順便說一句,這里的架構(gòu)演化是指整個架構(gòu)的發(fā)展歷史,并不是說你的服務(wù)就一定要經(jīng)過這個演化過程,只是更多的架構(gòu)模式提供更多的選擇。我們在做架構(gòu)演進(jìn)的時候,更多的是將單體應(yīng)用演進(jìn)到SOA架構(gòu)或者演進(jìn)到微服務(wù)架構(gòu)。
微服務(wù)和分布式的區(qū)別
1、含義不同
微服務(wù)架構(gòu):微服務(wù)架構(gòu)風(fēng)格是一種將一個單一應(yīng)用程序開發(fā)為一組小型服務(wù)的方法,每個服務(wù)運行在自己的進(jìn)程中,服務(wù)間通信采用輕量級通信機制(通常用HTTP資源API)。這些服務(wù)圍繞業(yè)務(wù)能力構(gòu)建并且可通過全自動部署機制獨立部署。這些服務(wù)共用一個最小型的集中式的管理,服務(wù)可用不同的語言開發(fā),使用不同的數(shù)據(jù)存儲技術(shù)。
服務(wù)網(wǎng)格和微服務(wù)區(qū)別
側(cè)重點不同:微服務(wù)架構(gòu)主要關(guān)注服務(wù)間的生態(tài),例如:服務(wù)治理等,而服務(wù)網(wǎng)格架構(gòu)更加關(guān)注服務(wù)之間的通訊,以及與DEVOPS的結(jié)合。
侵入性不同:微服務(wù)架構(gòu)實現(xiàn)了服務(wù)間的解耦,服務(wù)網(wǎng)格則實現(xiàn)了服務(wù)框架和服務(wù)==之間的解耦,在微服務(wù)架構(gòu)中,服務(wù)提供者和服務(wù)消費者都需要配置和注冊到:“服務(wù)注冊中心”的IP地址和端口號等配置
微服務(wù)是技術(shù)還是業(yè)務(wù)架構(gòu)
微服務(wù)是就一種用于構(gòu)建應(yīng)用的技術(shù)架構(gòu),他是IT技術(shù)發(fā)展的產(chǎn)物。微服務(wù)架構(gòu)有別于更為傳統(tǒng)的單體架構(gòu)、垂直架構(gòu),它的特點是每個核心的功能,都可以作為一項服務(wù),每個服務(wù)都有自己的運行環(huán)境、數(shù)據(jù)庫,可以單獨部署和運行,這意味著各項服務(wù)在工作(和出現(xiàn)故障)時不會相互影響,從而將單點故障產(chǎn)生的影響降到最低。
關(guān)于什么是微服務(wù)框架到此分享完畢,希望能幫助到您。