Spring cloud 假装客户端并发问题
我已经安装了Spring cloud 假装客户端并发问题,spring-cloud,netflix-eureka,hystrix,spring-cloud-feign,feign,Spring Cloud,Netflix Eureka,Hystrix,Spring Cloud Feign,Feign,我已经安装了springcloud(Camden.SR7)和Eureka(1.3.5.RELEASE),Config server以及一些springboot(1.5.7.RELEASE)微服务。微服务之间的通信通过Feign客户端执行(Hystrix被禁用)。虽然这在开发过程中可以正常工作,但我注意到,在高流量情况下,当同一微服务之间同时发出多个调用时,线程会死锁,并且不会收到响应。这似乎表明,在多线程中,伪客户机的行为不正确 我目前使用的是信号量隔离策略。我还尝试将隔离策略更改为THREAD
springcloud(Camden.SR7)
和Eureka(1.3.5.RELEASE)
,Config server
以及一些springboot(1.5.7.RELEASE)
微服务。微服务之间的通信通过Feign
客户端执行(Hystrix
被禁用)。虽然这在开发过程中可以正常工作,但我注意到,在高流量情况下,当同一微服务之间同时发出多个调用时,线程会死锁,并且不会收到响应。这似乎表明,在多线程中,伪客户机的行为不正确
我目前使用的是信号量
隔离策略。我还尝试将隔离策略更改为THREAD
,并指定线程池,但在本例中,我的所有调用都出现403错误。我还尝试了使用feign-httpclient
作为替代方案,尽管这似乎改善了情况,但它需要硬编码URL,而不是从Eureka
检索URL,因此我没有继续使用此解决方案
有没有办法解决这个问题?我的代码如下
bootstrap.yml:
hystrix:
command:
default:
execution:
isolation:
strategy: SEMAPHORE
semaphore:
maxConcurrentRequests: 100000 # basically 'unlimited'
timeout:
enabled: false
circuitBreaker:
enabled: false
fallback:
enabled: false
ribbon:
ConnectTimeout: 180000
ReadTimeout: 180000
假装客户端配置:
@Configuration
public class FeignClientConfiguration {
@Bean
public Retryer retryer() {
return new Retryer() {
@Override
public void continueOrPropagate(RetryableException e) {
throw e;
}
@Override
public Retryer clone() {
return this;
}
};
}
@Bean
public RequestInterceptor requestTokenBearerInterceptor() {
return requestTemplate -> {
requestTemplate.header("Authorization",JWTUtil.getAuthorizationToken());
};
}
假装客户:
@FeignClient(name = "audit-log-service", configuration = FeignClientConfiguration.class)
public interface AuditLogFeignClient {
@RequestMapping("/audit-log-ms/audit/save")
void saveEntityToDatabase(@RequestBody Object object);
}
您可以在yml配置文件中添加属性sharedSecurityContext:true。 当您使用隔离策略
thread
。
请参阅。谢谢,这似乎有效。通过添加此属性,我不再使用线程策略获得403错误,这似乎解决了并发性问题。