当前位置: 首页 > news >正文

java B2B2C Springboot仿淘宝电子商城系统--Spring Cloud Gateway

1.Spring Cloud Gateway 是什么

Spring Cloud Gateway 基于 Spring Boot 2, 是 Spring Cloud 的 全新 项目, 该项 目 提供 了 一个 构建 在 Spring 生态 之上 的 API 网关, 包括 Spring 5、 Spring Boot 2 和 Project Reactor。 Spring Cloud Gateway 旨在 提供一种简单而有效的途径来转发 请求,并为它们提供横切 关注点, 例如: 安全性/监控/ 指标和弹性。愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三

2.Spring Cloud Gateway 特性 基于 Java 8 编码; 基于Spring Framework 5,Project Reactor和Spring Boot 2.0构建 支持动态路由,能够匹配任何请求属性上的路由。 支持 内置 到 Spring Handler 映射 中的 路 由 匹配; 支持 基于 HTTP 请求 的 路 由 匹配( Path、 Method、 Header、 Host 等); 集成了Hystrix断路器 过滤器 作用于 匹配 的 路 由; 过滤器可以修改 HTTP 请求和HTTP 响应( 增加/ 修改 头部、 增加/ 修改 请求 参数、 改写 请求 路径 等); 支持 Spring Cloud DiscoveryClient 配置路由,与服务发现与注册配合使用。 支持限流 支持地址重写 3.Spring Cloud Gateway 词汇 Route(路由): 路由网关的基本构建块。 它由ID,目标URI,谓词集合和过滤器集合定义。 如果聚合谓词为真,则匹配路由。

Predicate: 这是一个Java 8函数谓词。 输入类型是Spring Framework ServerWebExchange。 这允许开发人员匹配HTTP请求中的任何内容,例如标头或参数。

Filter: 这些是使用特定工厂构建的Spring Framework GatewayFilter实例。 这里,可以在发送下游请求之前或之后修改请求和响应。

4.Spring Cloud Gateway 与 Zuul的区别 在 Finchley 正式版之前,Spring Cloud 推荐的网关是 Netflix 提供的Zuul:

1、Zuul 1.x,是一个基于阻塞 I/ O 的 API Gateway

2、Zuul 1.x 基于Servlet 2. 5,使用阻塞架构,它不支持任何长连接,如 WebSocket。 Zuul 的设计模式和Nginx较像,每次 I/ O 操作都是从工作线程中选择一个执行,请求线程被阻塞到工作线程完成,但是差别是Nginx 用C++ 实现,Zuul 用 Java 实现,而 JVM 本身会有第一次加载较慢的情况,使得Zuul 的性能相对较差。

3、Zuul 2.x,基于 Netty 非阻塞、支持长连接,但 Spring Cloud 目前还没有整合。 Zuul 2.x的性能较 Zuul 1.x 有较大提升。在性能方面,根据官方提供的基准测试, Spring Cloud Gateway 的 RPS(每秒请求数)是Zuul 的 1. 6 倍。

4、Spring Cloud Gateway 建立 在 Spring Framework 5、 Project Reactor 和 Spring Boot 2 之上, 使用 非 阻塞 API。

5、Spring Cloud Gateway 还 支持 WebSocket, 并且 与 Spring 紧密集成, 拥有更好的开发体验 技术架构图: 资料和源码来源

相关文章:

  • Rust 1.31正式发布,首次引入Rust 2018新功能
  • Centos7Yum安装配置指定版本nginx
  • SPRING 集成 activemq 的 topic 模式
  • Confluence 6 对一个空间进行归档后产生的影响
  • Docker之 数据持久化
  • webpack4 配置 vue项目
  • 开发函数计算的正确姿势 —— 排查超时问题
  • 同是容器管理系统,Kubernetes为什么那么火?
  • Beta冲刺随笔集
  • 计算机系统要素-写一个简单的编译器和操作系统
  • SQLite教程
  • webpack入门学习手记(二)
  • 无人驾驶——2.定位之卡尔曼滤波
  • 真相触目惊心!个人信息泄露报告 86.5%的人曾接到推销电话
  • [Vue CLI 3] Uglify 相关的应用和设计
  • JS 中的深拷贝与浅拷贝
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【前端学习】-粗谈选择器
  • conda常用的命令
  • docker-consul
  • JavaScript 一些 DOM 的知识点
  • Java程序员幽默爆笑锦集
  • leetcode98. Validate Binary Search Tree
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • PHP的类修饰符与访问修饰符
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • 基于webpack 的 vue 多页架构
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 微信小程序设置上一页数据
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • Nginx实现动静分离
  • ​决定德拉瓦州地区版图的关键历史事件
  • #图像处理
  • $$$$GB2312-80区位编码表$$$$
  • (0)Nginx 功能特性
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (Matlab)使用竞争神经网络实现数据聚类
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)linux使用docker容器运行mysql
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • .Family_物联网
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net分布式压力测试工具(Beetle.DT)
  • ?php echo ?,?php echo Hello world!;?
  • @Pointcut 使用
  • [04]Web前端进阶—JS伪数组
  • [Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包
  • [iHooya]2023年1月30日作业解析
  • [JavaEE系列] Thread类的基本用法