GithubHelp home page GithubHelp logo

apache / servicecomb-docs Goto Github PK

View Code? Open in Web Editor NEW
454.0 27.0 79.0 46.19 MB

Apache servicecomb user documents

Home Page: https://servicecomb.apache.org/

CSS 33.50% Python 53.32% JavaScript 13.18%
servicecomb

servicecomb-docs's Issues

建议从微服务的完整解决方案展开

建议从微服务的完整解决方案展开说明,servicecomb是怎样来提供一个完整解决方案的,在微服务的实践过程中会碰到哪些问题,servicecomb是怎样来解决这些问题的。
这样的话对于我们学习来说就会形成体系,知道该怎样用servicecomb提供的这么多功能,怎样才能学好。

API Constraints For example code error

API Constraints

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);

Add contents to governance

基于流量标记治理使用指南
微服务引擎提供了简单易用的基于流量标记治理能力。可以通过微服务引擎的服务治理功能定义业务特征和治理规则,也可以通过动态配置管理配置项的方式下发治理规则。详细参考微服务引擎的用户指南。下面的章节重点介绍和代码开发有关的部分。

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-governance

DubboDubbo的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项目中的默认实现代码。

Java-Chassis 文档有两处错误

  1. 负载均衡, 实例隔离的continuousFailureThreshold默认值应该是5, 文档写成了2

  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/路径下.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.