微服务引擎 CSE
微服务引擎 CSE
- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- 开发指南
- API参考
- SDK参考
-
常见问题
- 使用华为云CSE注意事项
- Nacos引擎
-
ServiceComb引擎
- 如何进行本地开发和测试?
- 证书加载错误
- 无效头名称
- mesher性能损耗是多少?
- 连接服务中心提示“Version validate failed”
- 连接服务中心提示“Not enough quota”
- 如何处理开启了安全认证的ServiceComb引擎专享版开启IPv6后服务注册失败?
- 服务名重复校验范围是什么?
- 为什么一定要定义服务契约?
- 如何解决微服务应用开发过程中微服务开发框架同netty版本不匹配的问题?
- ServiceComb专享版引擎版本从1.x升级到2.x时有哪些注意事项?
- 用户业务从微服务引擎专业版迁移到微服务引擎专享版checklist
- 创建引擎提示“Duplicate cluster name”
- 创建引擎过程中处理接入地址步骤失败,提示the subnet could not be found
- 本地轻量化注册服务报错:does not match rule: {Max: 100, Regexp: ^[a-zA-Z0-9]{1,160}$|^[a-zA-Z0-9][a-zA-Z0-9_\-.]{0,158}[a-zA-Z0-9]$}"}
- SpringCloud应用连接ServiceComb引擎2.x版本配置中心失败
- 在全局配置中配置相关的配置项修改后,服务获取的配置内容未修改成功
- 获取配置失败
- 视频帮助
- 通用参考
本文导读
展开导读
链接复制成功!
自定义治理
服务治理的默认实现并不一定能够解决业务的所有问题。自定义治理功能可以方便地在不同的场景下使用基于流量的治理能力,比如在网关场景下进行流控,在Java Chassis场景下支持URL匹配等。SDK基于Spring,使用Spring的框架都能够灵活的使用这些API,方法类似。
下面以流控为例,说明如何使用API。使用API开发的自定义代码,也可以通过ServiceComb引擎的管理控制台下发业务和治理规则。
代码的基本过程包括声明RateLimitingHandler的引用,创建GovernanceRequest,拦截(包装)业务逻辑,处理治理异常。
@Autowired private RateLimitingHandler rateLimitingHandler; GovernanceRequest governanceRequest = convert(request); CheckedFunction0<Object> next = pjp::proceed; DecorateCheckedSupplier<Object> dcs = Decorators.ofCheckedSupplier(next); try { SpringCloudInvocationContext.setInvocationContext(); RateLimiter rateLimiter = rateLimitingHandler.getActuator(request); if (rateLimiter != null) { dcs.withRateLimiter(rateLimiter); } return dcs.get(); } catch (Throwable th) { if (th instanceof RequestNotPermitted) { response.setStatus(429); response.getWriter().print("rate limited."); LOGGER.warn("the request is rate limit by policy : {}", th.getMessage()); } else { if (serverRecoverPolicy != null) { return serverRecoverPolicy.apply(th); } throw th; } } finally { SpringCloudInvocationContext.removeInvocationContext(); }
上面简单的介绍了自定义开发。对于更加深入的使用方式,也可以直接参考Java Chassis、Spring Cloud项目中的默认实现代码。
父主题: 使用服务治理