JAVA微服务之网关(GateWay)学习

1. 网关

1.1. 网关的基础概念知识

  1. 概念:多个服务部署在不同ip,如果每个服务器都需要用户信息和密钥等,是不是每个服务都要一份密钥和用户信息呢?因此有一个网关来作为入口,就像小区保安和小区的关系,网关是保安,小区中的多个楼就是各个服务器
  2. 作用:负责请求的路由、转发、身份校验
  3. 例图

目前基本都是使用SpringCloud GateWay

入门步骤

  1. 创建新模块
  2. 引入网关依赖
  3. 编写启动类
  4. 配置路由规则

1.2. 网关路由的属性配置

路由断言主要是对请求进行一定条件判断与约束,满足条件的请求才转发

路由过滤器主要是在对请求和响应里对一些参数进行添加调整

具体用法在官方文档看看

在单个路由加filter只生效于单个路由,要生效于所有路由,需要配置default-filter

1.3. 网关登录校验

  1. 网关请求处理的底层逻辑

因此,具体实现就分为了以下四个步骤

  1. 自定义过滤器包括两种

常用的基本都是GlobalFilter,因此GateWayFilter需要再学吧

  1. 实现登录校验

这里就是正常JWT校验逻辑,只是把这块逻辑迁移到网关模块进行而已

  1. 网关传递用户

思路:

拦截器配置完后编写一个MVC配置类,把这个拦截器加到配置类中就可以生效了

要记得让spring扫描到这个配置类所在的包,要不然这个配置也不会生效的

弄完后报错了,网关加入了common模块,但网关不能处理WebMvcConfigurer类,因为网关模块底层不是MVC处理逻辑导致的

解决思路:让配置只在微服务生效,网关不生效

方法:SpringBoot自动装配原理,加一个条件,微服务有MVC,官关没有MVC。加入一个注解:@ConditionalOnclass(DispatchherService.class)MVC的核心类,有这个类就启动配置,没有就不启动,解决问题

  1. OpenFeign传递用户

从商城服务到购物车服务,商城服务的User信息是从网关得到的,因此可以从UserContext上下文取到,然后通过OpenFeign的中这个拦截器来进行请求头的添加,实现了用户信息的传递

注意:需要在启动类上加上配置这个类的注解才能生效

@EnableFeignClients(basePackages , defaultConfiguration)

2. 配置管理

问题:微服务可能会很多重复配置,维护成本高

解法:配置管理服务,例如Apllo,可以实现不停机修改配置功能,黑马用的是Nacos

主要学习Nacos的三个功能

  • 配置共享
  • 配置热更新
  • 动态路由

2.1. 配置共享

  1. Nacos有界面化管理,直接点击配置管理->配置列表—>右上角加号就可以添加配置

  1. 处理流程图

写一个bootstrap.yml作为Nacos里变量的替换即可,然后在application.yml中就不要重复编写了

  1. 操作步骤

1.引入依赖

2.2. 配置热更新

懒得记了,黑马微服务2-12到2-13就是后面两节,习惯用Apollo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值