一、概述
前幾篇小博客記錄了我學習SpringCloud組件的過程,並與工作中所用的Dubbo框架做了一點比較,基本組件:Eureka、Ribbon、Hystrix、Feign、Zuul、Config,當然,這些目前在工作中還未曾使用,但是作為一名程序員,選擇了IT行業,你就永遠不能被時代落下,真所謂JS的名言:“真正的大師永遠懷揣着一顆學徒的心”,機會是給有准備的人的,所以什么都了解一點,生活更多彩一些。
SpringCloud中文網:https://www.springcloud.cc/
二、總結
(1)Eureka
官網地址:https://github.com/Netflix/eureka
①Eureka采用C-S的設計架構,分為客戶端和服務端兩部分;服務器端,也被稱作是服務注冊中心,用於提供服務的注冊與發現;客戶端組件包含服務消費者與服務生產者。在應用程序運行時,Eureka客戶端向注冊中心注冊自身提供的服務並周期性的發送心跳來更新它的服務租約。同時也可以從服務端查詢當前注冊的服務信息並把他們緩存到本地並周期性的刷新服務狀態。
②Eureka支持高可用的配置,當集群中有分片出現故障時,Eureka就會轉入自動保護模式,它允許分片故障期間繼續提供服務的發現和注冊,當故障分片恢復正常時,集群中其他分片會把他們的狀態再次同步回來。
③涉及注解:@EnableEurekaServer、@EnableEurekaClient
(2)Ribbon
官網地址:https://github.com/Netflix/ribbon
①客戶端負載均衡
②涉及注解:@LoadBalanced、@RibbonClient(配置)
(3)Feign
官網地址:https://github.com/OpenFeign/feign
①Feign是一個聲明式的WebService客戶端,底層默認實現了Ribbon負載均衡,使用非常簡單:接口+注解
②涉及注解:@FeignClient("微服務名稱") 注:此注解用於接口
(4)Hystrix
官網地址:https://github.com/Netflix/hystrix
①Hystrix是一個用於處理分布式系統的延遲和容錯的開源庫,我做了服務熔斷和降級練習
②涉及注解:@HystrixCommad(fallback="方法名")、結合@FeignClient(fallbackFactory=xxx.class)
(5)Zuul
官網地址:https://github.com/Netflix/zuul
①提供代理、路由、過濾三大功能
②Zuul服務最終還是會注冊到Eureka
③涉及注解:@EnableZuulProxy
(6)Config
官網地址:https://www.springcloud.cc/spring-cloud-config.html
①SpringCloud Config分為服務端和客戶端
②SpringCloud Config為微服務架構中的微服務提供了集中化的外部配置支持,配置服務器為各個不同微服務應用的所有環境提供了一個中心化的外部配置。
③涉及注解:@EnableConfigServer
三、展望
至此、SpringCloud的基本組件:Eureka、Ribbon、Feign、Hystrix、Zuul、Config已經了解了,接下來i就是一些進階的,比如:
①SpringCloud Stream:數據流開發包
②SpringCloud Turbine:聚合服務器發送事件流數據的一個工具,用來監控集群下hystrix的metrics情況
③SpringCloud Task:提供雲端計划任務管理、任務調度
④SpringCloud Sleuth:日志收集工具包實現了一種分布式追蹤解決方案,封裝了Dapper和log-based追蹤以及Zipkin和HTrace操作。
⑤SpringCloud Security:基於spring security的安全工具包,為應用程序添加安全控制
以及其他方面的學習,例如:
①服務部署:Kubernetes、OpenStack
②全鏈路追蹤:Zipkin,brave
③服務監控:zabbix
④SpringCloud CLI:基於Spring Boot CLI,可以以命令行的方式快速建立雲組件
⑤全局控制:選舉leader、全局鎖、全局唯一id
⑥安全鑒權:Oauth2、openId connect
⑦自動化構建與部署:gitlab+jenkins+docker