# Nacos 服务发现-Spring Cloud Alibaba 综合架构实战(五) -实现 gateway 网关。

Nacos 服务发现-Spring Cloud Alibaba 综合架构实战(五) -实现 gateway 网关。

1、什么是网关?

原来的单体架构,所有的服务都是本地的,UI 可以直接调用,现在按功能拆分成独立的服务,

跑在独立的一般都在独立的虚拟机上的 java 进程了。

客户端 UI 如何访问?
他的后台有 N 个服务,前台就需要记住管理 N 个服务,一个服务下线/更新/升级,

前台就要重新部署,这明显不符合拆分的理念,特别是当前台是移动应用的时候,
通常业务变化的节奏更快。另外,N 个小服务的调用也是一个不小的网络开销。

有了网关作为服务统一入口,就可以避免上述问题,不仅如此,服务网关是在微服务前面设置一道屏障,

请求先到服务网关,网关会对请求进行过虑、校验、路由等处理。有了服务网关可以提高微服务的安全性,
网关请求的合法性,请求不合法将被拦截,拒绝访问。

网关提供统一服务入口,让微服务对前台透明。
网关聚合后台的服务,节省流量,提升性能。
网关提供安全、过滤、流控等 API 管理功能。

2、什么是 Zuul ?

Spring Cloud Zuul 是整合 Netflix 公司的 Zuul 开源项目实现的微服务网关(API Gateway)。

它实现了请求路由、负载均衡、校验过滤等功能。

Zuul 官网:https://github.com/Netflix/zuul 

在这里插入图片描述

3、Zuul 与 Nginx 在实际项目中,需要配合使用,Nginx 的作用是反向代理、负载均衡, Zuul 的作用是保障微服务的安全访问,拦截微服务请求,校验合法性及负载均衡。

在这里插入图片描述

4、在 api-gateway 子模块的 pom.xml 配置文件中,引入 所需 依赖项。


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>nacos-micro-service</artifactId>
        <groupId>djh.it</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>api-gateway</artifactId>

    <dependencies>

        <!-- 引入 service-1-api 二级子模块依赖 -->
        <dependency>
            <groupId>djh.it</groupId>
            <artifactId>service-1-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!-- 引入 service-2-api 二级子模块依赖 -->
        <dependency>
            <groupId>djh.it</groupId>
            <artifactId>service-2-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!-- 引入 nacos 配置管理 依赖项 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!-- 引入 nacos 服务发现 依赖项 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 引入 zuul 依赖项 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>

        <!-- 引入 feign 依赖项 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

    </dependencies>

</project>

<!-- C:\java-test\idea2019\nacos_discovery\nacos-micro-service\api-gateway\pom.xml -->

5、在 api-gateway 子模块中,创建 配置文件 bootstrap.yml


##C:\java-test\idea2019\nacos_discovery\nacos-micro-service\api-gateway\src\main\resources\bootstrap.yml

server:
  port: 56010  # 启动端口 命令行注入。
#port: ${port:56010}  # 启动端口设置为动态传参,如果未传参数,默认端口为 56010
#servlet:
#context-path: /application1

spring:
  application:
    name: api-gateway  #spring应用名, # 注意 FeignClient 不支持名字带下划线
  main:
    allow-bean-definition-overriding: true # SpringBoot2.1 需要设定。
  cloud:
    nacos:
      discovery:  # 表示服务发现
        server-addr: 127.0.0.1:8848  # nacos 服务器地址
        namespace: b75c342f-8aeb-4f5a-a1d3-21f0738d7960  # dev开发环境(nacos-1.1.3)
        cluster-name: DEFAULT
      config:  # 表示配置管理
        server-addr: 127.0.0.1:8848  # 配置 nacos 中心地址
        file-extension: yaml  # 配置文件后缀名。
        namespace: b75c342f-8aeb-4f5a-a1d3-21f0738d7960  # dev开发环境(nacos-1.1.3)。
        group: NACOS_MICROSERVICE_GROUP  # xx业务组。



6、浏览器地址栏输入:http://127.0.0.1:8848/nacos 登录 nacos 服务,在配置列表的,dev 开发环境,创建新配置。


