十四、Zuul网关

news2024/11/26 15:24:40

目录

一、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: 9031

spring:
  application:
    name: server-zuul

eureka:
  instance:
  # 使用ip地址作为host,而不是机器号/电脑名称
    prefer-ip-address: true
#    Eureka客户端向注册中心发送心跳的时间间隔是1s,默认是30s
    lease-renewal-interval-in-seconds: 1
#    Eureka服务端在收到一次心跳后等待时间上限是2s,默认是90s
#    超时将剔出该微服务,也可以在Eureka服务端进行设置
    lease-expiration-duration-in-seconds: 2
  client:
    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.coloradmin.cn/o/529393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mmdetection 中 Mask Rcnn检测结果可视化(DICE计算、PR曲线绘制等)

mmdetection中的Mask Rcnn是一个很不错的检测网络&#xff0c;既可以实现目标检测&#xff0c;也可以实现语义分割。官方也有很详细的doc指导&#xff0c;但是对新手来说并不友好&#xff0c;刚好之前笔者写的mmlab系列里面关于可视化都还没有一个详细的文档&#xff0c;也在此…

JAVA常用API - Runtime和System

文章目录 前言 大家好,我是最爱吃兽奶,今天给大家带来JAVA常用API中的Runtime类和System类 那么就让我们一起去看看吧! 一、Rubtime 1.Rubtime是什么? 2.Runtime常用方法 Runtime提供了很多方法,在这里演示两个 public static Runtime getRuntime(): 返回当前运行时环境的…

ChatSQL - 文本生成SQL【LLM】

ChatSQL将用户提供的纯文本转换为 mysql 查询&#xff0c;基于ChatGPT实现。 推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 1、ChatSQL简介 我们需要从一开始就指定一些关于我们数据库的信息&#xff0c;以便 Chatgpt 了解我们的数据库。 info.json 文件可用于此过程…

什么是胆汁酸,其与肠道微生物互作如何影响人体健康

谷禾健康 胆汁酸是一种代谢胆固醇的物质&#xff0c;它具有两个亲和性不同的区域&#xff0c;即一部分能够与水分子相互作用&#xff08;亲水&#xff09;&#xff0c;而另一部分则不能与水分子相互作用&#xff08;疏水&#xff09;。 由于拥有这种两亲性质&#xff0c;胆汁酸…

开悟和悟道的一点看法

今天看到一个老师的在讲何为开悟&#xff0c;就做了一下笔记&#xff1a; 开悟就是明心见性&#xff0c;去除了见惑&#xff0c;见解方面&#xff0c;思想方面的迷惑&#xff0c;包含&#xff1a;身见&#xff08;我和身体关系&#xff0c;我是谁&#xff09;&#xff0c;边见…

Vue3-黑马(十二)

目录&#xff1a; &#xff08;1&#xff09;vue3-router-图标的二次封装-jxl组件 &#xff08;2&#xff09;vue3-进阶-动态路由 &#xff08;3&#xff09;vue3-进阶-动态路由2 &#xff08;1&#xff09;vue3-router-图标的二次封装-jxl组件 以.vue结尾结尾的单文件组件…

谈谈OPCUA 聚合服务器(aggregation-server)

OPC UA 作为一种以信息模型为基础的工业自动化通信协议&#xff0c;如同它的名字一样正在朝着“统一架构”的方向飞速地发展&#xff0c;从传感器&#xff0c;PLC &#xff0c;传感器到云端应用都正在向OPCUA 迁移。它将成为开放型系统&#xff0c;数字孪生&#xff0c;仿真系统…

Ubuntu20.04 -- 小白系列4 之小笔记

1、clash for linux Releases Dreamacro/clash GitHub 下载&#xff0c;建议这圈中的第一个。 解压后可执行文件改为clash 打开终端&#xff08;打开你的suying,并复制自己的&#xff09; wget -O config.yml https://s&log-levelinfo config.yml 复制并修改文件名为…

百度地图JavaScript API添加自定义Marker

百度地图JavaScript API添加自定义Marker 官网指导添加自定义Marker 实际使用中发现无法显示图标&#xff0c;找了一些博客 百度地图开发自定义图标无法显示的问题 百度地图自定义图标不显示问题解决方案 关于百度地图开放平台api覆盖物“自定义Marker图标”不能正常显示的解决…

