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

十四、Zuul网关

目录

一、API网关作用:

二、网关主要功能:

2.1、统一服务入口

2.2、接口鉴权

2.3、智能路由

2.4、API接口进行统一管理

2.5、限流保护

三、 新建一个项目作为网关服务器

3.1、项目中引入Zuul网关依赖

3.2、在项目application.yml中配置网关路由信息

3.3、在项目启动类中加上注解@EnableZuulProxy开启网关代理

3.4、访问网关服务localhost:9031/api/goods/goodsInfo

3.5、使用网关时注意:

3.6、案例说明


一、API网关作用:

API网关为微服务架构中的服务提供了统一的访问入口,客户端通过API网关访问相关服务。API网关的定义类似于设计模式中的门面模式,它相当于整个微服务架构中的门面,所有客户端的访问都通过它来进行路由及过滤。它实现了请求路由、负载均衡、校验过滤、服务容错、服务聚合等功能。

二、网关主要功能:

2.1、统一服务入口

为所有的微服务提供一个唯一的入口,把客户端和服务端进行隔离,屏 蔽我们真实的服务信息,从而保护我们的服务。

2.2、接口鉴权

对所有的请求信息进行安全检测。如果检验不通过,直接拒绝访问。

2.3、智能路由

动态将请求转发到真实的服务器集群上。可通过负载均衡、反向代理、熔断 机制实现

2.4、API接口进行统一管理

日志收集、管理等。

2.5、限流保护

进行限流措施,从而对我们的服务进行保护。

三、 新建一个项目作为网关服务器

3.1、项目中引入Zuul网关依赖

<!-- 引入zuul网关-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

3.2、在项目application.yml中配置网关路由信息

server:port: 9031spring:application:name: server-zuuleureka:instance:# 使用ip地址作为host,而不是机器号/电脑名称prefer-ip-address: true
#    Eureka客户端向注册中心发送心跳的时间间隔是1s,默认是30slease-renewal-interval-in-seconds: 1
#    Eureka服务端在收到一次心跳后等待时间上限是2s,默认是90s
#    超时将剔出该微服务,也可以在Eureka服务端进行设置lease-expiration-duration-in-seconds: 2client:service-url:defaultZone: http://localhost:8090/eureka/,http://localhost:8060/eureka/#zuul网关配置第一种方式
zuul:routes:api-goods: #路由规则名称,自己指定无特殊要求,可根据业务规则命名path: /api/goods/**   #配置请求转发路径,后续以/api/goods/**的请求将会转发到server-goods的服务中处理#url与serviceId二选一,同时存在则会直接路由到指定的url而不会使用负载均衡serviceId: server-goods  #配置服务名,由负载均衡算法将请求分发到服务集群中处理(默认轮询)
#      url: http://localhost:8041/ #指定url,由网关直接将请求转发到指定的服务器中处理(一般比较少用)#zuul网关配置第二种方式
#zuul:
#  routes:
#    server-goods: #以服务名作为路由规则
#       path: /api-goods/**  #指定请求转发路径#zuul网关配置第三种方式
#zuul:
#  routes:
#    #服务名: 转发路径
#    server-goods: /api-goods/**

3.3、在项目启动类中加上注解@EnableZuulProxy开启网关代理

@SpringBootApplication
@EnableEurekaClient
//开启网关代理
@EnableZuulProxy
public class ZuulApp {public static void main(String[] args) {SpringApplication.run(ZuulApp.class,args);}
}

3.4、访问网关服务localhost:9031/api/goods/goodsInfo

通过网关服务将请求转到到实际的服务中处理。

http://localhost:9031/api/goods为网关服务器接口,/api/goods会由zuul智能路由找到具体的服务server-goods(在application.yml中配置了路由规则),然后后面的/goodsInfo则是具体服务提供的api接口,根据路由规则负载均衡分发到服务集群的节点下调用真实的处理逻辑。

通过刷新网页,可以看到端口号在8041和8042之间来回切换(网关以负载均衡的轮询算法将请求转发到实际的服务器中处理)

3.5、使用网关时注意:

如果配置网关路由规则时使用的是通过服务名作为路由规则/或者以serviceID的形式配置服务名来匹配真实的服务器,则网关需要与对应转发的服务器注册到同一个注册中心集群下,即zuul网关需要搭配注册中心使用;如果配置网关路由规则时使用的是通过url来匹配真实的服务器,则可以不搭配使用注册中心

3.6、案例说明

server-goods(服务提供者---真实服务器处理逻辑):

分别在8041、8042两个端口开启了两台服务器

通过网关服务请求访问接口/goodsInfo

server-goods服务的controller处理逻辑

@RestController
@RequestMapping("/")
public class GoodsController {@Value("${server.port}")private  String port;@GetMapping("/goodsInfo")public String goodsInfo(){return "goodsInfo"+port;}
}

http://www.lryc.cn/news/67734.html

相关文章:

  • 5项目五:W1R3S-1(思路为主!)
  • Day958.代码的分层重构 -遗留系统现代化实战
  • 分子模拟力场
  • ERP 系统在集团化企业财务管理中的应用
  • 达摩院开源多模态对话大模型mPLUG-Owl
  • Group相关问题-组内节点限制移动范围
  • 程序员该如何学习技术
  • springboot+vue交流互动系统(源码+文档)
  • 【2023华为OD笔试必会25题--C语言版】《01 预定酒店》——排序、二分查找
  • C语言实现队列--数据结构
  • 前端CSS经典面试题总结
  • cookie、session、token的区别是什么
  • leetcode分类刷题 -- 前缀和和哈希
  • 浅谈作为程序员如何写好文档:了解读者
  • 一文读懂国内首本《牛客2023金融科技校园招聘白皮书》
  • 深度学习03-卷积神经网络(CNN)
  • 你真正知道什么是品牌营销么?颠覆你旧有认知
  • pytorch 测量模型运行时间,GPU时间和CPU时间,model.eval()介绍
  • 十三、超时重试机制
  • JAVA常用API - Runtime和System
  • ANR实战案例 - FCM拉活启动优化
  • Kali-linux查看打开的端口
  • 判断浏览器是否支持webp图片
  • 【Qt编程之Widgets模块】-007:QTextStream类及QDataStream类
  • js对map排序,后端返回有序的LinkedHashMap类型时前端获取后顺序依旧从小到大的解决方法
  • JMX vs JFR:谁才是最强大的JVM监控利器?
  • Laravel Collection 基本使用
  • JUC并发编程19 | 读写锁
  • springboot_maven项目怎么引入mybatis
  • JAVA8的新特性——lambda表达式