问题产生背景

在使用Spring Cloud Gateway过程中,希望配置多Routes映射不同的微服务,因为Gateway 和Zuul的访问路径不同(zuul 会带有服务service Id),造成错误。

现象表现

问题定位

  1. 认为是配置Predicate问题。
      routes:
- id: after_route
uri: lb://user-center
predicates:
# 当当前时间晚于设置时间之后,才能访问
# 否则得到404错误
#- After=2010-01-01T18:00:00.789-07:00[America/Denver]
# 当Host属于**.geekplus.com.cn或**.life-runner.com时
# http://localhost:9999/** -> user-center/**
# eg. http://localhost:9999/users/1 -> user-center/users/1
#- Host=**.geekplus.com.cn,**.life-runner.com
- TimeBetween=上午6:00,下午11:00
- Path=/users/**
filters:
- AddRequestHeader=CompanyKey,123456
- AddResponseHeader=Success,Isaac
- PreLog=CustomLogKey,CustomLogValue
- id: content_route
uri: lb://shared-center
- After=2010-01-01T18:00:00.789-07:00[America/Denver]
- Path=/share/**
filters:
- AddRequestHeader=CompanyKey,123456
- AddResponseHeader=Success,Isaac
- PreLog=CustomLogKey,CustomLogValue
  1. 认为是顺序问题
      routes:
- id: content_route
uri: lb://shared-center
predicates:
- Path=/share/**
- id: after_route
uri: lb://user-center
predicates:
# 当当前时间晚于设置时间之后,才能访问
- TimeBetween=上午6:00,下午11:00
- Path=/users/**
filters:
- AddRequestHeader=CompanyKey,123456
- AddResponseHeader=Success,Isaac
- PreLog=CustomLogKey,CustomLogValue
  1. 以为自己写错了。

四处寻求帮助,无奈,Gateway的资料网上真的很少。还是自食其力吧,根据错误信息,查看Nacos中元数据,发现异常!

问题结论

  1. gateway 和 user-center 都进行过重启,因为重启后,服务Ip发生了变更,在服务注册中心这两个ip相同,因此可以访问。

    2,shared-center 我长时间没有重启,注册在发现中心的ip 是老的Ip,和gateway/user-center的IP不同,造成请求失败。

    具体如下:

    shared-center: 172.16.33.167

    user-center & gateway : 172.16.29.0

解决方法,重启shared-center,重新获取实例Ip,结果恢复正常!

Tips

我使用的是Spring Cloud Alibaba Nacos作为服务发现中心,在重启内容服务之后,发现中心的失败IPservice并没有被刷新,需要手动处理一下,否则依旧会调用到老的IP。

Spring Cloud Gateway 之请求坑位[微服务IP不同请求会失败]的更多相关文章

  1. spring cloud深入学习(一)-----什么是微服务?什么是rpc?spring cloud简介

    近年来,微服务非常的流行,那么为什么是它?简单介绍一下. 为什么是微服务? 微服务架构是一种将单应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中运行,并与轻量级机制(通常是HTTP资 ...

  2. spring cloud: zuul(四): 正则表达式匹配其他微服务(给其他微服务加版本号)

    spring cloud: zuul(四): 正则表达式匹配其他微服务(给其他微服务加版本号) 比如我原来有,spring-boot-user微服务,后台进行迭代更新,另外其了一个微服务: sprin ...

  3. spring boot 2.0.3+spring cloud (Finchley)8、微服务监控Spring Boot Admin

    参考:Spring Boot Admin 2.0 上手 Spring Boot Admin 用于管理和监控一个或多个Spring Boot程序,在 Spring Boot Actuator 的基础上提 ...

  4. Spring Cloud下使用Feign Form实现微服务之间的文件上传

    背景 ​ Spring Cloud现在已经被越来越多的公司采用了,微服务架构比传统意义上的单服务架构从复杂度上多了很多,出现了很多复杂的场景.比如,我们的产品是个app,支持第三方登录功能,在手机端调 ...

  5. Spring Cloud(一)简单的微服务集成Eureka

    1        Spring Cloud简介 1.1             简介 Spring Cloud项目的官方网址:https://projects.spring.io/spring-clo ...

  6. Spring Cloud系列(一):微服务架构简介

    一.微服务概述 1.微服务是什么 微服务架构的核心就是服务的拆分,把传统的单体式应用,根据一定的维度(比如业务)拆分为一个一个的服务,每一个服务都有自身特定的功能,又都能够独立的部署,甚至可以拥有自己 ...

  7. spring cloud gateway获取response body

    网关发起请求后,微服务返回的response的值要经过网关才发给客户端.本文主要讲解在spring cloud gateway 的过滤器中获取微服务的返回值,因为很多情况我们需要对这个返回进行处理.网 ...

  8. Spring Cloud Gateway修改请求和响应body的内容

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. Spring Cloud Alibaba学习笔记(16) - Spring Cloud Gateway 内置的路由谓词工厂

    Spring Cloud Gateway路由配置的两种形式 Spring Cloud Gateway的路由配置有两种形式,分别是路由到指定的URL以及路由到指定的微服务,在上文博客的示例中我们就已经使 ...

随机推荐

  1. 打包Electron项目

    先确保该项目正常运行npm run dev,结束程序, 上篇的项目运行已经提到了打包输出工具electron-packager 可以使用全局安装的方式: npm install -g electron ...

  2. python学习——列表生成式,生成器和迭代器

    列表生成式 列表生成式,是python内置的非常简单却强大的可以用来创建list的生成式.它可以极大的简化语句. """列表生成式""" # ...

  3. effective java 3th item1:考虑静态工厂方法代替构造器

    传统的方式获取一个类的实例,是通过提供一个 public 构造器.这里有技巧,每一个程序员应该记住.一个类可以对外提供一个 public 的 静态工厂方法 ,该方法只是一个朴素的静态方法,不需要有太多 ...

  4. 搭建Spark高可用集群

      Spark简介 官网地址:http://spark.apache.org/ Apache Spark™是用于大规模数据处理的统一分析引擎. 从右侧最后一条新闻看,Spark也用于AI人工智能 sp ...

  5. 使用SVN钩子强制提交日志和限制提交文件类型

    Subversion本身有很好的扩展性,用户可以通过钩子实现一些自定义的功能.所谓钩子实际上是一种事件机制,当系统执行到某个特殊事件时,会触发我们预定义的动作,这样的特殊事件在Subversion里有 ...

  6. map()函数映射

    map()函数(映射) pattern = "abba" str = "dog cat cat dog" res=str.split() print(list( ...

  7. list 分组

    Map<Long, List<LogDataVo>> corpIdMap = list.stream().collect(Collectors.groupingBy(LogDa ...

  8. NLP(十九) 双向LSTM情感分类模型

    使用IMDB情绪数据来比较CNN和RNN两种方法,预处理与上节相同 from __future__ import print_function import numpy as np import pa ...

  9. P1726 上白泽慧音 tarjan 模板

    P1726 上白泽慧音 这是一道用tarjan做的模板,要求找到有向图中最大的联通块. #include <algorithm> #include <iterator> #in ...

  10. cogs 1377. [NOI2011] NOI嘉年华 (dp

    题意:给你n个活动的起止时间,要你从中选一些活动在2个会场安排(不能有两个活动在两个会场同时进行),使活动较少的会场活动数最大,以及在某个活动必须选择的前提下,求该答案. 思路:由于n很小,时间很大, ...