Spring cloud子项目
目前來說spring主要集中于spring boot(用于開發(fā)微服務(wù))和spring cloud相關(guān)框架的開發(fā),我們從幾張圖著手理解,然后再具體介紹:
spring cloud子項目包括:
Spring Cloud Config:配置管理開發(fā)工具包,可以讓你把配置放到遠(yuǎn)程服務(wù)器,目前支持本地存儲、Git以及Subversion。
Spring Cloud Bus:事件、消息總線,用于在集群(例如,配置變化事件)中傳播狀態(tài)變化,可與Spring Cloud Config聯(lián)合實現(xiàn)熱部署。
Spring Cloud Netflix:針對多種Netflix組件提供的開發(fā)工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。
Netflix Eureka:云端負(fù)載均衡,一個基于 REST 的服務(wù),用于定位服務(wù),以實現(xiàn)云端的負(fù)載均衡和中間層服務(wù)器的故障轉(zhuǎn)移。
Netflix Hystrix:容錯管理工具,旨在通過控制服務(wù)和第三方庫的節(jié)點,從而對延遲和故障提供更強大的容錯能力。
Netflix Zuul:邊緣服務(wù)工具,是提供動態(tài)路由,監(jiān)控,彈性,安全等的邊緣服務(wù)。
Netflix Archaius:配置管理API,包含一系列配置管理API,提供動態(tài)類型化屬性、線程安全配置操作、輪詢框架、回調(diào)機制等功能。
Spring Cloud for Cloud Foundry:通過Oauth2協(xié)議綁定服務(wù)到CloudFoundry,CloudFoundry是VMware推出的開源PaaS云平臺。
Spring Cloud Sleuth:日志收集工具包,封裝了Dapper,Zipkin和HTrace操作。
Spring Cloud Data Flow:大數(shù)據(jù)操作工具,通過命令行方式操作數(shù)據(jù)流。
Spring Cloud Security:安全工具包,為你的應(yīng)用程序添加安全控制,主要是指OAuth2。
Spring Cloud Consul:封裝了Consul操作,consul是一個服務(wù)發(fā)現(xiàn)與配置工具,與Docker容器可以無縫集成。
Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服務(wù)注冊和發(fā)現(xiàn)。
Spring Cloud Stream:數(shù)據(jù)流操作開發(fā)包,封裝了與Redis,Rabbit、Kafka等發(fā)送接收消息。
Spring Cloud CLI:基于 Spring Boot CLI,可以讓你以命令行方式快速建立云組件。
Spring Cloud介紹
Spring Cloud是一個基于Spring Boot實現(xiàn)的云應(yīng)用開發(fā)工具,它為基于JVM的云應(yīng)用開發(fā)中的配置管理、服務(wù)發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態(tài)管理等操作提供了一種簡單的開發(fā)方式。
Spring Cloud與Dubbo對比
提到Dubbo,我想順便提下ESB,目前央視新華社也在用ESB來做任務(wù)編排,這里先比較下Dubbo和ESB:
ESB(企業(yè)數(shù)據(jù)總線),一般采用集中式轉(zhuǎn)發(fā)請求,適合大量異構(gòu)系統(tǒng)集成,側(cè)重任務(wù)的編排,性能問題可通過異構(gòu)的方式來進行規(guī)避,無法支持特別大的并發(fā)。
Dubbo(服務(wù)注冊管理),采用的是分布式調(diào)用,注冊中心只記錄地址信息,然后直連調(diào)用,適合并發(fā)及壓力比較大的情況;其側(cè)重服務(wù)的治理,將各個服務(wù)顆粒化,各個子業(yè)務(wù)系統(tǒng)在程序邏輯上完成業(yè)務(wù)的編排。
回歸主題,Spring Cloud和Dubbo又有什么不同那,首先,我們看下有什么相同之處,它們兩都具備分布式服務(wù)治理相關(guān)的功能,都能夠提供服務(wù)注冊、發(fā)現(xiàn)、路由、負(fù)載均衡等。說到這,Dubbo的功能好像也就這么多了,但是Spring Cloud是提供了一整套企業(yè)級分布式云應(yīng)用的完美解決方案,能夠結(jié)合Spring Boot,Docker實現(xiàn)快速開發(fā)的目的,所以說Dubbo只有Spring Cloud的一部分RPC功能,而且也談不上誰好誰壞。不過,Dubbo項目現(xiàn)已停止了更新,淘寶內(nèi)部由hsf替代dubbo,我想這會有更多人傾向Spring Cloud了。
從開發(fā)角度上說,Dubbo常與Spring、zookeeper結(jié)合,而且實現(xiàn)只是通過xml來配置服務(wù)地址、名稱、端口,代碼的侵入性是很小的,相對Spring Cloud,它的實現(xiàn)需要類注解等,多少具有一定侵入性。
Spring Cloud子項目
Spring Cloud包含了多個子項目(針對分布式系統(tǒng)中涉及的多個不同開源產(chǎn)品),之前在第一章節(jié)也介紹這些,比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等項目,可以跳至(一)看下。
配置服務(wù)
Spring Cloud提供了Config Server,它有在分布式系統(tǒng)開發(fā)中做外部配置的功能,通過Config Server我們可以集中存儲所有應(yīng)用的配置文件。Config Server支持Git或者在文件系統(tǒng)中放置配置文件(GitLab),通常我們使用不同格式來區(qū)分不同應(yīng)用的不同配置文件。云計算環(huán)境下,習(xí)慣上使用YAML配置,而且一般配置文件的位置都放在類路徑下的config目錄下,配置文件規(guī)則:應(yīng)用名+profile.yml:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
Spring Cloud提供了注解@EnableConfigServer來啟動配置服務(wù)。
服務(wù)發(fā)現(xiàn)
Spring Cloud通過Netflix OSS的Eureka來實現(xiàn)服務(wù)發(fā)現(xiàn),服務(wù)發(fā)現(xiàn)的主要目的是為了讓每個服務(wù)之間可以互相通信。Eureka Server為微服務(wù)的注冊中心。談到Spring Cloud Netflix,它是Spring Cloud的子項目之一,主要提供的模塊包括:服務(wù)發(fā)現(xiàn)(Eureka),斷路器(Hystrix),智能路有(Zuul),客戶端負(fù)載均衡(Ribbon)等。
Spring Cloud使用注解的方式提供了Eureka服務(wù)端(@EnableEurekaServer)和客戶端(@EnableEurekaClient)。
路由網(wǎng)關(guān)
路由網(wǎng)關(guān)的主要目的是為了讓所有的微服務(wù)對外只有一個接口,我們只需訪問一個網(wǎng)關(guān)地址,即可由網(wǎng)關(guān)將所有的請求代理到不同的服務(wù)中。Spring Cloud是通過Zuul來實現(xiàn)的,支持自動路由映射到在Eureka Server上注冊的服務(wù)。Spring Cloud提供了注解@EnableZuulProxy來啟用路由代理。
負(fù)載均衡
Spring Cloud提供了Ribbon和Feign作為客戶端的負(fù)載均衡。在Spring Cloud下,使用Ribbon直接注入一個RestTemplate對象即可,此RestTemplate已做好負(fù)載均衡的配置;而使用Feign只需定義個注解,有@FeignClient注解的接口,然后使用@RequestMapping注解在方法上映射遠(yuǎn)程的REST服務(wù),此方法也是做好了負(fù)載均衡配置。
斷路器
斷路器(Circuit Breaker)主要是為了解決當(dāng)某個方法調(diào)用失敗的時候,調(diào)用后備方法來替代失敗的方法,已達(dá)到容錯/阻止級聯(lián)錯誤的功能。Spring Cloud使用@EnableCircuitBreaker來啟用斷路器支持,使用@HystrixCommand的fallbackMethod來指定后備方法。(@HystrixCommand(fallbackMethod="fallbackOper"))
Spring Cloud還提供了一個控制臺來監(jiān)控斷路器的運行情況,通過@EnableHystrixDashboard注解開啟。
Spring Cloud依賴庫
這里我會羅列下常用的一些依賴包,為了更好理解每個依賴所負(fù)責(zé)的區(qū)域,我還是用一張和之前類似的圖來展示各塊的功能:
常用依賴包如下:
spring-cloud-starter-parent具備spring-boot-starter-parent同樣功能并附加SpringCloud的依賴
spring-cloud-starter-config默認(rèn)的配置服務(wù)依賴,快速自動引入服務(wù)的方式,端口8888
spring-cloud-config-server/client用戶自定義配置服務(wù)的服務(wù)端/客戶端依賴
spring-cloud-starter-eureka-server服務(wù)發(fā)現(xiàn)的EurekaServer依賴
spring-cloud-starter-eureka服務(wù)發(fā)現(xiàn)的Eureka客戶端依賴
spring-cloud-starter-hystrix/zuul/feign/ribbon斷路器(Hystrix),智能路有(Zuul),客戶端負(fù)載均衡(Ribbon)的依賴
angular-ui-router頁面分發(fā)路由依賴
總結(jié)
這里所有的總結(jié)只是停留在對Spring Cloud的理解上,我推薦去http://projects.spring.io/spring-cloud/官網(wǎng)導(dǎo)讀多實踐下項目,了解下各個模塊的服務(wù)消息通信方式等,大概就是這樣。
如果你對Spring Cloud感興趣,想了解Spring Boot快速開發(fā),以及使用JHipster生成構(gòu)建Spring Boot + AngularJS的應(yīng)用代碼,歡迎加QQ群:58612944,里面有很多大牛指導(dǎo),我也在學(xué)習(xí)中。另外,群里我們在組織翻譯GitHub上JHipster的官方文檔,如果感興趣,可以進來一塊為開源做貢獻。
關(guān)于JHipster擴展
JHipster ->關(guān)于SpringBoot,AngularJS及Spring生態(tài)融合的技術(shù)棧, 是SpringBoot的最佳實踐,是SpringCloud對Netflix技術(shù)棧的最佳實踐,是J2EE-Cloud微服務(wù)的最佳實踐,是Docker,Kubernetes和AngularJS1/2的最佳實踐,是全棧式開發(fā),敏捷開發(fā)最理想的工具。
總結(jié)
以上是生活随笔為你收集整理的Spring cloud子项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 子网划分详解
- 下一篇: 三层架构的上位机软件开发