微服務架構是一種架構模式或者說是一種架構風格,不同于集中式的服務管理機制,它提倡將單一應用程序劃分成一組小的服務,根據業務拆分成一個一個的服務,每個服務都圍繞著具體業務進行構建并且運行在其獨立的自己的進程中。服務之間通常是基于HTTP的RESTful API的輕量級的通信機制交互。每個服務能夠被獨立地部署到預生產環境、生產環境等。
優點:微服務可使用不同的語言開發,開發效率提高,一個服務可以專一的只干一件事。
1.復雜度?:服務調?要考慮被調??故障、過載、消息丟失等各種異常情況,代碼邏輯更加復雜;對于微服務間的事務性操作,因為不同的微服務采?了不同的數據庫,將?法利?數據庫本身的事務機制保證?致性,需要引??階段提交等技術。
2.運維復雜:系統由多個獨?運?的微服務構成,需要?個設計良好的監控系統對各個微服務的運?狀態進?監控。運維?員需要對系統有細致的了解才對夠更好的運維系統。
3.通信延遲:微服務之間調?會有時間損耗,造成通信延遲。
1)與分布式系統相關的復雜性-這種開銷包括網絡問題,延遲開銷,帶寬問題,安全問題。
2)服務發現-服務發現工具管理群集中的流程和服務如何查找和互相交談。它涉及一個服務目
錄,在該目錄中注冊服務,然后能夠查找并連接到該目錄中的服務。
3)冗余-分布式系統中的冗余問題。
4)負載平衡 --負載平衡改善跨多個計算資源的工作負荷,諸如計算機,計算機集群,網絡鏈
路,中央處理單元,或磁盤驅動器的分布。
5)性能-問題 由于各種運營開銷導致的性能問題。
1遠程過程調用(Remote Procedure Invocation)
只支持請求/響應的模式,要求客戶端和服務端在請求過程中必須都是可用的
2異步消息
支持很多通信機制比如通知、請求/異步響應、發布/訂閱、發布/異步響應;
SOA(全稱:Service Oriented Architecture),中文意思為 “面向服務的架構”,
1.微服務去中心化,去掉ESB企業總線。微服務不再強調傳統SOA架構里面比較重的ESB企業服務總線,同時SOA的思想進入到單個業務系統內部實現真正的組件化
2.Docker容器技術的出現,為微服務提供了更便利的條件,比如更小的部署單元,每個服務可以通過類似Node或者Spring Boot等技術跑在自己的進程中。
3.SOA注重的是系統集成方面,而微服務關注的是完全分離。
Netflix OSS 開源組件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心組件。
1.Eureka:服務治理組件,包括服務端的注冊中心和客戶端的服務發現機制;
2.Ribbon:負載均衡的服務調用組件,具有多種負載均衡調用策略;
3.Hystrix:服務容錯組件,實現了斷路器模式,為依賴服務的出錯和延遲提供了容錯能力;
4.Feign:基于Ribbon和Hystrix的聲明式服務調用組件;
5.Zuul:API網關組件,對請求提供路由及過濾功能。
6.Spring Cloud Config:分布式統一配置管理;
1SpringBoot專注于快速方便的開發單個個體微服務。
2SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合并管理起來,為各個微服務之間提供配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等集成服務。
3SpringBoot可以離開SpringCloud獨立使用開發項目,但是SpringCloud離不開SpringBoot,屬于依賴的關系.
4SpringBoot專注于快速、方便的開發單個微服務個體,SpringCloud關注全局的服務治理框架。
服務調用方式:Dubbo是RPC,SpringCloud是RestApi;
注冊中心:Dubbo 是zookeeper,SpringCloud是Eureka,也可以是ZooKeeper
服務網關:Dubbo本身沒有實現,只能通過其他第三方技術整合,SpringCloud有Zuul路由網關,作為路由服務器,進行消費者的請求分發,SpringCloud支持斷路器,與git完美集成配置文件支持版本控制,事務總線實現配置文件的更新與服務自動裝配等等一系列的微服務架構要素。