Data ID : api-gateway.yaml
Group : NACOS_MICROSERVICE_GROUP
配置格式 :YAML 
配置内容 :
zuul:
  routes:
    application1:
      stripPrefix: false
      path: /application1/**
	  

在这里插入图片描述

在这里插入图片描述

7、在 api-gateway 子模块中,创建 网关 启动类 ApiGatewayBootstrap.java


/**
*   C:\java-test\idea2019\nacos_discovery\nacos-micro-service\api-gateway\src\main\java\djh\it\microservice\gateway\ApiGatewayBootstrap.java
*
*   2024-4-13  在 api-gateway 子模块中,创建 网关 启动类 ApiGatewayBootstrap.java
*/

package djh.it.microservice.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy
public class ApiGatewayBootstrap {
   public static void main(String[] args) {
       SpringApplication.run(ApiGatewayBootstrap.class, args);
   }
}


8、运行 网关 启动类 ApiGatewayBootstrap.java 进行测试,

再次 在浏览器地址栏输入:http://localhost:56010/application1/service
输出结果变为:test | Consumer invoke | Provider invoke

在这里插入图片描述

在这里插入图片描述

上一节相关代码请点击:
# Nacos 服务发现-Spring Cloud Alibaba 综合架构实战(四) -实现 service2 子模块。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kafka、RabbitMQ、Pulsar、RocketMQ基本原理和选型

Kafka、RabbitMQ、Pulsar、RocketMQ基本原理和选型 1. 消息队列1.1 消息队列使用场景1.2. 消息队列模式1.2.1 点对点模式&#xff0c;不可重复消费1.2.2 发布/订阅模式 2. 选型参考2.1. Kafka2.1.1 基本术语2.1.2. 系统框架2.1.3. Consumer Group2.1.4. 存储结构2.1.5. Rebalan…

【深度学习】执行wandb sync同步命令报错wandb: Network error (SSLError), entering retry loop

执行wandb sync同步命令报错wandb: Network error (SSLError), entering retry loop 在代码中设置wandb offline的命令 os.environ["WANDB_API_KEY"] "API keys" os.environ["WANDB_MODE"] "offline"日志文件生成后&#xff0c;使…

十大排序——7.希尔排序

下面我们来看一下希尔排序 目录 1.介绍 2.代码实现 3.总结与思考 1.介绍 希尔排序是插入排序的一种优化&#xff0c;可以理解为是一种分组的插入排序。 希尔排序的要点&#xff1a; 简单来说&#xff0c;就是分组实现插入&#xff0c;每组元素的间隙称为gap&#xff0c;…

【Git】常用命令速查

目录 一、创建版本 二、修改和提交 三、查看提交历史 四、撤销 五、分支与标签 六、合并与衍合 七、远程操作 一、创建版本 命令简要说明注意事项git clone <url>克隆远程版本库 二、修改和提交 命令简要说明注意事项 三、查看提交历史 命令简要说明注意事项 …

论文解读:(MoCo)Momentum Contrast for Unsupervised Visual Representation Learning

文章汇总 参数的更新&#xff0c;指encoder q的参数&#xff0c;为encoder k&#xff0c;sampling&#xff0c;monentum encoder 的参数。 值得注意的是对于(b)、(c)这里反向传播只更新&#xff0c;的更新只依赖于。 对比学习如同查字典 考虑一个编码查询和一组编码样本是字典…

负载均衡集群——LVS

目录 1.LVS简介 2.LVS体系结构 3.LVS相关术语 4. LVS工作模式 5. LVS调度算法 6.LVS集群介绍 6.1 LVS-DR模式 6.2 LVS – NAT 模式 6.3 LVS – TUN 模式 7.LVS 集群构建 7.1 LVS/NAT 模式配置 实验操作步骤 步骤 1 Nginx1 和 Nginx2 配置 步骤 2 安装和配置 LVS …

Visual Studio 2019 社区版下载

一、网址 https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes#start-window 二、选择这个即可

ISP图像处理pipeline简介1

ISP 是什么&#xff1f; ISP (Image Signal Processor)&#xff0c;图像信号处理器&#xff0c;是用于摄影和视频处理的一种专用芯片。它是用来干什么的呢&#xff1f;简单说就是用来将图像传感器&#xff08;CCD, CMOS&#xff09;信号转化成可视的信号的功能&#xff0c;这里…

回归损失函数

目录 1 MAE 2 MSE 3 MAPE 4 Quantile Loss分位数损失 回归损失函数也可以做为评价指标使用&#xff0c;但是有没有想过数据分布与损失函数之间的关系呢&#xff01; 使用特定损失函数的前提是我们对标签的分布进行了某种假设&#xff0c;在这种假设的前提下通过极大似然法推…

