如何搭建Gateway服务

  1. Gateway的简单介绍
    1. Spring Cloud Gateway是Spring Cloud的一个项目,该项目是基于Spring,Spring Boot和Project Reactor等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
    2. Gateway网关可以是所有微服务的统一入口,具有请求路由、权限控制、限流的功能特性
      1. 权限控制:网关作为微服务入口,需要校验用户是否有请求资格,如果没有则进行拦截
      2. 路由和负载均衡:一切请求都必须先经过gateway,但网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由。当然路由的目标服务有多个时,还需要做负载均衡
      3. 限流:当请求流量过高时,在网关中按照下游的微服务能够接受的速度来放行请求,避免服务压力过大
    3. 在Spring Cloud中网关的实现有gateway、zuul,但Zuul是基于Servlet的实现,属于阻塞式编程,而Spring Cloud Gateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能
  2. 那么现在我们就开始简单的搭建gateway服务
    1. 首先创建gateway的maven项目,并在maven的pom文件中添加依赖
      1. <!-- Nacos依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--网关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>
        
    2. 编写gateway的spring boot的启动类
      1. package com.app.user;import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.SpringBootApplication;/*** spring boot启动类** @author Administrator*/
        @SpringBootApplication
        public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
        }
        
    3. 创建application.yml文件,并编写基础的配置信息以及路由规则
      1. server:port: 12080
        spring:application:#应用的名称name: gateway-servicecloud:nacos:# Nacos Server 启动监听的ip地址和端口server-addr: 192.168.xxx.xxx:8848discovery:# nacos开启鉴权之后的用户名username: nacos# nacos开启鉴权之后的用户登录密码password: nacosgateway:# 网关的路由配置routes:# 路由id,自定义,只要唯一即可- id: nacos-feign-user-service# 路由的目标地址,lb就是负载均衡,后面跟服务名称uri: lb://nacos-feign-user-service# 路由断言,也就是判断请求是否符合路由规则的条件predicates:# 这个是按照路径匹配,只要以/users/开头就符合要求- Path=/users/**
        
  3. 启动gateway-service服务,访问http://127.0.0.1:12080/users/2时,符合/users/**规则,然后请求转发到uri:http://nacos-feign-user-service/users/2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226576.shtml

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

相关文章

生信算法1 - DNA测序算法实践之序列操作

生信序列基本操作算法 建议在Jupyter实践&#xff0c;python版本3.9 1. 定义DNA序列 seq ACGT# 从序列指定索引的碱基 seq[1] # C# 序列长度 len(seq) # 42. 序列拼接 # 序列拼接 - 字符串 seq1 AACC seq2 GGTT print(seq1 seq2) # AACCGGTT# 序列拼接 - 列表 seqs [A…

持续集成交付CICD:Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用

目录 一、实验 1.Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用 2.优化共享库代码 二、问题 1.Jenkins手动构建后端项目流水线报错 一、实验 1.Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用 &#xff08;1&#xff09;GitLa…

使用Redis构建简单的社交网站

文章目录 第1关&#xff1a;创建用户与动态第2关&#xff1a;处理用户关系第3关&#xff1a;状态与信息流 第1关&#xff1a;创建用户与动态 编程要求 在Begin-End区域编写 create_user(login_name, real_name) 函数&#xff0c;实现创建新用户的功能&#xff0c;具体参数与要…

Rust语言第一篇:我是谁?

Rust 是一种系统级编程语言&#xff0c;专注于安全性、并发性和性能。它由 Mozilla 开发并于 2010 年首次发布。Rust 被设计为一种可靠和高效的编程语言&#xff0c;可用于构建各种类型的软件&#xff0c;从操作系统和嵌入式设备到 Web 应用程序和桌面应用程序。 以下是 Rust …

java.lang.UnsupportedOperationException: null

目的&#xff1a;想使用add()在list集合中加入数据 原因&#xff1a;Arrays的内部类ArrayList没有重写 AbstractList的add和remove方法&#xff0c;直接使用会抛异常 String str "1,2,3,5" String[] ids str.split(","); List<String> list Array…

假如董宇辉是个AI

董宇辉这么质朴、勤奋、爱动感情又有灵气的带货主播&#xff0c;配得上他的上千万粉丝。他是直播带货的一股清流&#xff0c;罕见的品类和物种。 然而&#xff0c;是东方甄选成就了董宇辉&#xff0c;还是董宇辉托起了东方甄选&#xff0c;真是笔说不清的糊涂账。董宇辉为什么…

【javascript】npm ERR! cb() never called!

错误 环境 windows 10 nvm node 14.17.0 如何解决 尝试了 5 种方法 1&#xff0c;npm cache clean --force 2, npm cache verify 3, 删掉package-lock.json &#xff08;然鹅我的这个项目没有这个文件&#xff09; 4, npm set strict-ssl false 5, 删除node_modules 这五种…

Excel中MATCH和INDEX函数的用法详解,以及Vlookup的数组用法

