zoukankan      html  css  js  c++  java
  • Spring Cloud Gateway+Nacos出现服务乱串的问题记录

    一、问题介绍

    这两天在做服务迁移,替换原有的网关和consul注册中心。改造成spring cloud gateway + nacos的架构组合。原本验证没发现什么问题,但是发布生产环境后,发现有服务乱串的现象。大概过程如下:

    > curl -X GET http://gateway/service-A/api/v1/test
    > service-A success
    > curl -X GET http://gateway/service-B/admin/api/v1/test
    > service-B success
    > curl -X GET http://gateway/service-B/api/v1/test
    > service-A success
    > curl -X GET http://gateway/service-A/api/v1/test
    > service-B 404 fail
    > curl -X GET http://gateway/service-B/admin/api/v1/test
    > service-A 404 fail
    

    大致上来讲就是服务完全乱掉了,从表现上看客户端的loadbalancer无法正确命中。后来翻看网上资料,找到了唯一一篇讲这个问题的文章,简单的说了下需要移除rabbion的负载均衡器。结合着零散的资料,自己又在本地做了一些测试,最终解决了问题。
    核心方案(替换LoadBalancerClient):用 spring-cloud-starter-loadbalancer 替换 spring-cloud-starter-netflix-ribbon

    二、个人项目组件依赖

    gateway使用spring-cloud-starter-netflix-ribbon 做负载均衡有问题,估计也有版本不匹配的问题。我这里没有深究如何去匹配合适的版本,罗列个人的jar包依赖情况如下

    组件 版本
    spring-boot 2.1.8.RELEASE
    spring-cloud-gateway-starter 2.1.5.RELEASE
    spring-cloud-starter-netflix-ribbon 2.2.2.RELEASE 替换前
    spring-cloud-starter-loadbalancer 2.2.2.RELEASE 替换后

    三、简单的排查

    本地调试了一下ribbon的负载均衡,发现按照上述的测试。一旦请求报错,ribbon创建负载均衡器就会错乱。本来请求service-A,结果给我返回service-B的loadbalancer。源码逻辑比较复杂,没有深究。

    四、解决问题

    4.1、排除掉rabbion的相关依赖

    4.2、依赖spring-cloud-starter-loadbalancer

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        <version>2.2.2.RELEASE</version>
    </dependency>
    
    每天都是崭新的开始 ——Mr.司满(214382122)[]~( ̄▽ ̄)~*
  • 相关阅读:
    mysql5.7创建用户授权删除用户撤销授权
    什么是分表和分区 MySql数据库分区和分表方法
    linux命令大全之watch命令详解(监测命令运行结果)
    netstat统计的tcp连接数与⁄proc⁄pid⁄fd下socket类型fd数量不一致的分析
    ss is one another utility to investigate sockets(特适合大规模tcp链接)
    /proc/net/sockstat 里的信息是什么意思?
    linux平台下server运维问题分析与定位
    strace命令解析
    MySQL常见错误代码及代码说明
    自动化部署必备技能—定制化RPM包
  • 原文地址:https://www.cnblogs.com/MrSi/p/15333101.html
Copyright © 2011-2022 走看看