返回顶部
首页 > 资讯 > 精选 >服务网关Spring Cloud Zuul的示例分析
  • 211
分享到

服务网关Spring Cloud Zuul的示例分析

2023-06-29 10:06:44 211人浏览 安东尼
摘要

这篇文章主要为大家展示了“服务网关spring Cloud Zuul的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“服务网关Spring Cloud&nbs

这篇文章主要为大家展示了“服务网关spring Cloud Zuul的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“服务网关Spring Cloud Zuul的示例分析”这篇文章吧。

一、Zuul简介

Zuul作为微服务系统的网关组件,用于构建边界服务(Edge Service),致力于动态路由、过滤、监控、弹性伸缩和安全。其在微服务架构中有着重要的作用,主要体现在以下六个方面:

Zull、Ribbon以及Eureka相结合可以实现智能路由和负载均衡的功能,Zull可以按照某种策略将请求分发到不同的实例上;

网关作为边界服务,将内部服务的api接口进行聚合并统一对外暴露接口。保护内部服务的API接口,防止内部服务被外界调用泄露敏感信息;

网关可以对用户的身份权限进行认证,防止非法请求API接口;

网关可以实现监控功能,实时日志输出,对请求进行记录;

网关可以用来实现流量监控,在高流量的情况下,对服务进行降级;

API接口从内部服务分离出来,便于测试

二、请求路由

使用spring cloud Zuul实现路由的规则是十分简单的。路由方式包括两种:传统路由方式,面向服务的路由方式。

2.1 传统路由

下面我们看以下配置:

zuul.routes.holiday.path=/holiday  @Override  public String getRoute() {    return "*";  }  public ClientHttpResponse fallbackResponse(String route) {    return new ClientHttpResponse() {      @Override      public httpstatus getStatusCode() throws ioException {        return HttpStatus.OK;      }      @Override      public int getRawStatusCode() throws IOException {        return 200;      }      @Override      public String getStatusText() throws IOException {        return "OK";      }      @Override      public void close() {      }      @Override      public InputStream getBody() throws IOException {        return new ByteArrayInputStream((route+" is unavailable.").getBytes());      }      @Override      public HttpHeaders getHeaders() {        HttpHeaders headers = new HttpHeaders();        headers.setContentType(MediaType.APPLICATION_JSON);        return headers;      }    };  }  @Override  public ClientHttpResponse fallbackResponse(String route, Throwable cause) {    if (cause != null) {      String reason = cause.getMessage();      logger.info("Excption {}",reason);    }    return fallbackResponse(route);  }}

六、实战

6.1 pom文件

<?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>        <groupId>com.southGIS.ibase.parent</groupId>        <artifactId>parentWEBService</artifactId>        <version>2.0.1-SNAPSHOT</version>        <relativePath>../../parent/parentWebService/pom.xml</relativePath>    </parent>    <modelVersion>4.0.0</modelVersion>    <artifactId>api-gateway</artifactId>    <groupId>com.southgis.ibase.systemassistance</groupId>    <version>2.0.1-SNAPSHOT</version>    <packaging>war</packaging>    <description>网关服务</description>    <dependencies>      <!--服务注册与发现-->        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>        </dependency>        <!--配置中心-->        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-config-client</artifactId>        </dependency>        <!--路由网关-->        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.retry</groupId>            <artifactId>spring-retry</artifactId>        </dependency>        <!--cas 客户端-->        <dependency>            <groupId>org.jasig.cas.client</groupId>            <artifactId>cas-client-core</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>    </dependencies>    <build>        <finalName>apiGateway</finalName>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>                <configuration>                    <mainClass>com.southgis.ibase.systemassistance.ApiGatewayCustomApplication</mainClass>                </configuration>                <executions>                    <execution>                        <Goals>                            <goal>repackage</goal>                        </goals>                    </execution>                </executions>            </plugin>        </plugins>    </build></project>

6.2 配置文件

bootstrap.properties

#服务名 对应配置文件中的{application}部分spring.application.name=apiGateway#对应前配置文件中的{profile}部分spring.cloud.config.profile=dev2#配置访问路径server.servlet.context-path=/eureka-server#注册中心eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka-server/eureka#为监控端点 /info和/health端点也加上类似的前缀management.server.servlet.context-path=/apiGatewayeureka.instance.statusPageUrlPath=${management.server.servlet.context-path}/actuator/infoeureka.instance.healthCheckUrlPath=${management.server.servlet.context-path}/actuator/health#通过服务连接配置中心#spring.cloud.config.discovery.enabled=true#spring.cloud.config.discovery.serviceId=config-serverspring.cloud.config.uri = http://localhost:8080/config-server#配置文件获取失败快速返回spring.cloud.config.failFast=true#日志配置#logging.config=classpath:logback-spring.xml#logging.path=D:/ibase/logs/holiday#logging.pattern.console=[%d{yyyy-MM-dd HH:mm:ss}] -- [%-5p]: [%c] -- %m%n#logging.pattern.file=[%d{yyyy-MM-dd HH:mm:ss}] -- [%-5p]: [%c] -- %m%n

apiGateway-dev2.properties

