這是一個Spring Cloud系列文章,它並不會講解所有的知識點,它只是基於微服務的場景來**逐步介紹**常見組件的作用和意義,以及場景組件的整合。對於每個組件的知識並不會講解太多,只講常見的,目的是儘可能快速的對Spring Cloud的常用組件有一個基礎的認知,有了認知之後,你就可以基於你面對... ...
目錄
這是一個Spring Cloud系列文章,它並不會講解所有的知識點,它只是基於微服務的場景來逐步介紹常見組件的作用和意義,以及場景組件的整合。對於每個組件的知識並不會講解太多,只講常見的,目的是儘可能快速的對Spring Cloud的常用組件有一個基礎的認知,有了認知之後,你就可以基於你面對的場景來單獨學習某個組件,逐步豐滿自己Spring Cloud的知識。
Spring Cloud的介紹
- Spring Cloud是一個微服務架構,他有多種組件來管理微服務的方方面面。Spring Cloud是用於構建微服務開發和治理的框架的集合。
- Spring Cloud是最熱門的Java技術毋庸置疑。
- 官網
微服務的介紹
- 微服務是什麼這裡就不細化介紹了吧,應用服務化已經成為了趨勢,簡單的說就是把以前ALL-IN-ONE的一體應用的內部功能進行拆分,比如把簡訊功能單獨出來作為一個可以提供給外部調用的服務,這樣既提供了簡訊服務的復用性(其他的應用也能夠復用這個功能),也使得對某個功能進行單獨的負載能力提升稱為可能(All In One 的如果想提升搶購功能的負載能力的話,採用部署多個服務端來提升搶購功能的負載能力的時候也會順帶提升了用戶註冊等的負載能力,這就額外浪費了資源)。
- 在微服務的理論中,為瞭解耦,每個微服務使用單獨的資料庫(當然了,可能有些人會覺得是同名服務使用同一個資料庫,微服務這東西概念其實還挺多爭論的。)。
- 馬丁.福勒談微服務
Spring Cloud出現的原因:
- 當你把原來的應用服務化了之後,那麼就會遇到這些服務的管理問題了,比如說檢測服務的可用性、查看現在有什麼服務、多個同名(同功能)的服務怎麼做到負載均衡之類的問題。
- Spring Cloud,基於Spring Boot提供了一套微服務解決方案,包括服務註冊與發現,配置中心,全鏈路監控,服務網關,負載均衡,熔斷器等組件。這些組件也不全是Spring 自己開發的,有一些是開源的組件,Spring進行了封裝了而已(Spring Cloud Netflix主要來自Netflix OSS的開源組件,Spring Cloud Alibaba由阿裡提供)。Spring Cloud像Spirng Boot 的starter一樣屏蔽了複雜的配置,讓我們能夠通過簡單的配置來進行微服務開發。
常見場景:
Spring Cloud可以解決以下的常見幾個場景(暫時只列舉幾個常見場景,其實微服務的方方面面基本都有解決方案)
- 服務的開發:使用Spring Boot開發服務方便快速(Spring Boot其實不算Spring Cloud的內部組件,只能算一家人吧)
- 服務的註冊與發現:主要是Eureka提供,用於把微服務註冊到Eureka中和讓服務消費者從Eureka中獲取可用微服務列表。(當然現在也有很多採用別的組件來做服務的註冊與發現)
- 負載均衡:主要由Ribbon提供,用於在服務消費者端進行負載均衡,從而把請求均衡到各個同名服務上。
- API網關:主要由Zuul提供,提供統一的服務調用入口,所有的服務調用都通過Zuul來調用,提供請求轉發、請求過濾等功能。
- 服務的容錯的處理--斷路器:主要有Hystrix提供,用於解決微服務調用時發生服務熔斷的問題。
- 分散式服務配置:主要由Spring Cloud Config提供,用於解決多個微服務的統一配置和分發配置問題。(一個服務的配置可以從Config配置中心中拉取)
- 數據監控、消息匯流排。。。。。。。
微服務的優劣勢:
優勢:
- 微服務化之後,代碼也偏向簡單模塊化,會比較容易理解,就好比你搞一個正經的商城難,你搞一個註冊功能還不輕鬆嗎?