应用管理与运维平台 ServiceStage
应用管理与运维平台 ServiceStage
- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 使用前必读
- 权限管理
- 环境管理
- 应用管理
- 组件管理
- 配置管理
- 全链路流量控制
- 发布管理(公测)
- 技术栈管理
- 部署源管理
- 持续交付
- 微服务引擎
- 云审计服务支持的关键操作
- 查看监控指标及告警
- 开发指南
- 最佳实践
- API参考
- SDK参考
- 场景代码示例
-
常见问题
- 应用开发问题咨询指引
- 环境管理
-
应用管理
- 如何查看应用组件部署失败的原因?
- 如何解决单击应用组件外部访问地址返回504的问题?
- 如何处理虚拟机类型环境下应用创建实例失败?
- 实例长期处于创建中怎么办?
- 如何解决Docker运行node应用程序时的依赖问题?
- 如何定制Tomcat Context path?
- 如何固定应用组件IP?
- 如何处理虚拟机类型环境下创建和部署组件时遇到ECS错误?
- 如何处理虚拟机类型环境下创建和部署组件时端口访问不通的错误?
- 虚拟机类型环境下部署的应用组件支持在什么目录写文件?
- 如何处理虚拟机类型环境下部署的组件删除失败报host status is not active错误的问题?
- 如何体验ServiceStage的源码部署功能?
- 如何处理使用ServiceStage灰度发布升级组件失败?
- 如何通过挂载配置项方式修改容器部署的组件配置文件?
- 如何处理应用组件接入微服务引擎后在微服务治理下看到的应用名称和ServiceStage应用管理下的不同?
- 持续交付
- 软件中心
- 基础设施
- 应用运维
- 应用开发问题
- 视频帮助
- 文档下载
- 通用参考
本文导读
展开导读
链接复制成功!
流量标记
- Java Chassis通过Handler实现了基于流量标记治理能力。其中Provider实现了限流、熔断和隔离仓,Consumer实现了重试。
- 使用流量标记治理能力,首先需要在代码中引入依赖:
<dependency> <groupId>org.apache.servicecomb</groupId> <artifactId>handler-governance</artifactId> </dependency>
- 然后配置Handler链:
servicecomb: handler: chain: Consumer: default: governance-consumer,loadbalance Provider: default: governance-provider
Java Chassis是基于Open API的REST/RPC框架,在模型上和单纯的REST框架存在差异。Java Chassis提供两种模式匹配规则,第一种是基于REST的,第二种是基于RPC的。可以通过配置项:servicecomb.governance.{operation}.matchType指定匹配规则,默认使用REST。如果使用Java Chassis中的highway协议调用,需要指定matchType类型为rpc。比如:servicecomb: governance: matchType: rest # 设置全局默认是rest匹配模式,highway协议设置为rpc GovernanceEndpoint.helloRpc: matchType: rpc # 设置服务端的接口helloRpc采用RPC匹配模式
在REST匹配模式下, apiPath使用url, 比如:
servicecomb: matchGroup: userLoginAction: | matches: - apiPath: exact: "/user/login"
在RPC匹配模式下,apiPath使用operation,比如:
servicecomb: matchGroup: userLoginAction: | matches: - apiPath: exact: "UserSchema.login"
对于服务端治理,比如限流,REST模式下从HTTP取header;对于客户端治理,比如重试,REST模式下从InvocationContext取header。
不同治理策略配置示例及在POM中添加依赖如下介绍。
一个流量对应一个Key,userLoginAction为Key的名称。 一个流量可以定义多个标记规则,每个标记规则里面可以定义apiPath,method,headers匹配规则。 不同标记规则是或的关系,匹配规则是与的关系。
在match中提供了一系列的算子来对apiPath或者headers进行匹配:
- exact : 精确匹配。
- prefix: 前缀匹配。
- suffix: 后缀匹配。
- contains: 包含, 目标字符串是否包含模式字符串。
- compare: 比较,支持>、<、>=、<=、=、!=符号匹配。处理时会把模式字符串和目标字符串转化为Double类型进行比较,支持的数据范围为Double的数据范围。在进行=和!=判断时,如果二者的差值小于1e-6就视为相等。例如模式串为>-10,会对大于-10以上的目标串匹配成功。
流量标记可以在不同的应用层实现,比如:在提供REST接口的服务端,可以通过HttpServletRequest获取流量信息;在RestTemplate调用的客户端,可以从RestTemplate获取流量信息。
不同的框架和应用层,提取信息的方式不一样。实现层通过将特征映射到GovernanceRequest来屏蔽差异。使得在不同的框架、不同的应用层都可以使用治理。
public class GovernanceRequest { private Map<String, String> headers; private String uri; private String method;}
- 使用流量标记治理能力,首先需要在代码中引入依赖:
- Spring Cloud通过Aspect拦截RequestMappingHandlerAdapter实现了限流、熔断和隔离仓,通过拦截RestTemplate和FeignClient实现了重试。
<dependency> <groupId>com.huaweicloud</groupId> <artifactId>spring-cloud-starter-huawei-governance</artifactId> </dependency>
Spring Cloud是基于REST的框架,能比较好的符合流量特征治理的匹配语义,apiPath和headers分别对应HTTP协议的概念:
servicecomb: matchGroup: userLoginAction: | matches: - apiPath: exact: "/user/login" method: - POST headers: Authentication: prefix: Basic
父主题: 使用服务治理