发表于: 2020-07-31 22:46:19
1 1499
今天完成的事情
1. 了解 Spring Cloud Zuul
2. Spring Cloud Zuul demo
3. 路由熔断 demo
4. zuul 过滤器 demo
5. 了解 Spring Cloud Config
6. Spring Cloud Config demo
收获
1. Spring Cloud Zuul
Zuul 是一个由 Netfilx 开源的微服务系统路由网关。
Zuul 的作用:
a,与 Ribbon、Eureka 配合实现只能路由与负载均衡,把请求的流量按照某种策略分发到集群状态的多个实例。
b,把所有的 API 统一聚合,对外暴露。
c,身份与权限认证。
d,监控,打印日志,服务记录。
e,监控流量,高流量的时候进行服务降级(关闭一部分服务)
f,方便做测试
Zuul 的核心是一系列的过滤器:
PRE:请求到达服务实例之前,用于权限校验,参数验证
ROUTING:把请求路由到目标服务实例
POST:请求被服务实例执行后运行,用于收集统计信息,把响应送回客户端
ERROR:其他过滤器发生错误后执行
Type:选择过滤器类型,选择在请求的过程中的什么阶段执行(PRE,POST···)
Execution Order:规定过滤器的执行顺序,oder 值越小,执行越靠前
Criteria:执行过滤器的条件
Action:符合执行条件后需要执行的逻辑
只用来 API 聚合的话使用配置文件就可以了。yaml 配置一复制粘贴就完蛋
eureka:
client:
service-url:
defaultZone: http://peer1:8761/eureka/
server:
port: 5000
spring:
application:
name: service-zuul
zuul:
routes:
hiapi:
path: /hiapi/**
serviceId: eureka-client
ribbonapi:
path: /ribbonapi/**
serviceId: eureka-ribbon-client
feignapi:
path: /feignapi/**
serviceId: eureka-feign-client
需要做服务熔断的话需要实现 FallbackProvider 接口,过滤器功能需要实现 ZuulFilter 接口。代码就不贴了,贴一张图感受一下。
2. Spring Cloud Config
今天做了一个读取本地配置的 demo,发现一个有意思的配置方法 bootstrap.yml
Spring Boot 中有两种上下文,一种是 bootstrap,另外一种是 application,若application.yml 和bootstrap.yml 在同一目录下:bootstrap.yml 先加载 application.yml后加载。
可以用来加载一些不被替换的属性,或者在 application 配置文件之前设置一些属性。
在 Spring Cloud Config 中用来在应用读取配置文件之前去目标地址获取配置文件。
贴一份 client 的bootstrap 配置文件
spring:
application:
name: config-client
cloud:
config:
uri: http://peer1:8769
fail-fast: true
profiles:
active: dev
这个配置文件的语义是去目标 uri 地址获取名为 config-client-dev 的配置文件。
在 Spring Cloud Config Server 端也需要配置一下配置文件的地址信息
spring:
cloud:
config:
server:
native:
search-locations: classpath:/shared
profiles:
active: native
application:
name: config-server
server:
port: 8769
意思是配置文件都放在 classpath:/shared 文件夹了,客户端需要都去这个位置找。
明天的计划
1. Spring Cloud Config 读取远程仓库的配置文件
2. Spring Cloud Config 集群
评论