springcloud微服务项目,通过gateway+nacos实现灰度发布(系统不停机升级)

这篇具有很好参考价值的文章主要介绍了springcloud微服务项目,通过gateway+nacos实现灰度发布(系统不停机升级)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

灰度发布的目的是保证系统的高可用,不停机,提升用户体验。在微服务系统中,原有系统不下线,新版系统与原有系统同时在线,通过访问权重在线实时配置,可以让少量用户先应用新版本功能,如果用户反馈存在问题,则下线新系统;如果反馈良好,则逐步加大新系统的分流权重,同时降低老系统的访问权重,直到新系统替换老系统,实现一种平滑的系统升级效果。

二、灰度发布方案

springcloud架构体系的gateway是专门用来做路由转发的,包括一项重要的功能:权重路由。nacos是目前最流行的微服务注册中心和配置中心,可实现在线配置的实时生效,无需重启系统,此处将gateway的配置信息交给nacos托管,即可实现分布式系统的灰度发布功能。

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

 nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

// sharetek-gateway.yml核心配置内容
spring:
  cloud:
    # 网关配置
    gateway:
      # 打印请求日志(自定义)
      requestLog: true
      discovery:
        locator:
          lowerCaseServiceId: true
          enabled: true
      routes:
        # 认证中心
        - id: sharetek-auth
          uri: http://192.168.72.1:9210    // 新系统
          predicates:
            - Path=/api/token,/api/test,/api/test2
            - Weight=group1, 1
        - id: sharetek-auth2
          uri: http://192.168.72.1:9203    // 老系统
          predicates:
            - Path=/api/token,/api/test,/api/test2
            - Weight=group1, 8

由于在同一台电脑上测试,用9210端口部署新系统,9203端口部署老系统,

"- Weight=group1, 1" :配置访问权重,group1相同的为一组,组内的不同机器根据权重系数"1",计算分流权重,权重越大,被访问几率越大。

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

在实际生产环境系统升级时,可以先调整服务A集群中其中一台机器的访问权重为0(即停止被访问,无论该服务是否运行,都不会被访问),再升级该服务,调整为整体流量的3%,(这个根据业务实际情况而定),释放极少量用户使用新功能,观察新系统用户反馈情况,如果一切良好,再逐步调大新系统权重,同时降低老系统权重,直到新系统完全替换老系统;如果升级过程中,新系统出现问题,可以随时通过调整权重系数,回退到老系统。整个升级过程,用户无感知,极度丝滑,非常优雅!

也可根据服务器的性能高低,分配访问权重。

三、注意事项

如果gateway配置权重后,没有生效(走的是轮巡),或者有的生效,有的仍然轮巡,最大的原因是sharetek-gateway.yml的路由配置出了问题,或者postman访问路径与路由配置路径不匹配

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

1.错误案例如下(路由配置必须细心)

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

 2.正确打开方式

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

3.如果服务实例挂掉,权重分流会报错

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布

nacos 灰度发布,spring cloud,微服务,gateway,灰度发布文章来源地址https://www.toymoban.com/news/detail-861290.html

到了这里,关于springcloud微服务项目,通过gateway+nacos实现灰度发布(系统不停机升级)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 5.微服务项目实战---Gateway--服务网关,实现统一认证、鉴权、监控、路由转发等

    大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用 这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用。   这样的架构,会存在着诸多的问题: 客户端多次请求不同的微服务,

    2024年02月16日
    浏览(42)
  • 【SpringBoot集成Nacos+Dubbo】企业级项目集成微服务组件,实现RPC远程调用

    在日益增长的业务需求中,一开始使用的是每个项目独立开发,虽然都是前后端分离的项目,但是每一个项目之间互不干扰。后来,因为某种需求,需要几个项目的数据相互交错获取。 最开始的想法就是集成多个数据源。 举例 有A、B、C三个项目,对应着数据库DBa、DBb、DBc、

    2024年02月04日
    浏览(52)
  • 企业级微服务架构实战项目--xx优选3-mq+nacos+es实现上下架

      1.3.1 请求product模块 2.修改数据库,推送rabbitmq中 1.3.2 rabbitmq的工具类  1.3.3 search模块中rabbit客户端订阅信息  1.监听器监听信息  2.调用相应的上下架方法 2.1 调用product模块,返回完整信息 2.2 将信息入到es库中 1.其中注解 @Feginclient(value=xxxx) , xxx为调用模块配置文件中spr

    2024年02月09日
    浏览(40)
  • springcloud gateway实时监听nacos微服务上下线

    Nacos : 1.3.1 SpringCloud : 2021.0.2 SpringCloud gateway : 3.1.2 微服务下线后,网关存在短时间内转发失效服务,导致前端访问异常 微服务上线后,网关没有及时刷新本地缓存的服务,导致前端可能找不到服务实例 nacos的主动推送实例变化比网关自己拉取要及时的多 此处配置注意点: 1、

    2024年02月08日
    浏览(55)
  • 项目示例 - 3.服务网关 - 3.Gateway

    关联知识: 分布式微服务 - 3.服务网关 - 4.Gateway 内容提要: 基本使用 自定义断言 自定义局部、全局过滤器 建Module:微服务起名为gateway-server 改pom:引入以下依赖 写yml:在resources目录下创建application.yml文件,并做以下配置 主启动:在src下创建如下主启动类 测试: 启动nac

    2024年03月14日
    浏览(61)
  • SpringCloud微服务项目快速搭建(SpringCloud Alibaba)

            Spring Cloud Alibaba 是 Spring Cloud 和 Alibaba 面向微服务架构的一站式解决方案,为 Spring Cloud 生态中的各个组件提供了与 Alibaba 中间件的衔接、更方便、更易用的快速开发微服务的能力和支持 Nacos:服务注册和发现、配置中心,提供服务注册和发现、分布式配置等能力

    2024年02月10日
    浏览(40)
  • 39.SpringCloud—配置管理nacos、远程调用Feign、服务网关Gateway

    目录 一、SpringCloud。 (1)Nacos配置管理。 (1.1)nacos中添加配置文件、微服务引入依赖,并配置bootstrap.yml文件。 (1.2)获取配置文件信息,实现热更新。 (1.3)多环境配置共享。 (1.4)多服务共享配置。 (2)http客户端Feign。 (2.1)RestTemplate方式调用存在的问题。 (2.2)

    2024年02月10日
    浏览(68)
  • 实战项目 在线学院springcloud调用篇3(nacos,feging,hystrix,gateway)

    结果:   1.nacos的搭建部署 2.vod,edu项目的注册nacos 3.查看 2.4.1 edu配置 1.controller  2.feginclient  2.4.2 vod配置  2.4.3 测试 2.5.1 配置步骤  1.feginclient 2.降级类 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的

    2024年02月11日
    浏览(32)
  • SpringCloud nacos 集成 gateway ,实现动态路由

    🎈 作者: Linux猿 🎈 简介: CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! 🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬 目录 一、准备工作 1.1 下载代码 1.2 运行代码 二、集成 gateway 2.1 修改 pom.xml 2

    2024年02月16日
    浏览(32)
  • SpringCloud + Gateway(网关) + Nacos(注册中心+配置中心)+ Dubbo(内部服务调用)

    Apache Dubbo是一款微服务开发框架,它提供了 RPC通信 与 微服务治理 两大关键能力 1、协议支持方面 Feign更加优雅简单。Feign是通过REST API实现的远程调用,基于Http传输协议,服务提供者需要对外暴露Http接口供消费者调用,服务粒度是http接口级的。通过短连接的方式进行通信,

    2024年02月06日
    浏览(144)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包