Zuul 实现网关转发的五种方式小结

上图为一个微服务框架的简单示例,当有一个HTTP请求发送到服务器的时候,其实是先经过了Nginx的,再经过了网关,这里的网关就担任了拦截过滤的作用,既然拦截和过滤了,肯定就涉及到了请求的转发

转发我大致例了以下五种转发方式:

方式一:path+serviceId 方式

在spring_cloud的配置文件application.yml 文件中加入以下配置:

server:
    port: 8888 #服务端口
spring:
    application:
        name: app-zuul-gateway #指定服务名
eureka:
  client:
    service-url:
           defaultZone: http://127.0.0.1:8100/eureka/  #注册到eureka中的地址
    register-with-eureka: true
    fetch-registry: true

instance:
      prefer-ip-address: true #将自己的ip地址注册到Eureka服务中
      ip-address: 127.0.0.1   #ip地址
zuul:
#  方式一:path+serviceId
    routes: #定义服务转发规则
        abcs:   #abcs这个名字任意取的
	        path: /order/**   #配置请求URL的请求规则
	        serviceid: app-order  #eureka中服务的id

跳转示例 :

http://localhost:8888/order/order2/201810300001

http://localhost:8888/order就相当于指定了eureka中id为app-order的微服务,后面在接上他本身的参数,就可以正常使用了

方式二:指定服务id 方式

zuul:
 routes: #定义服务转发规则
         app-order: /order/**

跳转示例 :

http://localhost:8888/order/order2/201810300001

和方法一一样,http://localhost:8888/order就相当于指定了eureka中id为app-order的微服务,后面在接上他本身的参数,就可以正常使用了

方式三:同时配置path和url 方式

zuul:
 routes: #定义服务转发规则
  abcs:
     path: /order/**
     url: http://127.0.0.1:8091 #真正的微服务地址,path匹配的请求都转发到这里

跳转示例 :

http://localhost:8888/order/order2/201810300001

上面的和方法一样,http://localhost:8888/order就相当于指定了eureka中id为app-order的微服务,后面在接上他本身的参数,就可以正常使用了

方式四:路由前缀 方式

zuul:
 prefix: /order2
 strip-prefix: false
 routes:
      app-order: /order/**

跳转示例 :

http://localhost:8888/order2/app-order/201810300001

访问Zuul的/order2/app-order/201810300001路径,请求将会被转发到app-order 的order2/201810300001

方式五:路由前缀2 方式

zuul:
 routes:
     app-order:
        path: /order2/**
        strip-prefix: false

跳转示例 :

http://localhost:8888/order2/201810300001

访问Zuul的/order2/201810300001路径,请求将会被转发到app-order 的order2/201810300001

今天的分享就到此结束啦,以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Cloud基于zuul实现网关过程解析

    这篇文章主要介绍了Spring Cloud基于zuul实现网关过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 利用zuul网关统一向外暴露接口 1.新建项目 spring-zuul 2.引入pom <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuu

  • springcloud教程之zuul路由网关的实现

    1.简介 当微服务对外提供接口访问时,并且有多个微服务,外部如何访问到具体的微服务?这时就可以使用网关的路由功能,依据url匹配将请求分别转发到不同的服务上 2.使用 zuul除了有转发功能,还有过滤功能,在网关层面可以对请求权限进行校验,token信息生成,设置token信息过期等等,并且可以将token保存到redis缓存中. <dependency> <groupId>org.springframework.cloud</groupId> <artifact

  • SpringCloud网关组件zuul实例解析

    1.引入如下依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupI

  • SpringCloud Zuul网关功能实现解析

    简介 API Gateway,时系统的唯一对外的入口,介于客户端和服务端之间的中间层,处理非业务功能, 提供路由请求,鉴权,监控,缓存,限流等功能 统一接入 智能路由 AB测试.灰度测试 负载均衡.容灾处理 日志埋点(类似 Nignx日志) 流量监控 限流处理 服务降级 安全防护 鉴权处理 监控 机器网终隔离 1.添加依赖 注意SpringBoot和SpringCloud版本兼容 <dependency> <groupId>org.springframework.cloud<

  • 解决zuulGateway网关添加路由异常熔断问题

    zuulGateway是spring cloud中很不错的组件,使用频率很高.使用过程中偶尔可能遇到服务路由异常的情况,如果没有异常熔断,可能会造成应用无响应,严重甚至造成系统雪崩.所以一般需要加上熔断机制. 直接看代码,很简单: /* * 文件名:ServerFallback.java 版权:Copyright by www.poly.com 描述: 修改人:gogym 修改时间:2018年1月31日 跟踪单号: 修改单号: * 修改内容: */ package com.poly.zuul.f

  • SpringCLoud搭建Zuul网关集群过程解析

    1.使用技术 Springboot,SpringCloud,Zuul,Nignx 2.目的 使用Zuul搭建微服务高可用的网关 3.项目创建 3.1 创建注册中心(略) 3.2 创建一个hello-service的服务工程 3.3 创建springcloud-zuul-ha网关服务 3.3.1 创建工程(略) 3.3.2 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q

  • SpringCloud zuul 网关如何解决跨域问题

    跨域 在SpringCloud中 zuul 和springboot 要同时配置才能实现网关处理跨域 解决Access to XMLHttpRequest at 'http://192.168.2.173:8001/energy-base/groupType/getPageByType?timestamp=1557886425725' from origin 'http://localhost:3000' has been blocked by CORS policy: The 'Access-C

  • Spring Cloud Zuul路由网关服务过滤实现代码

    Zuul 简介 Zuul 的主要功能是路由转发和过滤器.路由功能是微服务的一部分,比如 /api/admin 转发到到 Admin 服务,/api/member 转发到到 Member 服务.Zuul 默认和 Ribbon 结合实现了负载均衡的功能. 引入依赖 在 pom.xml 中主要添加 spring-cloud-starter-netflix-eureka-server 和 spring-cloud-starter-netflix-zuul 依赖 <dependency> <gro

  • Zuul 实现网关转发的五种方式小结

    上图为一个微服务框架的简单示例,当有一个HTTP请求发送到服务器的时候,其实是先经过了Nginx的,再经过了网关,这里的网关就担任了拦截过滤的作用,既然拦截和过滤了,肯定就涉及到了请求的转发 转发我大致例了以下五种转发方式: 方式一:path+serviceId 方式 在spring_cloud的配置文件application.yml 文件中加入以下配置: server: port: 8888 #服务端口 spring: application: name: app-zuul-gateway #

  • JS实现斐波那契数列的五种方式(小结)

    下面是五种实现斐波那契数列的方法 循环 function fibonacci(n){ var res1 = 1; var res2 = 1; var sum = res2; for(var i = 1;i < n;i ++){ sum = res1 + res2; res1 = res2; res2 = sum; } return sum; } 普通递归 function fibonacci (n) { if ( n <= 1 ) {return 1}; return fibonacci(n

  • Python判断Nan值的五种方式小结

    目录 Python判断Nan值方式小结 numpy判断 Math判断 Pandas判断 判断是否等于自身 Nan不属于任何取值区间 python的nan处理 定义nan的方法 常见的计算结果为nan的情况 Python判断Nan值方式小结 numpy判断 import numpy as np nan = float('nan') print(np.isnan(nan)) True Math判断 import math nan = float('nan') print(math.isnan(nan

  • Spring 加载 Application Context五种方式小结

    目录 Spring创建出现的错误,ApplicationContext错误 解决方案 容器是Spring框架的核心.Spring 容器使用DI管理构成应用的组件.Spring容器使用DI管理构成应用的组件.这些对象更简单.易于理解,更易于重用并且更易于进行单元测试. Spring 容器 Spring 容器并不是只有一个.Spring 自带了多个容器实现,可以归为两种不同的类型. Bean工厂(由org.springframework,beansfactory.BeanFactory 接口定义)是

  • javaScript中定义类或对象的五种方式总结

    第一种方式: 工厂方法 能创建并返回特定类型的对象的工厂函数(factory function). function createCar(sColor){ var oTempCar = new Object; oTempCar.color = sColor; oTempCar.showColor = function (){ alert(this.color); }; return oTempCar; } var oCar1 = createCar(); var oCar2 = createCa

  • 详解五种方式让你在java中读取properties文件内容不再是难题

    一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC+Mybatis整合开发的项目中通过java程序读取properties文件内容的方式进行了梳理和分析,先和大家共享. 二.项目环境介绍 Spring 4.2.6.RELEASE SpringMvc 4.2.6.RELEASE Mybatis 3.2.8 Maven 3.3.9 Jdk 1.7 Id

  • PHP读取文件内容的五种方式

    php读取文件内容的五种方式 分享下php读取文件内容的五种方法:好吧,写完后发现文件全部没有关闭.实际应用当中,请注意关闭 fclose($fp); -- php读取文件内容: -----第一种方法-----fread()-------- <?php $file_path = "test.txt"; if(file_exists($file_path)){ $fp = fopen($file_path,"r"); $str = fread($fp,files

  • 详解Spring配置事务的五种方式

    Spring配置文件中关于事务配置总是由三个组成部分,分别是 DataSource .TransactionManager  和 代理机制 这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. DataSource.TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,TransactionManager的实现为HibernateTransactionManager. 具

  • JavaScript中为事件指定处理程序的五种方式分析

    本文实例讲述了JavaScript中为事件指定处理程序的五种方式.分享给大家供大家参考,具体如下: JavaScript和HTML之间的交互是通过事件实现的. IE9.Firefox.Opera.Sarifi.Chrome都已经实现了DOM2级事件模块的核心部分,IE8是最后一个仍然使用其专有事件系统的主要浏览器. 事件流: 事件流描述的是从页面中接受事件的顺序,但IE和Netscape却提出了完全相反的事件流的概念,IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流. 1) 事件

  • Spring为IOC容器注入Bean的五种方式详解

    这篇文章主要介绍了Spring为IOC容器注入Bean的五种方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一 @Import导入组件,id默认是组件的全类名 //类中组件统一设置.满足当前条件,这个类中配置的所有bean注册才能生效: @Conditional({WindowsCondition.class}) @Configuration @Import({Color.class,Red.class,MyImportSelector

随机推荐