开发者社区 > 云原生 > 微服务 > 正文

请教下,MSE微服务引擎有服务跟服务之间流量灰度的完整的解决方案吗?

请教下,MSE微服务引擎有服务跟服务之间流量灰度的完整的解决方案吗?

展开
收起
cuicuicuic 2023-09-17 19:59:22 313 0
13 条回答
写回答
取消 提交回答
  • MSE微服务引擎可以通过以下方式实现服务之间的流量灰度发布:

    1. 使用微服务网关
      在网关层定义不同版本的路由规则,通过配置forwarding或routing来分流到不同版本服务。
    2. 使用Nacos的namespace
      不同namespace注册不同版本服务,网关通过namespace分流。
    3. 使用Nacos的实例元数据
      服务实例使用元数据标识版本,网关通过元数据路由到不同版本。
    4. 使用Nacos的子集群
      不同子集群注册不同版本服务实例,网关通过子集群分流。
    5. 使用Dubbo的版本路由规则
      Dubbo消费端指定版本号,进行版本控制。
    6. 使用应用性能管理(APM)
      通过APM的流量调度功能,配置流量分配策略。
      综合来说,微服务网关+Nacos元数据/子集群+APM流量调度可以实现完整的灰度发布方案。需要结合自身业务设计最佳的流量分配和路由策略。其他组件如Dubbo也可以配合使用。希望这些建议可以提供思路。
    2023-10-25 17:25:06
    赞同 展开评论 打赏
  • 微服务体系架构中,服务之间的依赖关系错综复杂,有时某个功能发版依赖多个服务同时升级上线。我们希望可以对这些服务的新版本同时进行小流量灰度验证,这就是微服务架构中特有的全链路灰度场景,通过构建从网关到整个后端服务的环境隔离来对多个不同版本的服务进行灰度验证。

    在发布过程中,我们只需部署服务的灰度版本,流量在调用链路上流转时,由流经的网关、各个中间件以及各个微服务来识别灰度流量,并动态转发至对应服务的灰度版本。如下图:
    image.png
    上图可以很好展示这种方案的效果,我们用不同的颜色来表示不同版本的灰度流量,可以看出无论是微服务网关还是微服务本身都需要识别流量,根据治理规则做出动态决策。当服务版本发生变化时,这个调用链路的转发也会实时改变。相比于利用机器搭建的灰度环境,这种方案不仅可以节省大量的机器成本和运维人力,而且可以帮助开发者实时快速的对线上流量进行精细化的全链路控制。

    使用 Shenyu 网关,实现全链路灰度
    image.png

    ——参考MSE 支持 Apache Shenyu 网关实现全链路灰度

    2023-10-23 02:25:27
    赞同 展开评论 打赏
  • 是的,MSE微服务引擎提供了完整的服务之间流量灰度发布的解决方案。以下是一些关键特性和步骤:

    特性支持:MSE支持服务级别和API级别的流量灰度发布,可以根据需要选择不同的粒度来进行流量控制。

    灰度发布策略:可以基于条件,如百分比、用户ID、请求头中的标志等,来控制流量的分发。

    蓝绿部署:可以同时启动两个版本的服务,一个为生产版本(蓝色),另一个为新版本(绿色),并根据预设的规则逐渐将流量从蓝色版本切换到绿色版本。

    A/B测试:可以将流量按照比例分发到不同版本的服务中,进行A/B测试,收集实时指标和反馈。

    动态调整和回滚:可以动态调整流量分发策略,以及在灰度发布期间监控和管理服务的性能和稳定性,并在需要时回滚到先前的版本。

    这些特性和步骤可以帮助开发团队实现更可控和安全的流量灰度发布,以最小化潜在的影响并提高系统的可靠性和稳定性。
    image.png

    2023-10-17 21:24:55
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    MSE 微服务引擎提供了服务之间流量灰度的完整解决方案。在 MSE 中,可以通过以下几种方式实现服务之间的流量灰度:

    1. 流量控制:MSE 提供了丰富的流量控制能力,包括限流、熔断、降级等。这些功能可以针对特定的服务或服务组进行配置,从而实现流量控制和灰度。
    2. 路由策略:MSE 支持灵活的路由策略,可以根据不同的条件进行服务之间的流量分发。例如,可以基于请求的参数、HTTP 状态码、服务名称等因素来选择不同的服务版本或服务实例。
    3. 服务版本管理:MSE 支持服务版本管理,可以针对不同的服务版本进行流量灰度。通过配置不同的版本权重,可以实现服务流量的动态分配。
    4. 动态配置:MSE 提供了动态配置功能,可以根据实时的环境变化或业务需求,动态调整流量灰度策略。例如,可以在运行时修改限流规则、路由策略等配置。
    2023-10-17 21:22:52
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    在发布过程中,只需部署服务的灰度版本。流量在调用链路上流转时,由流经的网关、各个中间件以及各个微服务来识别灰度流量,并动态转发至对应服务的灰度版本。如下图所示,用不同的颜色来表示不同版本的灰度流量,可以看出无论是微服务网关还是微服务本身都需要识别流量,根据治理规则做出动态决策。当服务版本发生变化时,这个调用链路的转发也会实时改变。相比于利用机器搭建的灰度环境,不仅可以节省大量的机器成本和运维人力,而且可以帮助开发者实时快速的对线上流量进行精细化的全链路控制。
    image.png

    2023-10-17 16:59:37
    赞同 展开评论 打赏
  • MSE微服务引擎提供了服务之间流量灰度发布的解决方案。下面是一个完整的解决方案的概述:

    路由策略:MSE允许你在微服务网关层配置路由策略,以便将特定的流量导向到不同版本的服务。你可以根据请求的路径、标头、查询参数等定义路由规则,以便将流量导向到指定的服务版本。

    流量分发:MSE支持基于权重的流量分发,你可以配置不同服务版本之间的权重比例。例如,你可以将10%的流量分发到新版本的服务,而将90%的流量保留在旧版本上。

    灰度发布策略:通过MSE的路由策略和流量分发功能,你可以实施不同的灰度发布策略。例如,你可以将流量逐渐从旧版本迁移到新版本,或者将指定的用户或IP范围定向到新版本。

    监控和指标:MSE提供了监控和指标的功能,以便你可以实时监控流量灰度发布的效果。你可以收集和分析关于请求量、错误率、延迟等方面的数据,以帮助评估和优化你的流量灰度发布策略。

    MSE提供了服务之间流量灰度发布的解决方案,通过灵活的路由策略、流量分发和监控功能,你可以实施和管理流量灰度发布,以确保平滑的版本迁移和最小化对系统的影响。

    2023-10-16 17:58:29
    赞同 展开评论 打赏
  • 是的,MSE 微服务引擎提供了完整的解决方案来支持服务与服务之间的流量灰度发布。灰度发布是一种逐步将新版本功能引入生产环境的策略,以减少风险并确保系统稳定性。

    下面是 MSE 微服务引擎中实现服务之间流量灰度的常用方式和功能:

    1. 路由规则:MSE 的网关组件允许您根据自定义的路由规则来控制请求的转发。您可以根据不同的条件(例如请求路径、请求头、标签等)将请求导向不同版本的服务。这样就可以实现针对特定用户或一部分流量进行版本切换和流量控制。

    2. 服务注册与发现:MSE 支持集成各种服务注册与发现组件,例如 Consul、Eureka 和 Nacos。通过使用注册中心,您可以将不同版本的服务注册到不同的实例,并在配置管理中心动态更改服务的元数据,从而控制流量的路由。

    3. 分布式追踪:MSE 集成了分布式追踪工具(如 Zipkin 或 Jaeger),可用于跟踪请求在微服务体系结构中的流动情况。通过追踪和监控,您可以获得对流量灰度发布的实时可视化和分析,帮助您确定是否成功进行了灰度测试。

    4. 监控与告警:MSE 提供了监控和告警机制,可以实时监测服务的性能指标、错误率等。通过设置合适的阈值和告警策略,您可以在流量灰度发布过程中及时发现问题并采取相应的措施。

    请注意,具体的流量灰度发布方案会因公司要求、项目复杂度和技术栈而有所不同。MSE 微服务引擎作为基础架构工具,提供了一些核心功能来支持流量灰度发布,但您仍然需要根据自己的具体情况进行配置和集成。

    2023-10-15 15:37:39
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    是的,MSE微服务引擎有服务跟服务之间流量灰度的完整的解决方案。MSE提供了数据隔离方案,可以通过MSE提供的数据隔离方案,您可以在不需要修改任何业务代码的情况下,实现数据库层面全链路灰度。此外,MSE微服务引擎还提供了流量控制和流量调度功能,可以通过流量控制和流量调度功能,实现服务之间的流量灰度。image.png

    2023-10-15 14:58:38
    赞同 展开评论 打赏
  • 微信截图_20231014194645.pngMSE微服务引擎提供了服务跟服务之间流量灰度的解决方案。根据你的需求,可以通过动态代理的通用研发提效解决方案实现灰度发布流量控制,以及在灰度消费者中开启read_until_end选项和使用at_least_once分发策略来避免灰度消息丢失
    微信截图_20231014194645.png

    2023-10-14 20:14:40
    赞同 展开评论 打赏
  • MSE微服务引擎有基于动态代理的通用研发提效解决方案,可以通过MSE提供的数据隔离方案,实现数据库层面全链路灰度。可以实现服务跟服务之间流量灰度。微信截图_20231014194645.png
    很多微服务框架提供了负载均衡、服务发现和路由的功能,这些功能可以用来实现流量灰度发布。微信图片_20230906121018.png

    2023-10-14 19:53:06
    赞同 展开评论 打赏
  • MSE微服务引擎有服务跟服务之间流量灰度的完整解决方案。MSE微服务引擎提供了灰度发布、灰度流量控制、灰度参数切换等功能,可以帮助您实现服务之间的流量灰度。image.png
    image.png
    image.png

    2023-10-13 14:16:48
    赞同 展开评论 打赏
  • 一般来说,微服务框架通常支持流量灰度发布,以便于实现逐步发布和验证新版本的功能。

    服务间流量灰度发布是一种渐进式发布新功能或版本的方式,通过控制流量的比例或选择性地将流量导入新版本,以确保新版本的稳定性和可用性。很多微服务框架提供了负载均衡、服务发现和路由的功能,这些功能可以用来实现流量灰度发布。

    需要注意的是,具体的流量灰度发布实现可能会根据不同的微服务框架而有所不同,因此建议参考官方文档或者相关的文档和资料来了解MSE微服务引擎的具体功能和解决方案。
    https://help.aliyun.com/zh/mse/user-guide/full-link-gray-observable-problem-troubleshooting?spm=a2c6h.13066369.question.7.332245d5rWGc2n
    微信截图_20231003201440.png

    2023-10-12 21:57:57
    赞同 展开评论 打赏
  • 有,全链路灰度可观测问题排查https://help.aliyun.com/zh/mse/user-guide/full-link-gray-observable-problem-troubleshooting?spm=a2c4g.11186623.0.i52

    背景信息
    您在使用全链路灰度时,可能遇到流量不符合预期的场景,常见的问题如下所示。

    在某一链路,例如A→B→C,调用B的流量本应流向Bgray节点,却流向了base节点。

    在整个链路上,某个流量应该都流向gray节点,但是都流向了base节点(zuul→Abase→Bbase→Cbase)。原因如下所示:

    Agent没有生效。

    流量打标错误,流量打标没有透传。

    4a341d6989ce0e5d6e7f8b693f4004aa_p609379.png

    步骤一:开启全链路灰度可观测
    登录MSE治理中心控制台,并在顶部菜单栏选择地域。

    在左侧导航栏,选择治理中心 > 全链路灰度。

    在泳道组区域,单击2023-03-24_10-57-12图标,然后在编辑泳道组页面,打开采集请求详情开关。

    cd85d07473fc5b6696d7cc0ca131a838_p609402.png

    步骤二:流量筛选
    根据不符合预期的流量特征,找到对应的流量以及trace。

    登录MSE治理中心控制台,并在顶部菜单栏选择地域。

    在左侧导航栏,选择治理中心 > 全链路灰度。

    在全链路灰度页面,单击查看流量详情,然后单击请求详情。

    支持的筛选项如下所示。

    时间:最近N分钟、固定时间段。

    泳道应用:流量经过的应用。

    流量标签:为流量添加的标签。

    节点标签:流量经过的节点标签。

    请求接口:流量经过时流向的接口。

    a64ba6ebe9acdc4499851125cd562a90_p609535.png

    2023-10-11 16:26:48
    赞同 展开评论 打赏
滑动查看更多

为微服务建设降本增效,为微服务落地保驾护航。

相关产品

  • 微服务引擎
  • 相关电子书

    更多
    《MSE 微服务网关》 立即下载
    微服务引擎 MSE 治理中心重磅发布 立即下载
    阿里云微服务引擎 MSE 2.0 线上发布 立即下载