match函数 目的&#xff1a;查询函数&#xff0c;范围单元格中搜索特定的项&#xff0c;然后返回该项在此区域中的相对位置。 For example:让 match 去【隔壁办公室】找【老张】 Match 回复&#xff1a;【老张】坐在【隔壁办公室】第【四】个座位上 公式&#xff1a;【 mat…

【数据库设计和SQL基础语法】--查询数据--聚合函数

一、聚合函数概述 1.1 定义 聚合函数是一类在数据库中用于对多个行进行计算并返回单个结果的函数。它们能够对数据进行汇总、统计和计算&#xff0c;常用于提取有关数据集的摘要信息。聚合函数在 SQL 查询中广泛应用&#xff0c;包括统计总数、平均值、最大值、最小值等。 1…

【FPGA/verilog -入门学习7】 条件判断if与分支判断case语句的语法介绍

需求 使用if 和case 产生格雷码 / /*条件判断if与分支判断case语句的语法介绍 需求 使用if 和case 产生格雷码*/ / timescale 1ns/1ps module vlg_design(input [3:0] i_data, output reg [3:0] o_data,output reg [3:0] o_datac);always (*) begin if (4b0000 i_data) o_d…

Ceph入门到精通-Ceph Pacific 版本磁盘预测模块

磁盘预测模块利用 Ceph 设备运行状况检查来收集磁盘运行状况指标&#xff0c;并使用内部预测器模块生成磁盘故障预测并返回到 Ceph。它不需要任何外部服务器进行数据分析和输出结果。其内部预测器的准确率约为70%。 1. 启用 运行以下命令以在 Ceph 环境中启用diskprediction_…

Go和Java实现代理模式

Go和Java实现代理模式 下面通过一个用户登录的例子来说明代理模式的使用。 1、代理模式 在代理模式中&#xff0c;一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中&#xff0c;我们创建具有现有对象的对象&#xff0c;以便向外界提供功能接口。…

MySQL数据库 入门

目录 一、MySQL概述 二、MySQL安装 安装数据库 配置数据库 启动停止数据库 客户端连接数据库 三、数据模型 四、SQL 一、MySQL概述 先来讲解三个概念&#xff1a;数据库、数据库管理系统、 SQL 。 而目前主流的关系型数据库管理系统的市场占有率排名如下&#xff1a; …

【从零开始学习--设计模式--代理模式】

返回首页 前言 感谢各位同学的关注与支持&#xff0c;我会一直更新此专题&#xff0c;竭尽所能整理出更为详细的内容分享给大家&#xff0c;但碍于时间及精力有限&#xff0c;代码分享较少&#xff0c;后续会把所有代码示例整理到github&#xff0c;敬请期待。 此章节介绍建…

(第38天)RAC 修改 IP 信息

介绍 在生产中有时候会遇到机房搬迁网络变更、系统上线由测试环境切换为生产环境、系统层面双网卡绑定或者解绑等情况。Oracle RAC 环境下应该如何操作?首先,我们都知道 Oracle RAC 中的 IP 主要有:Public IP、Virtual IP、SCAN IP、Private IP 这几种,接下来分别讲解这几…

C语言算法与数据结构,旅游景区地图求最短路径

背景&#xff1a; 本次作业要求完成一个编程项目。请虚构一张旅游景区地图&#xff0c;景区地图包括景点&#xff08;结点&#xff09;和道路&#xff08;边&#xff09;&#xff1a;地图上用字母标注出一些点&#xff0c;表示景点&#xff08;比如&#xff0c;以点 A、B、C、…

【matlab】

MATLAB 中的标量运算及实例 引言 在 MATLAB 中&#xff0c;标量是指只包含单个数值的变量或常量。尽管标量运算可能看似简单&#xff0c;但它在数值计算、数据处理和算法设计中扮演着重要的角色。本文将深入探讨 MATLAB 中的标量运算&#xff0c;介绍其基本操作和一些实例应用…

vue2使用wangeditor实现数学公式+富文本编辑器

需求&#xff1a; 做一个带有数学公式的富文本编辑器&#xff0c;在网上看了很多&#xff0c;这个最合适&#xff0c;借鉴了wangEditor富文本编辑器 这里面写的是v3的整合富文本编辑器&#xff0c;我照着上面改成了v2的&#xff0c;本文章主要是实现步骤和错误解决&#xff0c;…

【数据结构】单链表的定义和操作

目录 1.单链表的定义 2.单链表的创建和初始化 3.单链表的插入节点操作 4.单链表的删除节点操作 5.单链表的查找节点操作 6.单链表的更新节点操作 7.完整代码 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助…

2023-12-16:用go语言,给定整数数组arr,求删除任一元素后, 新数组中长度为k的子数组累加和的最大值。 来自字节。

2023-12-16&#xff1a;用go语言&#xff0c;给定整数数组arr&#xff0c;求删除任一元素后&#xff0c; 新数组中长度为k的子数组累加和的最大值。 来自字节。 答案2023-12-16&#xff1a; 来自左程云。 灵捷3.5 大体步骤如下&#xff1a; 算法 maxSum1 分析&#xff1…