首页 > 其他分享 >微服务网关Zuul

微服务网关Zuul

时间:2024-10-22 18:46:21浏览次数:3  
标签:网关 服务 spring boot springframework org Zuul cloud

一、Zuul简介

Zuul是Netflix开源的微服务网关,包含对请求的路由和过滤两个主要功能。

1)路由功能:负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。

2)过滤功能:负责对请求的过程进行干预,可以实现请求校验、服务聚合等功能。

二、Zuul代码实现

1)在pom.xml中引入依赖

注意:系统中所有的微服务须连接至Eureka注册中心。Eureka搭建详见另一篇博文:微服务1:搭建微服务注册中心Eureka(命令行简易版,不使用IDE)-CSDN博客

 	<dependency>
 		<groupId>org.springframework.cloud</groupId>
 		<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
 	</dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>   

完整的pom.xml如下:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  
  <groupId>com.test</groupId>
  <artifactId>microservice-zuul</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>microservice-zuul</name>
  <url>http://maven.apache.org</url>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.0.RELEASE</version>
    <relativePath/> 
  </parent>
    
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
  	<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>   
    
    <dependency>
 				<groupId>org.springframework.cloud</groupId>
 				<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
 		</dependency> 
 		
 		<dependency>
 				<groupId>org.springframework.cloud</groupId>
 				<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
 		</dependency>
    
  </dependencies>
  
  
      <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR4</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>               
    </dependencies>
  </dependencyManagement>
  
  <build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
  
</project>

2)配置application.yml

server:
  port: 9000
spring:
  application:
    name: microservice-zuul

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8080/eureka/

3)在App.java中添加注解

@EnableDiscoveryClient
@EnableZuulProxy

package com.test;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

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

}

三、Zuul测试

在浏览器中输入:

http://localhost:9000/microservice-consumer/users/4

其中microservice-consumer是实际要访问的微服务名称,如果不加Zuul,则该服务的访问URL为:

http://localhost:8010/users/3

使用Zuul网关之后,客户端无需知道每个微服务的端口号,即可通过网关端口号9000来统一访问到系统中所有的微服务。

标签:网关,服务,spring,boot,springframework,org,Zuul,cloud
From: https://blog.csdn.net/catontower/article/details/143160022

相关文章

  • 网站服务器被攻击了怎么办?
    当网站服务器被攻击时,可能会出现各种问题,如服务中断、数据泄露、恶意软件感染等。如果不及时采取措施,可能会给企业带来严重的损失。因此,当网站服务器被攻击时,企业需要采取以下措施来应对:一、快速定位问题当网站服务器出现异常时,首先要快速定位问题。可以通过服务器日志、监控工......
  • 小型诊疗预约平台/小型诊疗/预约平台/医疗预约/诊所预约/医生预约/网上预约/医疗服务/
    博主介绍......
  • 服务器设置
    服务器设置Debian11替换源备份现有的apt源配置cp/etc/apt/sources.list/etc/apt/sources.list_backup替换为中科大源cat>/etc/apt/sources.list<<EOFdebhttps://mirrors.ustc.edu.cn/debian/bullseyemaincontribnon-freedeb-srchttps://mirrors.ustc.......
  • 软路由搭建服务教程
    .教程1前提这里假定你有了一个服务器,或者是软路由(斐讯N1,玩客云什么的都行),至于软路由刷机OpenWRT后面再写个教程,或者在咸鱼上可以买一个直接刷好OpenWRT的玩客云,不到30¥!2ssh登录服务器就需要ssh登录(需要特定软件,puty,nextssh等),软路由也可以用ssh登录,也可以在软路由的后......
  • chrony服务器
    1.安装yuminstallchrony-y2.配置文件主配置文件:/etc/chrony.conf   serverntp.aliyun.comiburst       ---指定阿里云ntp服务器allow192.168.159.0/24          ---允许的网段localstratum1(取值范围:1-16,同步层数由大到小,16代表未做时......
  • 【架构与设计】常见微服务分层架构的区别和落地实践
    作者:京东科技康志兴前言从强调内外隔离的六边形架构,逐渐发展衍生出的层层递进、注重领域模型的洋葱架构,再到和DDD完美契合的整洁架构。架构风格的不断演进,其实就是为了适应软件需求越来越复杂的特点。可以看到,越现代的架构风格越倾向于清晰的职责定位,且让领域模型成为架构的......
  • 远程管理服务
    远程管理服务实现远程管理方法1)利用ssh服务22加密传输默认允许root用户登录2)利用Telnet服务23名文传输默认不允许root用户远程登录ssh作用说明1)实现远程传输数据2)实现远程传输数据ssh服务安装服务部署 openssh-clients(软件包) /etc/ssh/ssh_config--ssh客......
  • 用MySQL5.7的客户端连接MySQL8.0的服务端竟然报错,不是说好向下兼容吗?
    在默认条件下,用MySQL5.7的客户端连接MySQL8.0的服务端竟然报错,不是说好向下兼容吗?WHAT?报错如下:[root@node234~]#mysql-ushukuinfo-p'123456'-h172.16.1.223mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.ERROR2026(HY000):SSLconn......
  • 金融交易系统延迟,NTP时间同步服务器为其保驾护航
    金融交易系统延迟,NTP时间同步服务器为其保驾护航金融交易系统延迟,NTP时间同步服务器为其保驾护航京准电子科技官微——ahjzsz“2024年9月27日,上海证券交易所(上交所)的交易系统出现了延迟现象,导致投资者在关键时刻无法及时进行操作。这一现象不仅影响了多家交易平台,还引发了投资......
  • 服务行业的数据管理实践:TapData Cloud 如何助力连锁酒店物业的全球化运营优化
    使用TapData,化繁为简,摆脱手动搭建、维护数据管道的诸多烦扰,轻量替代OGG,Kettle等同步工具,以及基于Kafka的ETL解决方案,「CDC+流处理+数据集成」组合拳,加速仓内数据流转,帮助企业将真正具有业务价值的数据作用到实处,将“实时数仓”方法论落进现实。TapData持续迭代产品......