本文主要介绍了Spring Cloud的几大组件,包括SpringBoot, 配置中心,服务注册中心,服务网关,服务调用
一、SpringBoot

对于熟悉Spring MVC开发体系的开发者来说,和以前相比,其实就是少了xml的配置,包括web.xml以及spring context的一些配置(Servlet 3规范中就已经指出web程序中可以不包含web.xml了)。
把以前的项目转换成spring boot也比较简单,实际上就是使用注解来代替xml文件配置。 比如以前使用了Mybatis +Spring MVC,现在要转换成spring boot,实际上只需要生成SqlSessionFactory, DataSource 对应的Bean,再配置好扫描的package路径,其余将以前照搬过来就行。
主要涉及到@Configuration @Bean这两个注解




二、配置中心(sring cloud config)
在分布式环境下,如果每个实例保存一份配置文件,当有配置项发生变化的时候,需要每个实例都修改配置,比较麻烦。所以就衍生出了配置中心。将所有的配置文件在配置中心集中存放,各个应用从配置中心拉取配置,然后启动相关应用。
比较常用的方式,使用git等版本管理工具作为配置中心和使用zookeeper作为配置中心(spring cloud zookeeper)。使用zookeeper时可以将节点信息的变动通知到服务,可以不重启服务而修改到配置,其他方式没有使用过,不知道能不能做到。
三、服务注册中心(Eureka)
微服务模式下,一个大的Web应用通常都被拆分为很多比较小的web应用(服务),这个时候就需要有一个地方保存这些服务的相关信息,才能让各个小的应用能够知道需要调用的应用的具体信息在那里,即注册中心。
每个应用启动时向配置的注册中心注册自己的信息(ip,context, 服务名称等信息),注册中心将他们保存起来,服务间相互调用的时候,通过服务名称到注册中心来找到对应的服务的地址。
Spring cloud官方采用Eureka来作为服务注册发现的组件(新版本据说不开源了),如果需要完全可以采用zookeeper以及其他组件来做注册中心,只要实现相关逻辑即可。
注册中心(Server端)

客户端(Client)


四、服务网关(Zuul)
网关这个东西一开始,我其实没搞懂到底是个啥,感觉很高大上,后面想了一下,其实很简单,可以理解为其实也就是个服务,只是所有的请求都经过这里,由他来做请求的路由、分发。比如大家熟悉的nginx,或者说就是自己开发的web应用,本身也就是个网关(只是他把请求分发到自己而已)
使用方式也比较简单 启动类注解@EnableZuulProxy
配置文件配置具体路由策略

当然实际场景可能没有这么简单,因为本身网关还有很多用途,比如负载均衡,权限控制,限流等等。
五、服务调用(Feign)
这个其实比较简单,就是封装了http请求的发送, 可以让我们不再自己使用httpclient来编写代码

代码有些看不清楚,详细信息可以查看:gitee.com/_chenxiaoyu…