1. 程式人生 > >2、Spring Cloud - 入門概述

2、Spring Cloud - 入門概述

內部 info 線程 activemq 雪崩 復雜 特性 本地倉庫 wid

前言:

Spring Cloud是什麽:

官網說明 SpringCloud,基於SpringBoot提供了一套微服務解決方案,包括服務註冊與發現,配置中心, 全鏈路監控,服務網關,負載均衡,熔斷器等組件,除了基於NetFlix的開源組件做高度抽象封 裝之外,還有一些選型中立的開源組件。 SpringCloud利用SpringBoot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,SpringCloud為開發 人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總 線、全局鎖、決策競選、分布式會話等等,它們都可以用SpringBoot的開發風格做到一鍵啟動和部署。 SpringBoot並沒有重復制造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來, 通過SpringBoot風格進行再封裝屏蔽掉了復雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和 易維護的分布式系統開發工具包 技術分享圖片
SpringCloud=分布式微服務架構下的一站式解決方案,是各個微服務架構落地技術的集合體,俗稱微服務全家桶 SpringCloud和SpringBoot是什麽關系 SpringBoot專註於快速方便的開發單個個體微服務。 SpringCloud是關註全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來, 為各個微服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等集成服務 SpringBoot可以離開SpringCloud獨立使用開發項目,但是SpringCloud離不開SpringBoot,屬於依賴的關系.
SpringBoot專註於快速、方便的開發單個微服務個體,SpringCloud關註全局的服務治理框架。 Dubbo是怎麽到SpringCloud的? 哪些優缺點讓去技術選型 1、 目前成熟的互聯網架構(分布式+服務治理Dubbo) 2、我們把SpringCloud VS DUBBO進行一番對比 活躍度:https://github.com/dubbo https://github.com/spring-cloud 對比結果: 技術分享圖片

2.1、微服務應該具備的功能

微服務具有以下的特點: 技術分享圖片

微服務的功能主要體現在以下兒個方面:

技術分享圖片

2.1.1 服務的註冊與發現

技術分享圖片

2.1 .2 服務的負載均衡

服務的負載均衡 技術分享圖片

將服務註冊中心高可用

技術分享圖片

2.1.3 服務的容錯

1個微服務系統有很多個服務,當 服務 F因某些原因導致了服務的不可用 來自於用戶的網絡請求需要調用服務F 由於服務F 無響應,用戶的請求都處於阻塞狀態 在高並發的場景下 短時間內會導致服務器的 線程資源消耗殆盡。 依賴於服務F 的其他的服務 ,例如 圖中的服務 E、服務G 、服務 J, 會等待服務F 的響應,處於阻塞狀態,導致這些服務的線程資源消耗殆盡 會出現:雪崩效應 技術分享圖片 為了解決分布式系統的雪崩效應,分布式系統引進了熔斷器機制 熔斷器( Circuit Breaker)一詞來源於物理學中的電路知識 它的作用是當電路中 出現故障時迅速切斷電路,起到保護電路的作用 當一 個服務的處理用戶請求 失敗次數在一 定時間內於設定的閥值時,熔斷器處於關閉狀態,服務正常 當服務處理用戶請求的失敗次數大於設定的閥值時,說明服務出現了故障,打開熔斷器, 這時所有的請求會執行快速失敗,不執行業務邏輯。 當處於打開狀態的熔斷器時一 段時間後會處於半打開狀態,並執行 一定數量的請求 剩余的請求會執行快速失敗,若執行的請求失敗了,則繼續打開熔斷器;若成功了,則將熔斷器關閉 技術分享圖片

作用:

技術分享圖片 Netflix的 Hystrix 熔斷器開源組件功能非常強大,不僅有烙斷器的功能,還有熔斷器的狀態 監測,並提供界面友好的 UI 開發人員或者運維人員通過 UI 界面能夠直觀地看到熔斷器的狀 態和各種性能指標。

2.1.4 服務網關

