云服务器内容精选

  • 使用限制 全链路流量控制依赖应用网关提供微服务访问流量入口,用于通过标签控制流量转发到对应泳道的目标服务组件。 仅绑定了微服务引擎的微服务组件(如果组件技术栈是Docker,需要未开启多容器部署),支持全链路流量控制。关于创建并部署组件,请参考使用容器部署方式基于界面配置创建并部署组件或使用容器部署方式基于YAML配置创建并部署组件。 Kubernetes类型环境纳管的CCE Standard集群的“容器网络模型”必须是“VPC网络”。 使用Spring Cloud Huawei接入方式的微服务组件,依赖的开发框架为spring-cloud-huawei 1.11.5-2021.0.x及以上版本。 使用Sermant接入方式的微服务组件,依赖Sermant Agent 1.3.1.0及以上版本,且不支持Spring Boot 3开发框架。 加入全链路流量控制的组件,将不再支持通过灰度发布方式升级组件。关于灰度发布升级组件,请参考灰度发布方式升级组件版本配置。
  • 使用流程 图2 全链路流量控制使用流程 全链路流量控制的使用流程如图2所示。 创建并部署基线泳道组件 使用ServiceStage创建并部署基线泳道待关联微服务组件,并为所有组件绑定同一个微服务引擎,请参考创建并部署组件。 创建应用网关 应用网关通过标签控制流量转发到对应泳道的目标服务组件,请参考创建应用网关。 绑定目标服务 将1中已接入微服务引擎的组件对应微服务与2创建的应用网关绑定,以便网关获取组件微服务地址,请参考创建服务。 配置路由 为2创建的应用网关配置路由规则,当应用网关收到访问流量时,会根据已配置的路由规则判断是否匹配并做相应的处理,请参考配置路由策略。 创建泳道组 泳道组是一组泳道的集合,用于区分不同的组织或场景,请参考创建泳道组。 创建基线泳道 泳道用于为相同版本组件定义一套隔离环境,只有满足了流控路由规则的请求流量才会路由到对应泳道里的目标服务组件。 基线泳道包括应用中所有组件的基线版本,当微服务调用链中不存在某个组件的时候,会默认访问基线泳道中的组件,请参考创建基线泳道。 关联组件到基线泳道 为6创建的基线泳道关联所有应用组件,请参考关联基线泳道组件。 创建灰度泳道 灰度泳道用于关联应用的灰度版本组件,请参考创建灰度泳道。 调整灰度泳道流量并验证业务 根据实际业务需要修改路由配置,调整流量至灰度泳道并验证业务,请参考编辑路由。 升级基线泳道组件并调整流量 升级基线泳道组件,并根据业务需要调整流量,请参考基线化基线泳道组件。
  • 背景信息 在一个存在多个微服务组件的应用体系中,对其中一个微服务组件进行版本升级发布时,会涉及到其他微服务组件版本的变动升级。所以要求在灰度验证时能够使得灰度流量同时经过涉及到的所有微服务组件灰度版本。如图1所示,由于Microservice-B组件发布新版本涉及到Microservice-C组件的变动,所以在做灰度验证时要求流量能够同时经过Microservice-B、Microservice-C组件的灰度版本。因此,需要额外配置涉及到的Microservice-C组件微服务治理规则,确保流入灰度环境下Microservice-B组件流量能够转发到Microservice-C组件的灰度版本。 图1 全链路流量控制示意图 但是在真实业务场景中,由于业务的微服务组件规模和数量很大,一条请求链路可能会经过很多个微服务组件。新功能发布时也可能会涉及到多个微服务组件同时变更,并且业务的微服务组件之间依赖错综复杂。频繁的组件版本发布、以及组件多版本并行开发导致流量治理规则日益膨胀,给整个系统的可维护性和稳定性带来了严重挑战。 对于以上问题和挑战,业界结合实际业务场景和产业实践经验,提出了一种端到端的灰度发布方案,来进行全链路流量控制,即全链路灰度。全链路流量控制功能将应用组件的相关版本隔离成一个独立的运行环境(即泳道),通过设置流控路由规则,将满足规则的请求流量路由到目标版本应用。
  • 背景信息 在一个存在多个微服务组件的应用体系中,对其中一个微服务组件进行版本升级发布时,会涉及到其他微服务组件版本的变动升级。所以要求在灰度验证时能够使得灰度流量同时经过涉及到的所有微服务组件灰度版本。如图1所示,由于Microservice-B组件发布新版本涉及到Microservice-C组件的变动,所以在做灰度验证时要求流量能够同时经过Microservice-B、Microservice-C组件的灰度版本。因此,需要额外配置涉及到的Microservice-C组件微服务治理规则,确保流入灰度环境下Microservice-B组件流量能够转发到Microservice-C组件的灰度版本。 图1 全链路流量控制示意图 但是在真实业务场景中,由于业务的微服务组件规模和数量很大,一条请求链路可能会经过很多个微服务组件。新功能发布时也可能会涉及到多个微服务组件同时变更,并且业务的微服务组件之间依赖错综复杂。频繁的组件版本发布、以及组件多版本并行开发导致流量治理规则日益膨胀,给整个系统的可维护性和稳定性带来了严重挑战。 对于以上问题和挑战,业界结合实际业务场景和产业实践经验,提出了一种端到端的灰度发布方案,来进行全链路流量控制,即全链路灰度。全链路流量控制功能将应用组件的相关版本隔离成一个独立的运行环境(即泳道),通过设置流控路由规则,将满足规则的请求流量路由到目标版本应用。
  • 使用限制 全链路流量控制依赖应用网关提供微服务访问流量入口,用于通过标签控制流量转发到对应泳道的目标服务组件。 使用Kubernetes类型环境部署且绑定了ServiceComb引擎专享版的微服务组件,支持使用全链路流量控制。关于创建并部署组件,请参考创建并部署组件。 微服务组件依赖的开发框架为spring-cloud-huawei 1.11.5-2021.0.x及以上版本。 加入全链路流量控制的组件,将不再支持通过灰度发布方式升级组件。关于灰度发布升级组件,请参考灰度发布(金丝雀)方式升级。
  • 使用流程 图2 全链路流量控制使用流程 全链路流量控制的使用流程如图2所示。 使用前准备 使用ServiceStage全链路流量控制实现Spring Cloud应用全链路灰度前,需要先准备VPC、CCE、ServiceComb引擎专享版、微服务应用网关等资源,并完成Fork全链路流量控制示例源码到您的GitHub代码库、创建组件部署环境等准备工作,请参考使用ServiceStage全链路流量控制实现Spring Cloud应用全链路灰度前准备。 创建并部署基线版本组件 创建并部署基线版本组件,用于关联到后续操作创建的基线泳道,请参考创建并部署基线版本组件。 绑定目标服务到应用网关 为应用网关绑定目标服务,以便网关获取组件微服务地址,请参考绑定目标服务到应用网关。 配置应用网关路由 为绑定了目标服务的应用网关配置路由规则,当应用网关收到访问流量时,会根据已配置的路由规则判断是否匹配并做相应的处理,请参考配置应用网关路由。 创建泳道组 泳道组是一组泳道的集合,用于区分不同的组织或场景,请参考创建泳道组。 创建基线泳道并关联组件 泳道用于为相同版本组件定义一套隔离环境。只有满足了流控路由规则的请求流量才会路由到对应泳道里的打标签组件。基线泳道包括应用中所有组件的基线版本。当微服务调用链中不存在某个组件的时候,会默认访问基线泳道中的组件,请参考创建基线泳道并关联组件。 创建灰度泳道 灰度泳道用于关联应用的灰度版本组件,请参考创建灰度泳道。 部署灰度版本组件到灰度泳道 灰度泳道创建后,根据实际业务需要创建灰度版本组件,用于调整流量至灰度泳道验证业务,请参考部署灰度版本组件到灰度泳道。 调整灰度泳道流量 根据实际业务需要修改路由配置,调整流量至灰度泳道,请参考调整灰度泳道流量。 验证全链路灰度结果 访问组件实例,验证全链路灰度结果,请参考验证全链路灰度结果。
  • 应用场景 当在公网中调用APIG上公开的业务API时,如果不限制API调用的次数,随着用户的不断增加,会引起后端性能的下降,甚至会因为恶意用户发送的大量请求导致网站或程序崩溃。APIG提供了传统策略:流量控制,从API、用户、凭据、源IP等多个维度进行流控。 然而,随着用户多样性以及需求多样性的增加,传统流控策略无法满足更加精细的流量控制场景。比如针对某一请求参数的流控或者某一租户的流控,APIG在传统流量控制策略的基础上提供了插件策略:流量控制2.0,通过制定更加精细的方案来进行流控。 以下将以流量控制2.0为例,进行实践说明,讲述如何通过创建流量控制2.0策略来应对不同场景的网关限流。
  • 约束与限制 API添加流量控制2.0策略相当于流量控制2.0策略同步绑定了API。同一个环境中,一个API只能被一个流量控制2.0策略绑定,但一个流量控制2.0策略可以绑定多个API。(使用前提是绑定的API已发布。) 如果API未绑定流量控制2.0策略,流控限制值为实例“配置参数”中“ratelimit_api_limits”的参数运行值。 如果一个API绑定传统流量控制策略后,继续绑定流量控制2.0策略,传统流量控制策略会失效。 参数流控的规则最多可定义100个。 策略内容最大长度65535。 如果您的实例不支持流量控制2.0,请联系技术支持。
  • 方案优势 流量控制2.0策略可以限制单位时间内API的被调用次数,支持基础流控、参数流控和基于基础流控的特殊流控。 基础流控:可以对API、用户、凭据、源IP进行多维度流控,与已有的流量控制策略说明功能一致,但配置方式不兼容。 参数流控:支持根据Header、Path、Method、Query以及系统变量中的参数值进行自定义流控。 基于基础流控的特殊流控:对某个租户或凭证进行特定的流控。 支持从用户、凭据和时间段等不同的维度限制对API的调用次数。 支持按天以及按时分秒粒度的流量控制。
  • 操作场景 流量控制可限制单位时间内API的被调用次数,保护后端服务。 为了提供持续稳定的服务,您可以通过创建流控策略,针对部分API进行流量控制。 流控策略和API本身是相互独立的,只有将流控策略绑定API后,流控策略才对绑定的API生效。 同一个环境中,一个API只能被一个流控策略绑定,但一个流控策略可以绑定多个API。 如果API未绑定流控策略,共享版API网关系统默认流控限制为200次/秒。
  • 绑定API 在“流量控制”页面,通过以下任意一种方法,进入“绑定API”页面。 在待绑定的流量控制策略所在行,单击“绑定API”,进入已绑定API列表页面。单击“绑定API”。 单击策略名称,进入策略详情页面。在“绑定的API列表”页签中单击“绑定API”。 选择“API分组”、“环境”以及“API名称”,筛选所需的API。 勾选API,单击“绑定”,完成API绑定策略。 图1 绑定API 在流控策略绑定API后,如果API不需要调用此策略,单击“解除”,解除绑定。如果需要批量解绑API,则勾选待解绑的API,单击“解除”。最多同时解绑1000个API。