SpringCloud全家桶学习之一阶段总结(一)
一、概述
前几篇小博客记录了我学习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