社交媒体数据恢复:YY语音

YY语音数据恢复指南 在我们的日常生活中&#xff0c;数据丢失是一种常见的现象。有时候&#xff0c;我们可能会不小心删除了重要的文件&#xff0c;或者因为硬件故障而导致数据丢失。在这种情况下&#xff0c;数据恢复软件可以帮助我们找回丢失的数据。本文将重点介绍如何使用Y…

一招将vscode自动补全的双引号改为单引号

打开设置&#xff0c;搜索quote&#xff0c;在结果的HTML选项下找到自动完成&#xff0c;设置默认引号类型即可。 vscode版本&#xff1a;1.88.1&#xff0c; vscode更新日期&#xff1a;2024-4-10

STM32-ADC(独立模式、双重模式)

ADC简介 18个通道&#xff1a;外部信号源就是16个GPIO回。在引脚上直接接模拟信号就行了&#xff0c;不需要侄何额外的电路。引脚就直接能测电压。2个内部信号源是内部温度传感器和内部参考电压。 逐次逼近型ADC: 它是一个独立的8位逐次逼近型ADC芯片&#xff0c;这个ADC0809是…

net core 程序运行报错,需要kb2533623补丁

报错大概如下&#xff1a; Failed to load the dll from xxxx 0x80070057 The library hostfxr.dll was found, but loading it from .xxxx\hostfxr.dll failed 目前微软官方已经停止这个补丁下载了&#xff0c;找个了多个网址不是带病毒就是带推广了&#xff0c;下面这个目前…

I2C通信的详细讲解

物理接口&#xff1a; SCL SDA &#xff08;1&#xff09;SCL&#xff08;serial clock&#xff09;:时钟线&#xff0c;传输CLK信号&#xff0c;一般是I2C主设备向从设备提供时钟的通道。 &#xff08;2&#xff09;SDA&#xff08;serial data&#xff09;&#xff1a;数据…

【从零开始手搓12306项目】第一阶段遇到的问题及解决方案

IDEA中datebase连接mysql失败 读取外包函数报错 注意区分private和public 找不到数据库&#xff1f; 一定要注意数据库的url链接&#xff0c;在datebase的url复制过来 xml和java对应不上&#xff1f; 最好复制一遍到xml文件 git忽略条件文件目录 定义Git全局的 .gitigno…

还有同学开题报告没写吗?

引言 作为一名在软件技术领域深耕多年的专业人士&#xff0c;我不仅在软件开发和项目部署方面积累了丰富的实践经验&#xff0c;更以卓越的技术实力获得了&#x1f3c5;30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定&#xff0c;也是对我的创新精神和专业承诺…

Golang面试题四(GMP)

目录 1.Goroutine 定义 2.GMP 指的是什么 3.GMP模型的简介 全局队列&#xff08;Global Queue&#xff09; P的本地队列 P列表 M列表 4.有关P和M的个数问题 P的数量问题 M的数量问题 P和M何时会被创建 5.调度器P的设计策略 复⽤线程 work stealing机制 hand off…

Adobe将Sora、Runway、Pika,集成在PR中

4月15日晚&#xff0c;全球多媒体巨头Adobe在官网宣布&#xff0c;将OpenAI的Sora、Pika 、Runway等著名第三方文生视频模型&#xff0c;集成在视频剪辑软件Premiere Pro中&#xff08;简称“PR”&#xff09;。 同时&#xff0c;Adob也会将自身研发的Firefly系列模型包括视频…

Java工程师常见面试题:Java基础(一)

1、JDK 和 JRE 有什么区别&#xff1f; JDK是Java开发工具包&#xff0c;它包含了JRE和开发工具&#xff08;如javac编译器和java程序运行工具等&#xff09;&#xff0c;主要用于Java程序的开发。而JRE是Java运行环境&#xff0c;它只包含了运行Java程序所必须的环境&#xf…

社交媒体数据恢复:钉钉

在数字化办公日益普及的今天&#xff0c;钉钉作为一款综合性的企业级通讯工具&#xff0c;已经深入到众多企业和个人的工作与生活中。然而&#xff0c;在日常使用过程中&#xff0c;我们难免会遇到一些意外情况导致数据丢失的问题。本文将针对钉钉数据恢复这一主题&#xff0c;…