bgp路由策略

* - valid 有效的, > - best 最佳的 上图中&#xff0c;有*和>&#xff0c;是有效最佳的。而没有*和没有>&#xff0c;是无效的&#xff0c;下一跳不可达 1--64511是公有AS 64512-65534为私有AS //属于哪个大的联盟 AS200 //连着一个子类AS 65002 //和子…

如何在桌面手动创建Windows安全中心的应用和浏览器快捷方式

Windows 10包括 Windows Security,它提供了最新的防病毒保护。从你启动Windows 10的那一刻起,你的设备将受到主动保护。 Windows Security不断扫描恶意软件(恶意软件)、病毒和安全威胁。除了这种实时保护外,还会自动下载更新,以帮助保护你的设备安全并保护其免受威胁。 …

centos安装SNB服务

Samba 是一种开源软件&#xff0c;它提供了一种让 Linux 和 Unix 系统与 Windows 操作系统相互通信的标准协议。Samba 允许 Linux 和 Unix 系统作为文件服务器和打印服务器&#xff0c;提供 Windows 客户端所需的服务。 具体来说&#xff0c;Samba 通过实现 SMB/CIFS 协议来实现…

Systick定时器

一、SysTick定时器介绍 SysTick定时器也叫SysTick滴答定时器&#xff0c;它是Cortex-M3内核的一个外设&#xff0c;所有使用Cortex-M3内核的单片机都具有这个定时器。Systick被内嵌在NVIC寄存器中&#xff0c;是一个24位的向下递减计数的定时器&#xff0c;在stm32中它的时钟通…

Xcode真机运行报错:Failed to prepare the device for development解决方法

一、遇到的问题 运行Xcode然后打包APP&#xff0c;结果Xcode报错&#xff0c;如下&#xff1a; Failed to prepare the device for development. This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You …

9个刚入门产品经理必备的原型工具

每一个产品的诞生都离不开一个优秀的产品经理&#xff0c;每一个优秀的产品经理都离不开一个原型图软件。 一款好用的产品原型图软件&#xff0c;可以让产品经理在绘制原型图时事半功倍。 本文总结了9款产品经理常用的产品原型图软件。如果你是产品经理小白&#xff0c;赶紧收…

路径规划算法:基于正余弦算法的路径规划算法- 附代码

路径规划算法&#xff1a;基于正余弦优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于正余弦优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法…

Java【网络编程2】详解基于 TCP 协议的 Socket API, 逐行代码解析如何服务器客户端通信(附代码)

文章目录 前言一、认识 Socket(套接字), TCP 协议和 UDP 协议1, 什么是 Socket(套接字)2, 浅谈 TCP 协议和 UDP 协议的区别和特点 二、基于 TCP 协议的 Socket API1, ServerSocket 类2, Socket 类 三、逐行代码解析网络编程1, 逐行解析客户端1.1, 核心成员方法 start() 2, 逐行…

三维空间与位姿变换

在使用相机或者机械臂的过程中&#xff0c;经常会用到三维空间变换&#xff0c;大部分时候我们可以使用TF去获取空间中的位姿关系&#xff0c;但是也存在一些时候无法使用现有TF表示的情况&#xff0c;例如&#xff1a;使用相机识别工件时&#xff0c;已知通过图像确定了相机到…

C++ - RBTree

前面的文章中我们讲述了以二叉搜索树为基础的AVL树&#xff0c;本文中我们将继续讲一种二叉搜索树为基础的红黑树。 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或 Black。 通过对任何一条…

冲量在线出席2023鲲鹏昇腾开发者峰会,联合鲲鹏打造可信AIGC一体机,共筑产业数字根基

近日&#xff0c;以“创未来 享非凡”为主题的2023鲲鹏昇腾开发者峰会在东莞松山湖举办。鲲鹏昇腾开发者峰会是面向ICT领域开发者的技术盛会&#xff0c;旨在打造生态伙伴、开发者学习、交流的平台&#xff0c;帮助开发者深入了解鲲鹏、昇腾全栈技术&#xff0c;加速行业技术、…