javascript
SpringCloud学习--微服务架构
目錄
微服務(wù)架構(gòu)快速指南
SOA
Dubbo
Spring Cloud
Dubbo與SpringCloud對比
微服務(wù)(Microservice)架構(gòu)快速指南
什么是軟件架構(gòu)?
軟件架構(gòu)是一個包含各種組織的系統(tǒng)組織,這些組件包括 Web服務(wù)器, 應(yīng)用服務(wù)器, 數(shù)據(jù)庫,存儲, 通訊層), 它們彼此或和環(huán)境存在關(guān)系。
什么是微服務(wù)架構(gòu)?
微服務(wù)是指開發(fā)一個單個 小型的但有業(yè)務(wù)功能的服務(wù),每個服務(wù)都有自己的處理和輕量通訊機制,可以部署在單個或多個服務(wù)器上。
微服務(wù)也指一種種松耦合的、有一定的有界上下文的面向服務(wù)架構(gòu)。也就是說,如果每個服務(wù)都要同時修改,那么它們就不是微服務(wù),因為它們緊耦合在一起;如果你需要掌握一個服務(wù)太多的上下文場景使用條件,那么它就是一個有上下文邊界的服務(wù),這個定義來自DDD領(lǐng)域驅(qū)動設(shè)計。
微服務(wù)架構(gòu)的優(yōu)缺點?
優(yōu)點
- 每個微服務(wù)都很小,這樣能聚焦一個指定的業(yè)務(wù)功能或業(yè)務(wù)需求。
- 微服務(wù)能夠被小團隊單獨開發(fā),這個小團隊是2到5人的開發(fā)人員組成。
- 微服務(wù)是松耦合的,是有功能意義的服務(wù),無論是在開發(fā)階段或部署階段都是獨立的。
- 微服務(wù)能使用不同的語言開發(fā)。
- 微服務(wù)允許容易且靈活的方式集成自動部署,通過持續(xù)集成工具,如Jenkins, Hudson, bamboo 。
- 一個團隊的新成員能夠更快投入生產(chǎn)。
- 微服務(wù)易于被一個開發(fā)人員理解,修改和維護,這樣小團隊能夠更關(guān)注自己的工作成果。無需通過合作才能體現(xiàn)價值。
- 微服務(wù)允許你利用融合最新技術(shù)。
- 微服務(wù)只是業(yè)務(wù)邏輯的代碼,不會和HTML,CSS 或其他界面組件混合。
- 微服務(wù)能夠即時被要求擴展。
- 微服務(wù)能部署中低端配置的服務(wù)器上。
- 易于和第三方集成。
- 每個微服務(wù)都有自己的存儲能力,可以有自己的數(shù)據(jù)庫。也可以有統(tǒng)一數(shù)據(jù)庫。
缺點
- 微服務(wù)架構(gòu)可能帶來過多的操作。
- 需要DevOps技巧 (http://en.wikipedia.org/wiki/DevOps).
- 可能雙倍的努力。
- 分布式系統(tǒng)可能復(fù)雜難以管理。
- 因為分布部署跟蹤問題難。
- 當(dāng)服務(wù)數(shù)量增加,管理復(fù)雜性增加。
SOA(面向服務(wù)的架構(gòu))
SOA是一個組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來。面向服務(wù)架構(gòu),它可以根據(jù)需求通過網(wǎng)絡(luò)對松散耦合的粗粒度應(yīng)用組件進行分布式部署、組合和使用。
?
soa基本架構(gòu)圖
1.注冊中心: 保存服務(wù)提供方暴露的服務(wù)信息,常見的注冊中心有zookeeper eureka 也可用redis 默認eureka
2.服務(wù)提供方:提供服務(wù)者
3.服務(wù)消費方:當(dāng)需要調(diào)用遠程服務(wù)接口時,必須在注冊中心發(fā)現(xiàn)服務(wù)找到服務(wù)提供者,從而進行遠程方法調(diào)
dubbo實現(xiàn)微服務(wù)
Dubbo是阿里開源的一個SOA服務(wù)治理解決方案,文檔豐富,在國內(nèi)的使用度非常高?! ubbo
-
調(diào)用中間層變成了可選組件,消費者可以直接訪問服務(wù)提供者。
-
服務(wù)信息被集中到Registry中,形成了服務(wù)治理的中心組件。
-
通過Monitor監(jiān)控系統(tǒng),可以直觀地展示服務(wù)調(diào)用的統(tǒng)計信息。
-
Consumer可以進行負載均衡、服務(wù)降級的選擇。
但是對于微服務(wù)架構(gòu)而言,Dubbo也并不是十全十美的:
-
Registry嚴重依賴第三方組件(zookeeper或者redis),當(dāng)這些組件出現(xiàn)問題時,服務(wù)調(diào)用很快就會中斷。
-
DUBBO只支持RPC調(diào)用。使得服務(wù)提供方與調(diào)用方在代碼上產(chǎn)生了強依賴,服務(wù)提供者需要不斷將包含公共代碼的jar包打包出來供消費者使用。一旦打包出現(xiàn)問題,就會導(dǎo)致服務(wù)調(diào)用出錯。
-
最為重要的是,DUBBO現(xiàn)在已經(jīng)停止維護了,對于技術(shù)發(fā)展的新需求,需要由開發(fā)者自行拓展升級。這對于很多想要采用微服務(wù)架構(gòu)的中小軟件組織,顯然是不太合適的。
新選擇SpringCloud
與dubbo對比,spring cloud是借助以下組件來實現(xiàn)的:
上圖來自于SpringCloud中文文檔?包括了spring cloud現(xiàn)在有的所有組件,以及每個組件的作用。
后續(xù)會講解常用組件(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智能路由,微代理,控制總線)在這里先不做解釋。
SpringCloud與Dubbo對比
| 微服務(wù)需要的功能 | Dubbo | SpringCloud |
| 服務(wù)注冊與發(fā)現(xiàn) | Zookeeper | Eureka |
| 服務(wù)調(diào)用方式 | RPC | Restful API |
| 服務(wù)路由和過濾 | 有 | Zuul |
| 負載均衡 | 有 | Ribbon |
| 斷路器 | 有 | Hystrix |
| 分布式配置 | 無 | Spring Cloud Config |
| 分布式消息 | 無 | Spring Cloud Bus |
| 集群選主 | 無 | Spring Cloud Cluster |
| 批量任務(wù) | 無 | Spring Cloud Task |
| 服務(wù)跟蹤 | 無 | Sleuth&Zipkin |
| ...... | ...... | ...... |
文檔對比
Dubbo的?文檔?可以說在國內(nèi)開源框架中算是一流的,非常全,并且講解的也非常深入,由于版本已經(jīng)穩(wěn)定不再更新,所以也不太會出現(xiàn)不一致的情況,另外提供了中文與英文兩種版本,對于國內(nèi)開發(fā)者來說,閱讀起來更加容易上手,這也是dubbo在國內(nèi)更火一些的原因吧。 Spring Cloud由于整合了大量組件,文檔在體量上自然要比dubbo多很多,文檔內(nèi)容上還算簡潔清楚,但是更多的是偏向整合,更深入的使用方法還是需要查看其整合組件的詳細文檔。另外由于Spring Cloud基于Spring Boot,很多例子相較于傳統(tǒng)Spring應(yīng)用要簡單很多(因為自動化配置,很多內(nèi)容都成了約定的默認配置),這對于剛接觸的開發(fā)者可能會有些不適應(yīng),比較建議了解和學(xué)習(xí)Spring Boot之后再使用Spring Cloud,不然可能會出現(xiàn)很多一知半解的情況。 雖然Spring Cloud的文檔量大,但是如果使用Dubbo去整合其他第三方組件,實際也是要去閱讀大量第三方組件文檔的,所以在文檔量上,我覺得區(qū)別不大。對于文檔質(zhì)量,由于Spring Cloud的迭代很快,難免會出現(xiàn)不一致的情況,所以在質(zhì)量上我認為Dubbo更好一些。而對于文檔語言上,Dubbo自然對國內(nèi)開發(fā)團隊來說更有優(yōu)勢。 關(guān)注博主 后續(xù)繼續(xù)帶來Spring Cloud的系列文章,也歡迎各位朋友一起交流,共同進步。轉(zhuǎn)載于:https://www.cnblogs.com/yanfeiLiu/p/9461859.html
總結(jié)
以上是生活随笔為你收集整理的SpringCloud学习--微服务架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dojo省份地市级联之地市封装类(二)
- 下一篇: html 表单在当前窗口打开,js使用p