由於SpringCloud的核心是Restful結構,如果妳想更好地使用Rest這些微服務,妳需要考慮以下問題。
1,所有的微服務地址會非常多,所以為了統壹管理這些地址信息,並及時告訴用戶哪些服務不可用,需要準備壹個分布式註冊中心,註冊中心要支持HA機制。為了快速方便地註冊所有服務,SpringCloud中提供了Eureka註冊中心。
對於整個WEB端架構(SpringBoot實現),妳可以輕松方便地編寫WEB程序,然後使用Nginx或Apache來實現負載平衡,但妳的WEB端出現了負載平衡,那麽業務端呢?還應該有多個服務端進行負載平衡。那麽此時,所有需要參與負載平衡的服務都需要在Eureka中註冊。
當客戶端使用Rest架構進行調用時,它通常需要壹個調用地址。即使尤裏卡現在被用作註冊中心,它也需要壹個明確的呼叫地址。但是,如果所有的操作都是通過使用調用地址來處理的,那麽對於程序的開發人員來說最方便的工具就是接口,所以現在希望Rest服務的所有內容都可以以接口的方式調用,所以它提供了壹種Feign技術,可以用來偽造接口。
在設計整體微架構時,由於涉及的問題仍屬於RPC,因此必須考慮熔絲處理機制。事實上,所有的保險絲就像生活中使用的保險絲壹樣。有了保險絲,家用電器在壹些設備發生故障後仍可以正常使用。如果有幾個微服務,並且這些微服務可以相互調用,例如,A微服務調用B微服務,B微服務調用C微服務。
如果在實際項目設計過程中對熔斷機制處理不當,那麽就會發生雪崩效應。因此,為了防止此類問題的發生,SpringCloud提供了Hystrix fuse處理機制,以確保即使出現問題,某個微服務仍然可以正常使用。
通過zuul的代理用戶只需要知道指定的路由路徑就可以訪問指定微服務的信息,這更好地體現了java中“key=value”的設計思想,所有微服務通過Zuul代理後都更加合理地隱藏起來。
在SpringBoot學習時,我壹直強調壹個問題:SpringBoot強調“零配置”的概念,其本質是不需要配置文件,但實際上這並沒有完全實現,因為在整個現實中,仍然會提供application.yml的配置文件,所以如果在創建微服務的過程中有數百個微服務,這些配置文件的管理將成為壹個問題。例如,如果妳有壹天突然改變了妳的主機的機房,所有服務的IP地址都可能改變,這對程序的維護非常不方便。為了解決這個問題,在SpringCloud的設計過程中提供了壹個SpringCloudConfig程序組件,使用該組件可以基於GIT或SVN直接管理配置文件。
在整體設計中,SpringCloud更好地實現了RPC架構設計,並使用Rest作為通信的基礎,這是他的成功之處。由於網飛產品技術的廣泛應用,這些技術也得到了可靠的保證。