Security 与响应式 WebFlux(一)

本贴最后更新于 1301 天前,其中的信息可能已经沧海桑田

前言

最近因为需求,进行了网关 gateway 的鉴权功能,gateway 网关中由于引入了 spring5.0 新支持的新特性 webflux,所以 security 与传统配置有了些许不同,配置方式结合业务也有几种方式,会分为几章为大家讲解一下。

WebFlux 响应式编程简介

spring5 中的响应式编程框架 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 的吞吐高,响应稳定的特性,进行在入口处进行限制与限流,使无用的流量打不到应用服务,保证服务的稳定性与安全性。

  • Web
    115 引用 • 430 回帖 • 8 关注
  • Security
    9 引用 • 15 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3165 引用 • 8206 回帖 • 1 关注
  • Gateway
    5 引用 • 2 回帖
1 操作
hong1yuan 在 2020-09-04 19:07:38 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...