【Spring Cloud】学习(一)

公司最近正在升级拆分以前的spring boot项目,正好学习下spring cloud。

参见Sping Cloud中文网站

参见Spring Cloud英文网站

Spring Cloud官方介绍

【Spring Cloud】学习(一)_第1张图片

Spring Cloud组件

【Spring Cloud】学习(一)_第2张图片

在上图可以看到Spring Cloud有许多的组件,数了下目前有21个组件可用,一下子也学不完。看了下有些组件平常也用不到,比如security可以换成轻量点的jwt、shiro。下面介绍下几个常用的组件:
  • Eureka:服务的注册与发现中心,所有的微服务都在Eureka上注册,也可在上面找到所需的服务。
  • Feign:用于微服务之间相互调用,比如A服务想要调用B服务,那么在A服务中加入该组件即可调用B服务。我现在使用的Spring Cloud版本(Finchley.SR1)的Feign组件已经包含了Ribbon组件,因此也可实现负载均衡。
  • Zuul:网关,即Spring Cloud的路由,里面可以配置一系列的过滤器,所有请求都经过zuul,然后由zuul处理后才能进入其他微服务模块中,一般在zuul中做一些权限校验,限流,日志,拦截等操作,因此一个微服务架构的好坏,很大程度上是由zuul决定的。
  • Config:是Spring Cloud的配置中心,当有很多个微服务时,统一配置就变得很重要了,不然改改配置得多累啊,而且Spring Cloud的Config功能是非常强大的,它可以从远端git仓库(目前中国只支持码云,国外github等)自动拉取配置,这样一来,当你项目部署后,突然哪天需要改点配置啥的,只需要改改码云里面的配置就行了,项目都不用重启,更不需要什么打包重新部署那么麻烦,对应的微服务会自动拉取配置的,自动实现热部署。
  • Bus:Spring Cloud的消息总线,上面提到的自动拉取配置就需要用到这个组件,用来传播事件状态变化。
  • Hystrix:寓意“豪猪”,长满了刺,充满了自我保护的气息,用来应对服务降级的,比如A服务在调用B服务时,B服务宕掉了,不能提供服务了,此时A服务如果配置了Hystrix就可以实现服务降级,常见的比如在双11时抢某件商品时,本来所有服务正常时是可以下单的,但如果服务比较拥挤时,会提示你:系统太拥挤了,这个时候下单这个服务就被降级为:系统太拥挤了。
  • Sleuth:寓意“侦探”,是Spring Cloud的服务追踪组件,比如完成某个功能时需要A服务调用B,B服务调用C,C服务调用D, 其中有个过程出现了故障,此时我们可以根据这个组件进行查询是哪个过程出现故障了。
  • Stream:封装了与Redis,Rabbit、Kafka等模板,使操作内存、MQ更加简便。
  • Ribbon:Spring Cloud的负载均衡器,默认采用轮询方式负载均衡,当然也可以配置成其他方式。

题外话:对比下Spring Cloud和Dubbo

Dubbo Spring Cloud
服务注册中心 Zookeeper Eureka
服务调用方式 RPC REST API
服务监控 Dubbo-monitor Spring Boot Admin
断路器 不完善 Spring Cloud Hystrix
服务网关 Spring Cloud Zuul
分布式配置 Spring Cloud Config
服务追踪 Spring Cloud Sleuth
消息总线 Spring Cloud Bus
数据流 Spring Cloud Stream
批量任务 Spring Cloud Task
…… …… ……

他们最大的区别就在于通信方式,REST不存在代码级别的强依赖。

你可能感兴趣的:(Spring,Cloud)