前言
最近因为需求,进行了网关 gateway 的鉴权功能,gateway 网关中由于引入了 spring5.0 新支持的新特性 webflux,所以 security 与传统配置有了些许不同,配置方式结合业务也有几种方式,会分为几章为大家讲解一下。
WebFlux 响应式编程简介
响应式 Web 框架 Spring WebFlux。在 ractor 基础上实现,它完全无阻塞,支持 Reactive Streams 背压,并在 Netty,Undertow 和 Servlet 3.1+ 容器等服务器上运行。
什么是响应式编程
Reactive Programming 是一种非阻塞、事件驱动数据流的开发方案,使用函数式编程的概念来操作数据流。它允许系统的一部分中的数据更改后,自动更新系统的其他部分并且以最小的成本自我更新的方式。
由于反应流是非阻塞的,因此在处理数据时,应用程序的其余部分不必等待。这有助于允许被动服务器在更传统的实现之外进一步扩展,因为应用程序中的工作线程不会等待其他资源 - 它们通常可以自由处理更多的传入请求。
简单来说 就是一个字,快,就是一个字,强,就是一个字,好,当然也没有那么好,首先,引入 webflux 就不能引入 web-stater 的包 相当于有冲突,二,快造成的后果是上层服务够快底层数据库跟不上,当然了也可以引入 redis 等方案。
压测图对比
1.MVC 与 webflux 吞吐量对比图 从图中可以看出 同样的线程 吞吐量提高了一倍
2.MVC 与 webflux 响应时长对比图 从图中可以看出 同样的线程 一个随着用户与线程的上升响应时间拉长,webflux 比较稳定在 100ms 左右
Security
Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。
Spring Security
为基于 J2EE 企业应用软件提供了全面安全服务。特别是使用领先的 J2EE 解决方案-Spring 框架开发的企业软件项目。人们使用 Spring
Security 有很多种原因,不过通常吸引他们的是在 J2EE Servlet 规范或 EJB 规范中找不到典型企业应用场景的解决方案。
特别要指出的是他们不能再 WAR 或 EAR
级别进行移植。这样,如果你更换服务器环境,就要,在新的目标环境进行大量的工作,对你的应用系统进行重新配 置安全。使用 Spring
Security 解决了这些问题,也为你提供很多有用的,完全可以指定的其他安全特性。
spring security 的核心功能主要包括:
- 认证 (你是谁)
- 授权 (你能干什么)
- 攻击防护 (防止伪造身份)
总结
从上面的讲解,可以了解到为什么要把鉴权放在 gateway 网关中,利用 webflux 的吞吐高,响应稳定的特性,进行在入口处进行限制与限流,使无用的流量打不到应用服务,保证服务的稳定性与安全性。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于