1. 程式人生 > >高並發、高可用、微服務架構選型Dubbo與Spring Cloud【純幹貨,必收藏】!

高並發、高可用、微服務架構選型Dubbo與Spring Cloud【純幹貨,必收藏】!

service paas 裏的 輸出 bfd urb 周期 抽象 trac

一.Dubbo

Dubbo,是阿裏巴巴服務化治理的核心框架,並被廣泛應用於阿裏巴巴集團的各成員站點(阿裏巴巴現在使用架構為HSF)。 於2012-10-24最後版本2.5.3成為最後一版本,由當當接手維護,命名為dubbox;2017年突然繼續dubbo進行維護。

技術分享圖片
  • Dubbo 核心部件:
  • Provider: 暴露服務的提供方。
  • Consumer:調用遠程服務的服務消費方。
  • Registry: 服務註冊中心和發現中心。
  • Monitor: 統計服務和調用次數,調用時間監控中心。(dubbo的控制臺頁面中可以顯示)
  • Container:服務運行的容器。

1.1 Dubbo服務集群-集群容錯模式

技術分享圖片

架構技術選型與設計-微服務選型

技術分享圖片

架構技術選型與設計-DUBBO

技術分享圖片

架構技術選型與設計-DUBBO

技術分享圖片

二. Spring Cloud

Spring Cloud,從命名我們就可以知道,它是Spring Source的產物,Spring社區的強大背書可以說是Java企業界最有影響力的組織了,除了Spring Source之外,還有Pivotal和Netfix是其強大的後盾與技術輸出。其中Netflix開源的整套微服務架構套件是Spring Cloud的核心。

如果拿Dubbo與Netflix套件做對比,前者在國內影響力較大,後者在國外影響力較大,在背景上可以打個平手;但是若要與Spring Cloud做對比,由於Spring Source的加入,在背書上,Spring Cloud略勝一籌,但是在高並發上dubbo曾經在阿裏的運營中實際承載過過億用戶同時在線的,而Netflix 並沒有實際的上線應用中體現過。

Spring Cloud下面有19個子項目(可能還會新增)分別覆蓋了微服務架構下的方方面面,服務治理只是其中的一個方面,一定程度來說,Dubbo只是Spring Cloud Netflix中的一個子集。但是在選擇框架上,方案完整度恰恰是一個需要重點關註的內容,當然從高可用和高並發一起考慮,Spring Cloud 無疑是最佳選擇。

2.1 Spring Cloud 工具框架

1、Spring Cloud Config 配置中心,利用git集中管理程序的配置。

2、Spring Cloud Netflix 集成眾多Netflix的開源軟件

3、Spring Cloud Bus 消息總線,利用分布式消息將服務和服務實例連接在一起,用於在一個集群中傳播狀態的變化

4、Spring Cloud for Cloud Foundry 利用Pivotal Cloudfoundry集成你的應用程序

5、Spring Cloud Cloud Foundry Service Broker 為建立管理雲托管服務的服務代理提供了一個起點。

6、Spring Cloud Cluster 基於Zookeeper, Redis, Hazelcast, Consul實現的領導選舉和平民狀態模式的抽象和實現。

7、Spring Cloud Consul 基於Hashicorp Consul實現的服務發現和配置管理。

8、Spring Cloud Security 在Zuul代理中為OAuth2 rest客戶端和認證頭轉發提供負載均衡

9、Spring Cloud Sleuth SpringCloud應用的分布式追蹤系統,和Zipkin,HTrace,ELK兼容。

10、Spring Cloud Data Flow 一個雲本地程序和操作模型,組成數據微服務在一個結構化的平臺上。

11、Spring Cloud Stream 基於Redis,Rabbit,Kafka實現的消息微服務,簡單聲明模型用以在Spring Cloud應用中收發消息。

12、Spring Cloud Stream App Starters 基於Spring Boot為外部系統提供spring的集成

13、Spring Cloud Task 短生命周期的微服務,為SpringBooot應用簡單聲明添加功能和非功能特性。

14、Spring Cloud Task App Starters

15、Spring Cloud Zookeeper 服務發現和配置管理基於Apache Zookeeper。

16、Spring Cloud for Amazon Web Services 快速和亞馬遜網絡服務集成。

17、Spring Cloud Connectors 便於PaaS應用在各種平臺上連接到後端像數據庫和消息經紀服務。

18、Spring Cloud Starters (項目已經終止並且在Angel.SR2後的版本和其他項目合並)

19、Spring Cloud CLI 插件用Groovy快速的創建Spring Cloud組件應用。

Spring Cloud共集成了19個子項目,裏面都包含一個或者多個第三方的組件或者框架!

2.2 Spring cloud 實現采用的技術

1、spring cloud : 一個雲應用工具,為雲應用開發的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖定、決策競選、分布式會話和集群狀態管理等操作

2、spring cloud config :配置管理開發工具包

3、 spring cloud Bus :事件消息總線用於集群(例如:配置變化時間)中傳播狀態變化,與spring cloud config 聯合實現熱部署

4、 spring cloud Netflix Eureka : 雲端負載均衡基礎,一個基於Rest的服務,用於定位服務,以實現雲端的負載均衡和中間層服務器的故障轉移

5、 spring cloud Netflix Hystrix : 容錯管理工具,旨在通過控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力

6 、 Netflix ZUUL: 邊緣服務工具,提供動態路由、監控、彈性、安全等邊緣服務

7、 spring cloud sleuth :日誌收集工具包、封裝Purpose 、Zipkin和Trace

8、 Spring Cloud Security : 安全工具包,為應用程序添加安全控制,主要是OAuth2

9、 spring cloud turbine :聚合服務器發送時間流,監控集群下Netflix 和 metrics 情況

2.3 Spring cloud 規劃設計

技術分享圖片 技術分享圖片 技術分享圖片

2.4 Spring cloud 配置中心

技術分享圖片

2.5 Spring cloud 註冊中心

技術分享圖片

2.6 Spring cloud 網關

服務路由、安全認證、會話共享、客戶端負載均衡、統一異常處理、跨域請求

技術分享圖片

2.7 Spring cloud 斷路由

技術分享圖片 技術分享圖片

高並發、高可用、微服務架構選型Dubbo與Spring Cloud【純幹貨,必收藏】!