技術分享圖片

技術分享圖片

技術分享圖片

2.1 .5 服務配置的統一管理

大致過程如下: 技術分享圖片

技術分享圖片

技術分享圖片

對於集群化的服務 可以通過使用消息總線來刷新多個服務實例。如果服務數量較多,對配置 中心需要考慮集群化部署,從而使配置中心高可用,做分布式集群

2.1.6 服務鏈路追蹤

微服務系統是一個分布式架構的系統,微服務系統按業務劃分服務單元, 一個微服務系統 往往有很多個服務單元。由於服務單元數量很多且業務復雜, 服務與服務之間的調用有可能非常復雜,一 旦出現了異常和 錯誤,就會很難去定位。所以在微服務架構中,必須實現分 布式鏈路追蹤,去跟進 個請求到底有哪些服務參與,參與 的順序又是怎樣的 ,從而使每個請求鏈路清晰可見,出了問 題很快就能定位。

2.2、SpringCloud

2.2.1 簡介

Spring Cloud 是基於 Spring Boot的, Spring Boot 是由 Pivotal 團隊提供的全新 Web框架 它主要的特點就是簡化了開發和部署的過程 簡化了 Spring 復雜的配置和依賴管理,通過起步依賴和內置 Servilet 容器能夠使開發者迅速搭一個 Web 工程。 Spring Cloud 在開發部署上繼承了 Spring Boot的一些優點,提高其在開發和部署上的效率。 Spring Cloud 的首要目標就是通過提供 系列開發組件和框架,幫助開發者迅速搭建一個分布式的微服務系統

2.2.2 常用組件

1、服務註冊和發現組件 Eureka 利用 Eureka 組件可以很輕松地實現服務的註冊和發現的功能。 2、熔斷組件 Hystrix Hystrix是一個 熔斷組件,它除了有一些些基本的熔斷器功能外,還能夠實現服務降級、服務限流的功能。 3、負載均衡組件 Ribbon Ribbon是一個個負載均衡組件,它通常和 Eureka Zuul RestTemplate Feign 配合使用。 4、路由網關 Zuul 路由網關 Zuul 有智能路由和過濾的功能。內部服務的 API 接口通過 Zuul 網關統 一對外暴露, 內部服務的 API 接口不直接暴露,防止了內部服務敏感信息對外暴露。 5、Spring Cloud Config Spring Cloud Config 組件提供了配置文件統 管理的功能。 Spring Cloud Config Server包括Server端和 Client Server 端讀取本地倉庫或者遠程倉庫的配 置文件,所有的 Client向 Server讀取配置信息,從而達到配置文件統 管理的目的。 6、Spring Cloud Security Spring Cloud Security 是對 Spring Security 組件的封裝 Spring Cloud Security 向服務單元 提供了用戶驗證和權限認證。(很少使用) 7、Spring Cloud Sleuth Spring Cloud Sleuth 是一個分布式鏈路追蹤組件,它封裝了 Dapper 、Zipkin、 Kibana 等組 件,通過它可以知道服務之間的相互依賴關系,並實時觀察鏈路的調用情況 8、Spring Cloud Stream Spring Cloud Stream Spring Cloud 框架的數據流操作包,可以封裝 RabbitMq ActiveMq Kafka Red is 等消息組件, 利用 Spring Cloud Stream 可以實現消息的接收和發送。 技術分享圖片

2.2.3 項目一覽表

技術分享圖片

技術分享圖片

技術分享圖片

2.3、Dubbo簡介

Dubbo 是阿裏巴巴開源的一個分布式服務框架,致力於提供高性能和 透明化的 RPC 遠程 服務調用方 ,以及 SOA 服務冶理方案 。 核心: 技術分享圖片

架構圖:

技術分享圖片

流程圖如下: 技術分享圖片

特性: 技術分享圖片

技術分享圖片

2.4、spring cloud與Dubbo的比較

技術分享圖片

2、Spring Cloud - 入門概述