发表于: 2019-10-18 23:19:16
1 773
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
1、学习Spring Cloud
明天计划的事情:(一定要写非常细致的内容)
1、继续学习 Spring Cloud
遇到的问题:(遇到什么困难,怎么解决的)
收获:(通过今天的学习,学到了什么知识)
1、Spring Cloud Feign
1、功能
Eureka 是一个服务注册中心,统一管理
访问 localhost:端口 可以查看 主页
defaultZone 很重要,与其他服务的交互地址(服务之间可以使用 url 交互 也可以使用服务名)
Eureka Client 是 服务发现,将功能写在其中,然后注册到 Eureka 中
这里编辑 Controller 和 服务名,注册到 Eureka中
此时可以使用 Controller 中的url 使用该服务
ribbon + RestTemplate 服务消费,可以调用注册中心的服务
主要靠为ribbon 量身定制的 RestTemplate 获取到 注册中心中的服务 和负载均衡
Feign 也是服务消费,不过它集成了 ribbon
直接使用 注解 完成上面RestTemplate 的事情
然后写Controller
修改main
配置文件照旧
依赖
启动注册中心,启动对应服务,启动该实例,浏览器访问
对应两个端口不同的两个服务
2、断路器 Hystrix
1、缺少依赖
在 Spring Cloud F版本中
spring 自己的依赖
可能出现没有关键注解 Hystrixcommand 的情况
由于 此处是使用的是 com.netfix.hystrix 的库
所以加入该库即可
2、可以直接在 ribbon 上修改
main方法 添加注解
Service 添加注解和 一个新的方法
添加注解表示 如果访问有问题就返回该方法
此处的方法 尤其是出参 类型 和原本的方法 要对应
启动注册中心 和一个 服务 然后启动该项目
浏览器访问
然后关闭 那个 服务 浏览器在访问
3、在 Feign 中使用断路器
Feign 中自带断路器, D 版本后 默认是关闭的
在配置文件中 打开
然后修改之前的接口
然后 编写该类 ,需要实现该接口
就完成了,启动刚才关闭的服务,浏览器访问
关闭 8762服务 然后在访问
3、 Zuul 路由转发和过滤器 api/user/ 转发到 user 服务等。
1、实现
新建一个新的Module 继承父项目
添加依赖
main添加 注解
修改配置文件
将 api-a 转发到 ribbon
将 api-b 转发到 feign
运行 注册中心、服务、ribbon、feign、zuul
(这里我修改了 一下 ribbon 和 feign 的部分代码 方便区分)
浏览器访问 api-a
在访问 api-b
可以看到分别进行了 转发
2、Zuul 的过滤功能
添加一个类
filterType:返回一个字符串代表过滤器类型,
pre:路由之前
routing:路由时
post:路由之后
error:发送错误调用
filterOrder:过滤的顺序
shouldFilter:过滤的条件,什么情况下过滤
run:具体的逻辑
这里载 路由之前 过滤,过滤条件是永远过滤,如果url中没有 roken 就返回 “ token is empty ” 修改状态为为401
浏览器访问
控制台也有 log 的输出
说明 过滤器生效
在访问
过滤器通过
评论