spring cloud day02

目标

  • spring cloud openfeign的使用
  • spring cloud gateway 的使用
  • 了解配置中心spring cloud config

1 Spring cloud openfegin

  1. feign 是一个[声明式]REST客户端。(http客户端:RestTemplate 使用Restful 风格进行开发的)
  2. feign 是基于RestTemplate开发的一个声明式的Rest客户端;只需要写一个接口,定义一个注解,就可以直接使用。

2.使用feign

1.添加起步依赖
2.启用Enablkefeignclients
3.编写一个接口 添加一个注解进行声明
4.直接使用(注入接口),在controller service dao里面都可以使用。
5.被调用方controller 一定要【实现】声明的接口的方法。

3.集成hystrinx:

1.开启feign 和hystrinx的集成
2.实现feign接口  实现类中的方法就是兜底的方法
3.在feign接口上指定实现类 即可

4 网关的定义

网关 是用来解决在开发过程的一些问题(跨域,安全,授权,日志,端口不统一等)的组件。 网关本身也是一个微服务/软件。

实现网关的技术有:

+ nginx
+ spring cloud zuul
+ spring cloud gateway

spring cloud gateway 核心功能:

路由: 将请求转发
断言: 请求转发的条件
过滤: 对请求进行过滤操作
使用:
+ 1 搭建独立的springboot工程
+ 2 添加起步依赖
+ 3 启动类
+ 4 配置yml

5用到过滤器

自定义的过滤器
    + 全局的过滤器 (一定要掌握)
    + 局部的过滤器(了解)
框架自带的过滤器
    + 全局过滤器  了解 也要根据需求来选择
    + 局部过滤器  掌握(常用的几个)

需求:

全局上,要求 用户登录之后才有资格 来访问所有的微服务。
所有的微服务 都需要进行校验 ,比较麻烦,在网关系统中统一做全局的处理。有业务逻辑存在,现有的框架自带的过滤器不满足需求了,需要自定义全局过滤器:


http://localhost:18084/abc/user/1?token=123456

逻辑 就是:当参数有token 并值为123456 就认为用户已经登录了。

实现自定义全局过滤器:

1.写一个类 交给spring容器管理 并实现接口GlobalFilter  Ordered 接口
2.类中的方法 需要实现自定义的逻辑判断

了解:局部过滤器:

1创建类 要求 一定以GatewayFilterFactory结尾   MyParamGatewayFilterFactory
2.交给spring容器
3.在yml中直接配置使用

6 配置中心

解决的问题:
  统一配置管理 及时生效 不需要重启 权限控制 灰度发布。

解决问题的技术:

1. spring cloud config + github/gitee + mq +eureka 进行搭建 (很麻烦)spring cloud 官方的
2. apollo  提供界面 起步依赖搭建一个工程就可以使用了。功能丰富
3. nacos()   提供界面,搭建一个nacos服务单就可以了。!
4. disconfig
...
1.起步依赖 2.注解 3配置