租户特定的弹性配置

问题描述

我们希望为客户提供配置弹性的选项,例如断路器配置。请告知我们是否可以通过某种方式在 Cloud SDK 中提供特定于租户的配置。

解决方法

假设您要为 CloudFoundry 目标服务中配置的目标调用 SAP BusinessPartner service (OData V2),名称为“MyDestination”。

那么您的代码将与 SAP Cloud SDK 类似:

HttpDestination destination = DestinationAccessor.getDestination("MyDestination").asHttp();
BusinessPartnerService service = new DefaultBusinessPartnerService();

List<BusinessPartner> items = service
  .getAllBusinessPartner()
  .top(10)
  .executeRequest(destination);

如果您想将弹性功能应用于 OData 请求,则它看起来像这样:

HttpDestination destination = DestinationAccessor.getDestination("MyDestination").asHttp();
BusinessPartnerService service = new DefaultBusinessPartnerService();

ResilienceConfiguration configuration = ResilienceConfiguration.of("ten-businesspartners");

List<BusinessPartner> items = ResilienceDecorator.executeSupplier(
  () -> service.getAllBusinessPartner().top(10).executeRequest(destination),configuration);

您可以在运行时根据需要自定义 ResilienceConfiguration 的实例,例如断路器的阈值,像这样(使用默认值):

ResilienceConfiguration.of("ten-businesspartners")
    .circuitBreakerConfiguration(ResilienceConfiguration.CircuitBreakerConfiguration.of()
        .waitDuration(Duration.ofSeconds(10))
        .closedBufferSize(10)
        .failureRateThreshold(50)
        .halfOpenBufferSize(5)
    );
,

我们已经尝试了多租户方法来实现弹性。但是对于我们的场景,我们甚至在客户系统(操作系统)中使用弹性方法,在这些系统中,客户要求根据他们的情况提供灵活性来决定诸如 slowCallRate 等参数。我们想知道是否需要将 CircuitBreaker 的配置具体化给客户,以便他们可以根据自己的设置更改某些值,我们该怎么做?

谢谢 萨加尔