基本springboot 2.0版本 spring-cloud的使用
Spring Cloud與Spring Boot版本匹配關系
從Spring Cloud與Spring Boot版本匹配關系可以看出,如果項目使用的spring boot 版本在 2.0以上,那么必須使用spring cloud 版本 為
Finchley.RELEASE版本 這個版本與以前的D版本有一些區別,下面主要講的就是spring cloud F版本的簡單使用
我這里也自己搭了一套關於spring-cloud的基本使用的demo,下面我來詳細介紹下該項目
其中gitHub地址為:
https://github.com/yihec/springCloud
首先介紹下各個module的用途:
1.首先是eureka-server 這是一個服務注冊中心,所有的服務都會在此上面管理,在Application
上增加@EnableEurekaServer注解即可, Eureka服務端可以部署成為高可用,每一個服務器都會復制注冊的服務狀態到其他服務器,然后打開網址http://localhost:1001/可以看到各個注冊的服務信息

2.config-server 配置中心,將各個服務配置保存在git,用於統一話管理配置文件,在 Application 上增加@EnableConfigServer注解即可。

3.server-1 和 server-2 這兩個都是服務生產者,里面除了本地服務外,另外在server-1中使用Feign 調用了server-2的接口,Feign封裝了HTTP調用服務方法,使得客戶端像調用本地方法那樣直接調用方法,類似Dubbo中暴露遠程服務的方式,區別在於Dubbo是基於私有二進制協議,而Feign本質上還是個HTTP客戶端。 另外還使用了一個Spring Cloud 斷路器 Hystrix, 以下是關於Hystrix的詳細介紹:
<1>服務降級:
在調用接口的時候,可以實現一個fallback方法, 當請求后端服務出現異常的時候, 可以使用fallback
方法返回的值.fallback方法的返回值一般是設置的默認值或者來自緩存.
<2>斷路器:
當Hystrix Command請求后端服務失敗數量超過一定比例(默認50%), 斷路器會切換到開路狀態(Open).
這時所有請求會直接失敗而不會發送到后端服務. 斷路器保持在開路狀態一段時間后(默認5秒),
自動切換到半開路狀態(HALF-OPEN). 這時會判斷下一次請求的返回情況, 如果請求成功, 斷路器切回閉路
狀態(CLOSED),否則重新切換到開路狀態(OPEN). 即有自我檢測並恢復的能力.
<3> 資源隔離:
在Hystrix中, 主要通過線程池來實現資源隔離. 通常在使用的時候我們會根據調用的遠程服務划分出多個線
程池. 例如調用產品服務的Command放入A線程池, 調用賬戶服務的Command放入B線程池. 這樣做的主要
優點是運行環境被隔離開了. 這樣就算調用服務的代碼存在bug或者由於其他原因導致自己所在線程池被耗
盡時, 不會對系統的其他服務造成影響. 但是帶來的代價就是維護多個線程池會對系統帶來額外的性能開
銷. 如果是對性能有嚴格要求而且確信自己調用服務的客戶端代碼不會出問題的話, 可以使用Hystrix的信號
模式(Semaphores)來隔離資源.
另外當服務越來越多的時候,這時候就需要用到服務鏈路追蹤(Spring Cloud Sleuth)
在spring Cloud為F版本的時候,已經不需要自己構建Zipkin Server了,只需要下載jar即可,下載地址:
https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/ 然后使用java -jar啟動,
再打開http://localhost:9411/的界面,我在server-1 中調用了server-2的接口,然后點擊依賴分析,可以看到詳細的調用情況

4:service-zuul
路由網關
(zuul)服務,zuul
是微服務架構的不可或缺的一部分,提供動態路由,監控,安全,權限認證等服務。可以在這里面進行統一的比如異常處理,權限認證等等。其實跟spring中的uri
過濾器有點像,首先所有的請求第一時間經過這里,然后通過
過濾處理,跳轉不同的頁面
5.消息總線(Spring Cloud Bus) Spring Cloud Bus 將分布式的節點用輕量的消息代理連接起來。它可以用於廣播配置文件的更改或者服務之間的通訊,也可以用於監控。主要就是說,當修改了配置中心的配置之后,以前一般來說需要重新啟動項目,而現在不需要進行重啟就可以實現配置刷新。
1.引入spring-cloud-starter-bus-amqp
2.配置rabbitmq信息
3.項目中引入@RefreshScope 注解,然后啟動項目
此時rabbitmq管理頁面,會自動創建一個 topic 類型的 Exchange
接着修改配置中心,也就是git倉庫里面的配置信息,然后調用http://localhost:2001/actuator/bus-refresh/ 記得要使用POST方式,最好在postman里面調用,瀏覽器中是不行的,然后頁面自動刷新配置信息,具體實現可以參考 server-1 中的代碼
6:hystrix-dashboard 斷路器監控(Hystrix Dashboard)
在微服務架構中為例保證程序的可用性,防止程序出錯導致網絡阻塞,出現了斷路器模型。斷路器的狀況反應了一個程序的可用性和健壯性,它是一個重要指標。Hystrix Dashboard是作為斷路器狀態的一個組件,提供了數據監控和友好的圖形化界面。
啟動server-1項目,輸入網址http://localhost:2001/hystrix,

在SpringBoot 2.0版本中會出現Unable to connect to Command Metric Stream.異常信息,此時需要配置
servlet

然后
在界面依次輸入:http://localhost:2001/hystrix.stream
、2000 、aa(標題,隨便取);點確定。然后調用接口輸入網址 http://localhost:2001/HelloServer2
,會出現下面頁面,這個就是服務調用錯誤的提示

最后啟動server-2,接口調用成功

以上就是關於spring-cloud的一些簡單使用,其中有疑問或者不對的地方,希望大家留言指出,感謝!
參考資料:https://blog.csdn.net/forezp/article/details/70148833/
https://gitee.com/didispace/SpringCloud-Learning