javascript
微服务架构与SpringCloud
微服務(wù)架構(gòu)簡(jiǎn)述
通常而言,微服務(wù)架構(gòu)是一種架構(gòu)模式或者說(shuō)是一種架構(gòu)風(fēng)格,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),每個(gè)服務(wù)運(yùn)行在其獨(dú)立的自己的進(jìn)程中,服務(wù)之間互相協(xié)調(diào)、互相配合為用戶提供最終價(jià)值。服務(wù)之間采用輕量級(jí)的通信機(jī)制互相溝通(通常是基于HTTP的Restful API) 每個(gè)服務(wù)否圍繞著具體業(yè)務(wù)進(jìn)行構(gòu)建,并且能夠被獨(dú)立地部署到生產(chǎn)環(huán)境、類(lèi)生產(chǎn)環(huán)境等。另外,應(yīng)盡量避免統(tǒng)一的、集中式的服務(wù)管理機(jī)制,對(duì)具體的一個(gè)服務(wù)而言,應(yīng)根據(jù)業(yè)務(wù)上下文,選擇合適的語(yǔ)言、工具對(duì)其進(jìn)行構(gòu)建,可以有一個(gè)非常輕量級(jí)的集中式管理來(lái)協(xié)調(diào)這些服務(wù),可以使用不同的語(yǔ)言來(lái)編寫(xiě)服務(wù),也可以選擇不同的數(shù)據(jù)存儲(chǔ)。
微服務(wù)化的核心就是將傳統(tǒng)的一站式應(yīng)用,根據(jù)業(yè)務(wù)拆分為一個(gè)一個(gè)的服務(wù),徹底地去耦合,每一個(gè)微服務(wù)提供單個(gè)業(yè)務(wù)功能的服務(wù),一個(gè)服務(wù)做一件事,從技術(shù)角度看就是一種小而獨(dú)立的處理過(guò)程,類(lèi)似進(jìn)程概念,能夠自行單獨(dú)啟動(dòng)或銷(xiāo)毀,甚至可以擁有自己獨(dú)立的數(shù)據(jù)庫(kù)。
分布式系統(tǒng),各個(gè)模塊分出多個(gè)系統(tǒng)服務(wù),各自擁有一個(gè)進(jìn)程,獨(dú)立部署
微服務(wù)
微服務(wù)強(qiáng)調(diào)的是服務(wù)的大小,它關(guān)注的是某一個(gè)點(diǎn),是具體解決某一個(gè)問(wèn)題/提供落地對(duì)應(yīng)服務(wù)的一個(gè)服務(wù)應(yīng)用,狹義的看,可以看做Eclipse 里面的一個(gè)微服務(wù)工程或者M(jìn)odule
微服務(wù)架構(gòu)的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
- 每個(gè)服務(wù)足夠內(nèi)聚,足夠小,代碼容易理解這樣能聚焦一個(gè)指定的業(yè)務(wù)功能或者業(yè)務(wù)需求
- 開(kāi)發(fā)簡(jiǎn)單、開(kāi)發(fā)效率提高,一個(gè)服務(wù)可能就是專(zhuān)一的只干一件事
- 微服務(wù)能夠被小團(tuán)隊(duì)單獨(dú)開(kāi)發(fā),這個(gè)小團(tuán)隊(duì)是2到5人
- 微服務(wù)架構(gòu)是松耦合的,是有功能意義的服務(wù),無(wú)論是在開(kāi)發(fā)階段或部署階段都是獨(dú)立的
- 微服務(wù)是使用不同的語(yǔ)言開(kāi)發(fā)
- 微服務(wù)易于和第三方集成,允許容易且靈活的方式集成自動(dòng)部署,通過(guò)持續(xù)集成工具,如:Jenkins、Hudson、Bamboo
- 微服務(wù)易于被一個(gè)開(kāi)發(fā)人員理解、維護(hù)
- 微服務(wù)只是業(yè)務(wù)邏輯的代碼,不會(huì)和Html和css 或其他頁(yè)面組件混合。
缺點(diǎn):
- 開(kāi)發(fā)人員要處理分布式系統(tǒng)的復(fù)雜
- 多服務(wù)運(yùn)維難度隨著服務(wù)的增加,運(yùn)維的壓力也在增加
- 系統(tǒng)部署的依賴
- 服務(wù)間通信成本
- 數(shù)據(jù)的一致性
- 系統(tǒng)集成測(cè)試
- 性能監(jiān)控
微服務(wù)落地技術(shù)
各微服務(wù)架構(gòu)對(duì)比
SpringCloud
SpringCloud,基于SpringBoot提供了一套微服務(wù)解決方案,包括服務(wù)注冊(cè)與發(fā)現(xiàn),配置中心,全鏈路監(jiān)控,服務(wù)網(wǎng)關(guān),負(fù)載均衡,熔斷器等組件,除了基于NetFlix的開(kāi)源組件做高度抽象封裝之外,還有一些選型中立的開(kāi)源組件。
SpringCloud利用SpringBoot的開(kāi)發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開(kāi)發(fā),SpringCloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)的一些工具,包括配置管理、服務(wù)發(fā)現(xiàn)、斷路器、路由、微代理、事件總線、全局鎖、決策競(jìng)選、分布式會(huì)話等等,它們都可以用SpringBoot的開(kāi)發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。
SpringBoot并沒(méi)有重復(fù)制造輪子,它只是將目前各家公司開(kāi)發(fā)的比較成熟、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組合起來(lái),通過(guò)SpringBoot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理,最終給開(kāi)發(fā)者留出了一套簡(jiǎn)單易懂、易部署和易維護(hù)的分布式系統(tǒng)開(kāi)發(fā)工具包
SpringCloud 組件
可參考SpringCloud 中文文檔傳送門(mén)查看SpringCloud 生態(tài)圈
總結(jié)
以上是生活随笔為你收集整理的微服务架构与SpringCloud的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Map集合使用get方法返回null抛出
- 下一篇: Spring-bean的循环依赖以及解决