1. 程式人生 > >Spring Cloud常見問題與總結(四)

Spring Cloud常見問題與總結(四)

一.Spring Cloud各元件配置屬性

1.簡介

Spring Cloud中的大部分問題都可使用配置屬性來解決。本篇將相關元件的配置地址羅列出來,做個小結。

2.Spring Boot的配置

Spring Boot的所有元件配置都在其官方文件的附錄,地址如下:

https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/

3.Spring Cloud的配置屬性

Spring Cloud的所有元件配置都在其官方文件的附錄,地址如下:
http://cloud.spring.io/spring-cloud-static/Edgware.RELEASE/#_appendix_compendium_of_configuration_properties

4.原生配置

Spring Coud整合了很多類庫,例如Eureka、Ribbon、Feign等。這些元件自身也有一些配置屬性,如下:
1 Eureka的配置:https://github.com/netflix/eureka/wiki/Configuring-Eureka
2 Ribbon的配置:https://github.com/netflix/ribbon/wiki/Programmers-Guide
3 Hystrix的配置:https://github.com/netflix/Hystrix/wiki/Configuration
4 Turbine的配置:https://github.com/netflix/Turbine/wiki/Configuration-(1.x)


5.Zipkin的配置:https://github.com/openzipkin/zipkin/tree/master/zipkin-server

 

二.Spring Cloud定位問題思路總結

Spring Cloud進入Camden時代後,已經比較穩定。一般來說,問題都不是Spring Cloud本身的Bug導致。建議按照如下步驟進行定位。

1.排查配置問題

首先排查配置問題,舉幾個簡單的例子

  • YALM縮排是否正確

如果YALM配置檔案縮排不正確,Spring Cloud應用程式無法正常啟動,或配置無法正常載入。

類似問題應該在編碼過程中嚴格避免。

  • 配置屬性是否正確

配置屬性寫錯,不少初學者都會遇到這個問題。

很多場景下,這類問題可藉助IDE的提示功能來排查——當IDE不自動提示或給出警告時,應格外注意。

  • 配置屬性位置是否正確

配置屬性位置不正確可能會導致應用的不正常。舉幾個例子說明:

-應當配置在Eureka Client專案上的屬性,配置在了Eureka Server專案上。

-應當些在bootstrap.yml中的屬性,寫在了application.yml中,例如:

spring:
  cloud:
    config:
      uri: http://localhost:8080/

 -應當寫在application.yml中的屬性,寫在了bootstrap.yml中,例如:

eureka.client.healthcheck.enabled=true

2.排查環境問題

若配置無誤,即可考慮允許環境問題是否存在,同樣舉幾個例子:

  • 環境變數

例如Java環境變數、Maven環境變數以及Docker容器環境變數等。當應用無法正常工作時,應該確保環境變數配置正確。

  •  依賴下載是否完整

曾經有人遇到無法正常啟動的問題,最終發現僅僅是依賴沒有下載完整所致。因此,建議在啟動應用前,使用以下命令打包,從而確認依賴的完整性。

mvn clean package
  • 網路問題

微服務之間通過網路保持通訊,因此,網路常常是排查問題的關鍵。當問題發生時,可優先排查網路問題。

3.排查程式碼問題

經過以上步驟,依然沒有定位到Spring Cloud的問題,那麼可能是編寫程式碼出了問題。很多時候,常常因為少了某個註解,或是依賴缺失,而導致各種異常。
許多場景下,設定合理的日誌級別,會對問題定位有奇效。

4.排查Spring Cloud自身問題

如果確定不是自身程式碼問題,就可Debug一下Spring Cloud的程式碼了。同時,可在Github等平臺給Spring Cloud專案組提交Issue,然後參考官方答覆,嘗試避免相應問題。如問題無法規避,就需要Spring Cloud進行擴充套件,或者修復Spring Cloud的Bug,從而滿足需求。此時,請不要忘記在Spring Cloud的Github上Pull Request,協助官方改進Spring Cloud,讓Spring Cloud更加完善、穩定。

可供參考的資源


更多精彩內容,掃我有驚喜