开发自救手册 开发自救手册
首页
  • Java指南

    • 手册的初衷以及适用人群
    • 介绍
    • JAVA涉及技术总览
  • 技术场景

    • 线上代码覆盖率监控
  • cpp自救指南
  • go指南
  • 真正的面经系列
  • 经历分享
  • 相关文章

    • 25届实习内推
  • 微服务
友情链接
  • 团队介绍
  • 如何加入
GitHub (opens new window)
首页
  • Java指南

    • 手册的初衷以及适用人群
    • 介绍
    • JAVA涉及技术总览
  • 技术场景

    • 线上代码覆盖率监控
  • cpp自救指南
  • go指南
  • 真正的面经系列
  • 经历分享
  • 相关文章

    • 25届实习内推
  • 微服务
友情链接
  • 团队介绍
  • 如何加入
GitHub (opens new window)
  • 微服务

    • 微服务介绍
    • EureKa注册中心
    • Ribbon负载均衡
    • Nacos注册中心、配置中心
    • OpenFeign远程调用
    • Gateway统一网关
      • 为什么需要网关
      • 搭建网关服务
      • 路由断言工厂Route Predicate Factory
      • 路由过滤器 GatewayFilter
      • 全局过滤器 GlobalFilter
      • 过滤器执行顺序
      • 跨域问题处理
    • Docker
    • DockerCompose
    • RabbitMQ
    • Sentinel微服务保护
  • 八股文
  • 微服务
ethandu
2024-05-02
目录

Gateway统一网关

# 统一网关 Gateway

# 为什么需要网关

服务内部有相互访问的话Feign进行调用 但是外部的请求就没有安全措施了 不是所有业务都是对外公开的 我们得对用户的身份进行验证 否则拦截

image-20220211222707258

这里网关就出现了并且带着这些功能来了

image-20220211222943540

网关技术实现(目前来说都会使用gateway来进行网关)

image-20220211223038457

# 搭建网关服务

搭建网关服务的步骤:

image-20220211223143755

网关自己也是服务 需要被nacos发现

2.编写路由配置及nacos地址

image-20220213102823916

lb:loadBalance缩写

当前含义: 我要把请求路由到用户服务(userservice)

需要一个路由规则(和nginx很像)predicates:(判断请求是否符合路由规则)

image-20220213103047250

image-20220213103205052

用nginx请求会到服务上,要在服务做鉴权,网关可以先鉴权拦截,不会给服务造成太大压力

总结:

image-20220213103630598

# 路由断言工厂Route Predicate Factory

image-20220213103724932

image-20220213103813127

image-20220213103821591

image-20220213104011647

这里的路由规则是要求在2031年之后才可以访问, 访问的话就会报404

使用Before的话就可以访问到了

这个路由工厂的规则按照需求使用不用强记

image-20220213104231303

# 路由过滤器 GatewayFilter

image-20220213104412516

这里响应结果的返回过程也是可以被网关做操作再返回给用户的,例如:把响应头拿出来,把响应体弄一弄之类

image-20220213104557062

(要点:根据名字来了解过滤器工厂的功能)

image-20220213104730096

验证 在这个方法中添加一个参数 加上这个注解@RequestHeader 这样spring就能帮助我们获得这个请求头的这个参数,加required可以应对没有传过来的情况

我们如果要在所有的微服务都实现这个功能(配置在某个路由下只对那个服务有效 配置在default过滤器下 对所有的服务有效)

image-20220213105148878

总结:

image-20220213105316392

# 全局过滤器 GlobalFilter

image-20220213105455040

image-20220213105557044

(未登录的状态码是401 返回状态码为了用户体验)

image-20220213105941410

实现这个过滤器在上面加两个注解

image-20220213110130847

@Order(-1)将过滤器的位置或者说执行顺序确定

或者不用这个注解 实现Ordered接口 继承它的getOrder()方法 一样可以实现过滤器执行顺序的指定

image-20220213110219399

测试:

image-20220213110345992

image-20220213110405566

当然实际开发的登录拦截不会说逻辑这么简单

image-20220213110417191

总结:

image-20220213110441418

# 过滤器执行顺序

image-20220213110756047

image-20220213110952750

image-20220213110915743

总结:

image-20220213111026815

# 跨域问题处理

所有的请求都是先经过网关再到微服务 所以跨域请求不是在每个服务处理 只需要在网关里面处理就好了

image-20220213111337534

CORS: 浏览器问下服务器能不能走这个跨域请求

image-20220213111419665

我们的ajax采用的是CORS方案 这个方案有一次询问 这个询问也是会被网关拦截的 加上 add-to-simple-url-handler-mapping: true可以解决询问被拦截的问题

加上有效期maxAge的设置可以让询问不要每次都执行给服务器增加压力

测试:

image-20220213111751571

image-20220213111806120

将网关的跨域配置加上以后重启服务

image-20220213111907615

总结:

image-20220213111934502

我们现在已经学了微服务最常用的组件了

上次更新: 2024/05/02, 13:47:32
OpenFeign远程调用
Docker

← OpenFeign远程调用 Docker→

Theme by Vdoing | Copyright © 2019-2024 Backend Development | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式