This project hosts ServiceComb documents, please check individual sub folders for details.
本项目是ServiceComb各个组件的开发文档源码,请查看各个子目录获取详细的说明。
Apache servicecomb user documents
Home Page: https://servicecomb.apache.org/
负载均衡, 实例隔离的continuousFailureThreshold
默认值应该是5
, 文档写成了2
处理链介绍, cse.handler.xml配置文件介绍位置, 原文写的是"增加*.handler.xml文件", 但是 Java-Chassis 源码中加载代码如下:
List<Resource> resList =
PaaSResourceUtils.getSortedResources("classpath*:config/cse.handler.xml", ".handler.xml");
业务反馈只有 cse.handler.xml 文件才能生效, 其他的 *.handler.xml 文件名是不行的. 建议文档明确写成 "cse.handler.xml", 并说明必须放在classpath*:config/
路径下.
public Person query(String id);
public Object query(String id);
public class Person {String name;}
it's should be
public Person query(String id);
public Object query(String id);
public Person query(String name);
```
servicecomb:
metrics:
prometheus:
address: 9696
```
此处的address应该为完整的ip+port, 不然会报create http public server failed, bad address : " +address的异常
建议从微服务的完整解决方案展开说明,servicecomb是怎样来提供一个完整解决方案的,在微服务的实践过程中会碰到哪些问题,servicecomb是怎样来解决这些问题的。
这样的话对于我们学习来说就会形成体系,知道该怎样用servicecomb提供的这么多功能,怎样才能学好。
基于流量标记治理使用指南
微服务引擎提供了简单易用的基于流量标记治理能力。可以通过微服务引擎的服务治理功能定义业务特征和治理规则,也可以通过动态配置管理配置项的方式下发治理规则。详细参考微服务引擎的用户指南。下面的章节重点介绍和代码开发有关的部分。
Java ChassisJava Chassis 通过 Handler 实现了基于流量标记治理能力。其中 Provider 实现了限流、熔断和隔离仓,Consumer 实现了重试。使用流量标记治理能力,首先需要在代码中引入依赖:
org.apache.servicecomb handler-governance然后配置 Handler 链
servicecomb:
handler:
chain:
Consumer:
default: governance-consumer,loadbalance
Provider:
default: governance-provider
Spring CloudSpring Cloud通过Aspect拦截RequestMappingHandlerAdater实现了限流、熔断和隔离仓,通过拦截RestTemplate和FeignClient实现了重试。使用流量标记治理能力,首先需要在代码中引入依赖:
com.huaweicloud spring-cloud-starter-huawei-governanceDubboDubbo的Provider通过Filter拦截请求实现了限流、熔断和隔离仓,通过拦截ClusterInvoker实现了重试。使用流量标记治理能力,首先需要在代码中引入依赖:
com.huaweicloud.dubbo-servicecomb dubbo-servicecomb-governance-center ${project.version}如果要使用重试,需要修改dubbo的Spring配置文件,将dubbo默认的ClusterInvoker修改为dubbo-servicecomb:
<dubbo:consumer cluster="dubbo-servicecomb"></dubbo:consumer>
自定义服务治理的默认实现并不一定能够解决业务的所有问题。自定义治理功能可以方便的在不同的场景下使用基于流量的治理能力,比如在网关场景下进行流控。SDK基于Spring,使用Spring的框架都能够灵活的使用这些API,方法类似。下面以流控为例,说明如何使用API。 使用API开发的自定义代码,也可以通过微服务引擎的管理控制台下发业务和治理规则。
代码的基本过程是声明RateLimitingHandler的引用,创建GovernanceRequest,拦截(包装)业务逻辑。
@Autowired
private RateLimitingHandler rateLimitingHandler;
GovernanceRequest governanceRequest = convert(request);
CheckedFunction0 next = pjp::proceed;
DecorateCheckedSupplier 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、Dubbo项目中的默认实现代码。
https://servicecomb.apache.org/references/java-chassis/zh_CN/general-development/metrics.html
应该是下面的是Provider
文档链接: https://servicecomb.apache.org/references/java-chassis/2.x/zh_CN/general-development/reactive.html
里面对于同步模式下 HttpClientFilter.beforeSendRequest
的执行线程的描述都需要更新, 现在是跑在Eventloop线程里了.
本章节的内容已过时,新的负载均衡策略说明见负载均衡
连接无法访问。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.