标签: spring-cloud-netflix

How to disable Eureka and Spring Cloud Config in a WebMvcTest?

I play with a simple Spring Boot application which registers itself in Eureka and uses spring cloud configuration to read some properties.

Here it goes:

@SpringBootApplication
@EnableEurekaClient
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

In bootstrap.yml I have:

eureka:
    client:
        serviceUrl:
            defaultZone: http://registry-service:5051/eureka/

spring:
    application:
        name: product-service
    cloud:
        config:
            discovery:
                serviceId: config-service
                enabled: true
            fail-fast: true
            retry:
                initial-interval: 2000
Run Code Online (Sandbox Code Playgroud)

I have a rest controller for which I want to write a …

spring-test spring-boot spring-cloud-netflix spring-cloud-config

13
推荐指数
2
解决办法
1万
查看次数

如何消除 Eureka Dashboard 上的“Eureka 可能错误地声称实例已启动,但当它们未启动时”警告?

如何消除尤里卡服务器仪表板上的以下消息?它会不会对我的服务造成任何问题?

紧急情况!EUREKA 可能不正确地声称实例已启动,但实际上并非如此。续订少于阈值,因此实例不会仅仅为了安全而过期。

尤里卡仪表板

谢谢。

java spring spring-cloud netflix-eureka spring-cloud-netflix

13
推荐指数
2
解决办法
1万
查看次数

Spring Cloud Zuul不转发cookie

我正面临着春云Zuul代理的问题.我配置,启动和运行两个微服务.我在我的网络浏览器中有一个cookie,我使用Zuul作为API网关,当我点击Zuul来调用我的后端时,Zuul没有将我的cookie转发到我的后端,似乎Zuul忽略了发送的cookie而我的后端是无法检索这个.

你能帮我解决这个问题吗?我正在使用Spring云Brixton.RELEASE和spring boot 1.3.5

问候.

cookies spring-boot netflix-zuul spring-cloud-netflix

11
推荐指数
2
解决办法
8760
查看次数

如何使Spring Zuul High可用?

我想使用Zuul作为我正在使用的一些REST服务的代理.我的问题是:因为我将它作为Spring Boot应用程序运行,有没有办法为高可用性配置它?

编辑:我是否需要在支持HA的应用服务器中部署我的应用程序?

spring spring-boot spring-cloud netflix-zuul spring-cloud-netflix

11
推荐指数
1
解决办法
2313
查看次数

如何通过假装客户端使用基本身份验证保护的Restful Web服务

感谢您的时间.为简单起见,我创建了一个示例服务,如下所示:

@RestController
@RequestMapping("/")
public class ComputeController {

    @GetMapping("/add")
    public int add(@RequestParam("left") int left, @RequestParam("right") int right) {
        return left + right;
    }
}
Run Code Online (Sandbox Code Playgroud)

为了保护这个URL,我像这样配置spring-security:

management.security.enabled=true
security.user.name=admin
security.user.password=admin
Run Code Online (Sandbox Code Playgroud)

当我启动此服务并访问如下:

GET /add?left=100&right=11 HTTP/1.1
Authorization: ***** Hidden credentials *****
Host: localhost:7777
Connection: close
Run Code Online (Sandbox Code Playgroud)

这一切都很顺利.

在其他节点中,我通过netflix feign创建了一个"service-comsumer".这是一个Java接口.

@FeignClient(name = "API-GATEWAY", path = "/compute-service", fallback = ComputeServiceCircuitBreaker.class)
public interface ComputeServiceClient {

