springcloud的主要框架:
服务发现——Netflix Eureka
服务调用——Netflix Feign
熔断器——Netflix Hystrix
服务网关——Netflix Zuul
分布式配置——Spring Cloud Config
消息总线 —— Spring Cloud Bus
eureka:
what:服务注册发现组件
why:
1、服务消费方调用服务提供方的地址解耦
2、实现对服务的监控(状态监控,负载均衡)
zuul:
what:路由网关
why:动态路由,负载分配,身份认证
why:动态路由,负载分配,身份认证
how用法:
1、pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency>
2、yml配置修改
zuul:
routes:
tensquare‐gathering: #活动
path: /gathering/** #配置请求 URL 的请求规则
serviceId: tensquare‐gathering #指定 Eureka 注册中心中的服务 id
3、启动类加注解
@EnableZuulProxy
两大功能:
1、路由转发
2、过滤器:
@Component
public class WebFilter extends ZuulFilter {...}
zuul的坑(pom依赖坑):
springcloud锁定版本问题
父模块:
<!-- springboot的版本要和springcloud的对应 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/>
</parent>
<!-- 锁定SpringCloud版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
zuul坑(过滤器请求头信息被过滤掉):
Authorization等头信息被过滤掉,解决办法:在zuul过滤器中将头信息再放进zuul请求里
zuul:
sensitive-headers:
- Cookie,Set-Cookie,Authorization