#访问端口server.port=8080#设置session超时时间为540分钟server.servlet.session.timeout=PT540M#zuul默认为所有服务开启默认的路由,为了服务安全,此处关闭zuul.ignored-services=*#代码字典服务路由zuul.routes.codedict.path=/codedict  @Override  public String getRoute() {    return "*";  }  public ClientHttpResponse fallbackResponse(String route) {    return new ClientHttpResponse() {      @Override      public HttpStatus getStatusCode() throws IOException {        return HttpStatus.OK;      }      @Override      public int getRawStatusCode() throws IOException {        return 200;      }      @Override      public String getStatusText() throws IOException {        return "OK";      }      @Override      public void close() {      }      @Override      public InputStream getBody() throws IOException {        return new ByteArrayInputStream((route+" is unavailable.").getBytes());      }      @Override      public HttpHeaders getHeaders() {        HttpHeaders headers = new HttpHeaders();        headers.setContentType(MediaType.APPLICATION_jsON);        return headers;      }    };  }  @Override  public ClientHttpResponse fallbackResponse(String route, Throwable cause) {    if (cause != null) {      String reason = cause.getMessage();      logger.info("Excption {}",reason);    }    return fallbackResponse(route);  }}

6.5 启动类

** * 路由网关服务部署启动类 * * @author simon **/@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)@EnableZuulProxy@EnableEurekaClient@SpringCloudApplicationpublic class ApiGatewayMicroApplication {  public static void main(String[] args) {    SpringApplication.run(ApiGatewayMicroApplication.class, args);  }}

以上是“服务网关Spring Cloud Zuul的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 服务网关Spring Cloud Zuul的示例分析

本文链接: https://lsjlt.com/news/324152.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 服务网关Spring Cloud Zuul的示例分析
    这篇文章主要为大家展示了“服务网关Spring Cloud Zuul的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“服务网关Spring Cloud&nbs...
    99+
    2023-06-29
  • Spring Cloud Zuul服务网关的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud Zuul服务网关的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。有了Eureka服务注册发现、Hystrix断路器、Ribbon服务调用负载均...
    99+
    2023-05-30
    spring cloud zuul
  • Spring Cloud中服务网关Zuul的示例分析
    这篇文章主要介绍Spring Cloud中服务网关Zuul的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在微服务架构中,需要几个关键的组件,服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,...
    99+
    2023-06-19
  • Spring Cloud中API网关服务Zuul的示例分析
    这篇文章主要为大家展示了“Spring Cloud中API网关服务Zuul的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring Cloud中API网关服务Zuul的示例分析”这篇...
    99+
    2023-05-30
    spring cloud zuul
  • Spring Cloud Zuul中路由配置的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud Zuul中路由配置的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先我们来回忆一下配置路由规则的那两行代码:zuul.routes.api-...
    99+
    2023-05-30
    spring cloud zuul
  • Spring Cloud中Zuul重试机制的示例分析
    小编给大家分享一下Spring Cloud中Zuul重试机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下:开启Zuul功能通过源码了解Zu...
    99+
    2023-05-30
    springcloud zuul
  • Spring Cloud中的API网关服务Zuul怎么配置
    这篇文章主要讲解了“Spring Cloud中的API网关服务Zuul怎么配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Cloud中的API网关服务Zuul怎么配置”吧!构...
    99+
    2023-06-19
  • spring cloud微服务分布式云架构Spring Cloud Zuul
    Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求: 三五三六二四七二五九POM依赖<dependencies>      &n...
    99+
    2023-06-05
  • Spring Cloud Config的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud Config的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在我们了解spring cloud config之前,我可以想想一个配置中心提供的...
    99+
    2023-06-05
  • Spring Cloud Bus消息的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud Bus消息的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念我们使用配置中心时,当配置中心的配置发生了变化,我们就要发送一个post请求给客...
    99+
    2023-06-25
  • Spring-cloud之sleuth服务链路跟踪的示例分析
    这篇文章主要介绍了Spring-cloud之sleuth服务链路跟踪的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、简介Add sleuth to the cla...
    99+
    2023-05-30
  • Spring Cloud中服务注册与发现Eureka的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud中服务注册与发现Eureka的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、spring cloud简介spring cloud 为开发人员...
    99+
    2023-06-19
  • Spring Cloud中各组件超时的示例分析
    这篇文章给大家分享的是有关Spring Cloud中各组件超时的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Ribbon的超时全局设置:ribbon:ReadTimeout: 60000Con...
    99+
    2023-05-30
    springcloud
  • Spring的示例分析
    这篇文章将为大家详细讲解有关Spring的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。WHY在诞生之初,创建Spring的主要目的是用来替代更加重量级的企业级Java技术,尤其是EJB。相对于E...
    99+
    2023-05-30
    spring
  • Spring AOP的示例分析
    这篇文章主要为大家展示了“Spring AOP的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring AOP的示例分析”这篇文章吧。Spring中对AOP的支持Spring中AOP...
    99+
    2023-05-30
    spring aop
  • Spring Cloud Gateway - 新一代微服务API网关
    Spring Cloud Gateway - 新一代微服务API网关 文章目录 Spring Cloud Gateway - 新一代微服务API网关1.网关介绍2.Spring Cloud G...
    99+
    2023-09-21
    微服务 架构 云原生 java 网关 spring cloud gateway
  • Spring Cloud Gateway自定义异常处理Exception Handler的示例分析
    这篇文章给大家分享的是有关Spring Cloud Gateway自定义异常处理Exception Handler的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。方法1: ErrorWebExceptio...
    99+
    2023-06-20
  • Spring Cloud重试机制与各组件重试的示例分析
    这篇文章将为大家详细讲解有关Spring Cloud重试机制与各组件重试的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SpringCloud重试机制配置首先声明一点,这里的重试并不是报错以后的重...
    99+
    2023-05-30
    springcloud
  • Spring事务失效的示例分析
    这篇文章给大家分享的是有关Spring事务失效的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Spring事务最终依赖的数据库的事务,如果用的是mysql的话,执行引擎要是innodb;因为只有innoD...
    99+
    2023-06-29
  • Spring之BeanPostProcessor的示例分析
    小编给大家分享一下Spring之BeanPostProcessor的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、简介BeanPostProcesso...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作