    @RequestMapping(path = "/add", method = RequestMethod.GET)
    public Integer add(@RequestParam("left") Integer left, @RequestParam("right") Integer right);
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何配置请求标题"授权".

任何的想法?再次感谢.

spring-security spring-cloud spring-cloud-netflix

11
推荐指数
2
解决办法
1万
查看次数

列出最终的属性列表 - Spring Cloud Config Server

当我访问应用程序的/ env端点时,Spring Cloud Config Server接受多个配置文件并返回所有配置文件的属性.响应列出了特定于每个配置文件的属性.如果2个不同的属性文件中存在相同的属性,则最后定义的属性优先.有没有办法获得应用程序将使用的属性键和值的最终列表?

spring-boot spring-cloud-netflix spring-cloud-config

11
推荐指数
2
解决办法
5484
查看次数

在PWS上使用Spring Cloud/Netflix堆栈进行蓝/绿部署的规范方法是什么?

我正在尝试一个与图像中详细描述的设置非常相似的设置:https://raw.githubusercontent.com/Oreste-Luci/netflix-oss-example/master/netflix-oss-example.png

在此输入图像描述

在我的设置中,我使用的是客户端应用程序(https://www.joedog.org/siege-home/),代理(Zuul),发现服务(Eureka)和简单的微服务.一切都部署在PWS上.

我想从我的简单微服务的一个版本迁移到下一个版本,没有任何停机时间.最初我开始使用这里描述的技术:https://docs.cloudfoundry.org/devguide/deploy-apps/blue-green.html

在我看来,这种方法与Eureka等发现服务并不"兼容".实际上,我的服务的新版本在Eureka中注册并且甚至在我可以重新映射所有路由(CF路由器)之前接收流量.

这引出了另一种方法,我依赖于Spring Cloud/Netflix中的故障转移机制:

  1. 我启动了一个新的(向后兼容)版本的服务.
  2. 当这个版本被Zuul/Eureka选中时,它开始获得50%的流量.
  3. 一旦我确认新版本正常工作,我就会删除"旧"实例.(我只需点击PWS中的"停止"按钮)

据我所知,Zuul在引擎盖下使用了Ribbon(负载均衡),所以在旧实例仍然在Eureka但实际上关闭的那一瞬间,我期望在新实例上重试而不会对客户端产生任何影响.

但是,我的假设是错误的.我的客户端出现了几个502错误:

Lifting the server siege...      done.

Transactions:               5305 hits
Availability:              99.96 %
Elapsed time:              59.61 secs
Data transferred:          26.06 MB
Response time:              0.17 secs
Transaction rate:          89.00 trans/sec
Throughput:             0.44 MB/sec
Concurrency:               14.96
Successful transactions:        5305
Failed transactions:               2
Longest transaction:            3.17
Shortest transaction:           0.14
Run Code Online (Sandbox Code Playgroud)

我的application.yml的一部分

server:
  port: ${PORT:8765}

info:
  component: proxy

ribbon:
  MaxAutoRetries: 2   # Max number of retries …
Run Code Online (Sandbox Code Playgroud)

blue-green-deployment spring-cloud pivotal-cloud-foundry spring-cloud-netflix

10
推荐指数
1
解决办法
2951
查看次数

Spring环境下,我在新项目中还应该使用Hystrix吗?

看来Hystrix 的生命周期已接近尾声,而 Netflix 堆栈现在已经有点过时了。

我们正在为一个全新的项目构建一个堆栈,我们需要一个断路器,我们的默认选择是 Hystrix,因为它是众所周知的并且受到团队的赞赏。

如今Hystrix已完全集成到Spring Cloud中,是否有计划很快将其删除?

spring spring-boot hystrix spring-cloud-netflix

10
推荐指数
3
解决办法
9995
查看次数

Zuul/Ribbon/Hystrix没有在不同的实例上重试

背景

我正在使用Spring云Brixton.RC2,与Zuul和Eureka一起使用.

我有一个网关服务@EnableZuulProxybook-service一个status方法.通过配置,我可以status通过休眠一段规定的时间来模拟方法的工作.

Zuul路线很简单

zuul.routes.foos.path=/foos/**
zuul.routes.foos.serviceId=reservation-service
Run Code Online (Sandbox Code Playgroud)

我运行了两个实例book-service.当我将休眠时间设置为低于Hystrix超时阈值(1000毫秒)时,我可以看到请求同时发送到图书服务的两个实例.这很好用.

问题

据我所知,如果Hystrix命令失败,Ribbon应该可以在另一台服务器上重试该命令.这应该使故障对客户端透明.

我阅读了Ribbon配置并在Zuul中添加了以下配置:

zuul.routes.reservation-service.retryable=true //not sure which one to try
zuul.routes.foos.retryable=true //not sure which one to try

ribbon.MaxAutoRetries=0 // I don't want to retry on the same host, I also tried with 1 it doesn't work either
ribbon.MaxAutoRetriesNextServer=2
ribbon.OkToRetryOnAllOperations=true
Run Code Online (Sandbox Code Playgroud)

现在我更新配置,以便只有一个服务睡眠时间超过1秒,这意味着我有一个健康服务,一个健康服务.

当我调用网关时,调用会发送到两个实例,一半调用返回500.在网关中,我看到Hystrix超时:

com.netflix.zuul.exception.ZuulException: Forwarding error
    [...]
Caused by: com.netflix.hystrix.exception.HystrixRuntimeException: reservation-service timed-out and no fallback available.
    [...]
Caused by: java.util.concurrent.TimeoutException: null
Run Code Online (Sandbox Code Playgroud)

为什么Ribbon不会在另一个实例上重试调用?

我在这里想念什么吗?


参考

  • 与此 …

hystrix spring-cloud netflix-zuul netflix-ribbon spring-cloud-netflix

9
推荐指数
1
解决办法
3278
查看次数

带有webclient的功能区负载均衡器与其余模板不同(未正确平衡)

我试过WebClientLoadBalancerExchangeFilterFunction:

WebClient 配置:

@Bean
public WebClient myWebClient(final LoadBalancerExchangeFilterFunction lbFunction) {
    return WebClient.builder()
            .filter(lbFunction)
            .defaultHeader(ACCEPT, APPLICATION_JSON_VALUE)
            .defaultHeader(CONTENT_ENCODING, APPLICATION_JSON_VALUE)
            .build();
} 
Run Code Online (Sandbox Code Playgroud)

然后我注意到对底层服务的调用没有正确地进行负载平衡 - 每个实例上的RPS存在恒定的差异.

然后我试着回去RestTemplate.它工作正常.

配置RestTemplate:

private static final int CONNECT_TIMEOUT_MILLIS = 18 * DateTimeConstants.MILLIS_PER_SECOND;
private static final int READ_TIMEOUT_MILLIS = 18 * DateTimeConstants.MILLIS_PER_SECOND;

@LoadBalanced
@Bean
public RestTemplate restTemplateSearch(final RestTemplateBuilder restTemplateBuilder) {
    return restTemplateBuilder
            .errorHandler(errorHandlerSearch())
            .requestFactory(this::bufferedClientHttpRequestFactory)
            .build();
}

private ClientHttpRequestFactory bufferedClientHttpRequestFactory() {
    final SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
    requestFactory.setConnectTimeout(CONNECT_TIMEOUT_MILLIS);
    requestFactory.setReadTimeout(READ_TIMEOUT_MILLIS);
    return new BufferingClientHttpRequestFactory(requestFactory);
} …
Run Code Online (Sandbox Code Playgroud)

load-balancing resttemplate spring-cloud spring-cloud-netflix spring-webflux

9
推荐指数
1
解决办法
1264
查看次数