标签: spring-cloud

当应该进行故障转移时,ZuulProxy失败并显示"RibbonCommand超时且无可用后备"

简短说明: 我正在尝试使用ZuulProxy来处理实例故障转移但它抛出ZuulException:转发错误,而不是使用工作实例的结果进行响应.

详细说明: 我的设置是一个独立的Eureka服务器,一个ConfigServer,一个ZuulProxy(@EnableZuulProxy)和两个服务实例,所有这些都在Eureka注册.

一切都在运行spring-cloud-starter-parent Angel.SR3

我的服务发现:

@SpringBootApplication
@EnableEurekaServer
public class EurekaServer {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的ConfigServer:

@SpringBootApplication
@EnableAutoConfiguration
@EnableConfigServer
@ComponentScan
@EnableDiscoveryClient
public class ConfigserverApplication {

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

我的ZuulProxy:

@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
@EnableDiscoveryClient
@EnableZuulProxy
public class ZuulProxy {
  public static void main(String[] args) {
    SpringApplication.run(ZuulProxy.class, args);
  }
}
Run Code Online (Sandbox Code Playgroud)

路由规则zuul:

zuul.ignoredServices=*
zuul.routes.examplems=/example/**
Run Code Online (Sandbox Code Playgroud)

我的服务实例:

@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
@ComponentScan(basePackages = …
Run Code Online (Sandbox Code Playgroud)

spring-cloud

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

Spring Cloud Configuration Server无法使用本地属性文件

我一直在github上玩Spring Cloud项目:https://github.com/spring-cloud/spring-cloud-config

但是我遇到了一些问题,让它读取本地属性文件而不是从github中提取属性.即使我删除了对github的所有引用,spring似乎忽略了本地文件.此处发布了类似的问题:Spring-Cloud配置服务器忽略配置属性文件

但我还没有看到任何好的答案.我想知道是否有人能指出我的一个例子?我想在本地设置我的属性,而不是使用任何类型的git repo.我假设有人之前遇到过这种情况,如果有某个例子,我真的很想看到它,这样我才能朝着正确的方向前进.

java spring spring-cloud

14
推荐指数
2
解决办法
5万
查看次数

Spring Cloud:如何使用没有功能区的Feign

我想在没有客户端负载均衡器功能区的情况下使用Feign,因为我不想运行需要分发且高度可用的Eureka.相反,具有由Route53管理的内部DNS名称的内部ELB可以正常运行.

提供@FeignClient始终导致的纯URL no loadbalancer found for ..,因此我尝试阻止Feign使用Ribbon:

春云Netflix的自带FeignRibbonClient,用于如果ILoadBalancerribbon-loadbalancer存在.但是,如果排除此依赖关系,则会FeignConfiguration被破坏:

Bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'apiVersionClient': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: feign.codec.Decoder org.springframework.cloud.netflix.feign.FeignConfiguration.decoder; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
Run Code Online (Sandbox Code Playgroud)

欢迎提示:-)

java spring spring-cloud netflix-feign

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

Spring Cloud - Zuul Proxy正在生成No'Access-Control-Allow-Origin'ajax响应

启动应用程序:

@SpringBootApplication
@EnableZuulProxy
public class ZuulServer {

     public static void main(String[] args) {
         new SpringApplicationBuilder(ZuulServer.class).web(true).run(args);
     }
 }
Run Code Online (Sandbox Code Playgroud)

我的YAML文件是这样的:

server:
   port:8080

spring:
   application:
      name: zuul

eureka:
client:
  enabled: true
    serviceUrl:
       defaultZone: http://localhost:8761/eureka/



zuul:
    proxy:
       route:
         springapp: /springapp
Run Code Online (Sandbox Code Playgroud)

我有一个名为springapp的微服务应用程序(在端口8081上),并有一些休息服务.以下是我的客户端UI应用:

    <html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script type="text/javascript" src="js/libs/jquery/jquery.min.js" ></script>
    </head>
    <body>
        <script type="text/javascript">
            $.ajax({
                url: 'http://localhost:8080/zuul/springapp/departments',
                type: 'GET'
            }).done(function (data) {
                consoe.log(data);
                document.write(data);
            });
        </script>        

    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但我得到了一个

XMLHttpRequest cannot load http://localhost:8080/zuul/springapp/departments. No
    'Access-Control-Allow-Origin' header is …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot spring-cloud netflix-zuul

14
推荐指数
3
解决办法
2万
查看次数

我应该如何在EC2实例中包含的Docker中使用Netflix Zuul和Eureka配置Spring Cloud

我正在使用Spring Boot和Spring Cloud(Zuul和Eureka)在单独的docker容器中运行构建微服务,这些容器部署在单独的Amazon EC2实例中.

我有一个简单的REST服务,它向Eureka注册,并已配置Zuul通过在Eureka中查找请求来将请求路由到此服务. 在此输入图像描述

我可以使用boot2docker在Mac上本地运行(即不在Amazon/EC2中),但是当部署在EC2上时,Zuul无法找到服务,并报告"转发错误"(状态500).

在EC2中,一切都配置为在端口80上运行(只是在评估时,我可以通过我们的防火墙轻松访问).我可以在Eureka系统状态页面中看到Zuul和我的服务(尽管没有链接可用!).

客户端配置为使用完整的AWS域名查找Eureka,因此我可以看到他们如何找到Eureka OK.例如

  client:
    serviceUrl:
      defaultZone: http://ec2-XX-XX-XX-XX.ap-southeast-2.compute.amazonaws.com:80/eureka/,http://ec2-YY-YY-YY-YY.ap-southeast-2.compute.amazonaws.com:80/eureka/
Run Code Online (Sandbox Code Playgroud)

但是,客户似乎正在使用其内部docker IP地址进行注册(基于Eureka系统状态链接).

在此输入图像描述

edgeserver链接指向http://172.17.0.2/info 试用服务链接指向http://172.17.0.3/info

我猜这是不正确的,其他EC2实例不知道到达这个地址.

我已经阅读了这个页面https://github.com/Netflix/eureka/wiki/Configuring-Eureka-in-AWS-Cloud,建议使用AWS EC2弹性IP地址,但我希望我不必这样做.

我也看到目前有关于这个主题的讨论,https://github.com/spring-cloud/spring-cloud-netflix/issues/432

有没有人设法让这种类型的设置工作,如果是这样,他们是如何配置Eureka属性的?

spring amazon-web-services spring-cloud netflix-eureka

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

zookeeper与spring cloud配置服务器有什么区别?

zookeeper与spring cloud配置服务器有什么区别?它们都将配置存储在服务器中并使其可供客户端使用.

应该何时使用另一个?

cloud spring config spring-cloud apache-zookeeper

14
推荐指数
1
解决办法
5430
查看次数

将Spring启动/云与Amazon AWS一起使用lambda不会注入值

我有一个AWS lambda RequestHandler类,由AWS直接调用.最终我需要使用Spring Boot,因为我需要它能够从Spring Cloud配置服务器检索数据.

问题是如果我从我自己的开发环境本地运行代码但是在AWS上部署时无法注入配置值,则代码可以工作.

@Configuration
@EnableAutoConfiguration
@ComponentScan("my.package")
public class MyClass implements com.amazonaws.services.lambda.runtime.RequestHandler<I, O> {
   public O handleRequest(I input, Context context) {
        ApplicationContext applicationContext = new SpringApplicationBuilder()
                .main(getClass())
                .showBanner(false)
                .web(false)
                .sources(getClass())
                .addCommandLineProperties(false)
                .build()
                .run();

        log.info(applicationContext.getBean(SomeConfigClass.class).foo);
        // prints cloud-injected value when running from local dev env
        //
        // prints "${path.to.value}" literal when running from AWS 
        //    even though Spring Boot starts successfully without errors
   }
}

@Configuration
public class SomeConfigClass { …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot spring-cloud aws-lambda

14
推荐指数
1
解决办法
8476
查看次数

在spring cloud中的bootstrap.yml上设置配置文件以定位不同的配置服务器

我使用docker compose来运行我所有的微服务.对于每项服务,我给它一个简短的主机名.

version: '2'

services: 
  config:
    image: springbox-config-server
    restart: always
    ports:
     - "8890:8890"

  discovery:
    image: springbox-eureka
    restart: always
    ports:
     - "8763:8763"
Run Code Online (Sandbox Code Playgroud)

因此,在我的微服务中,我必须使用其短主机名来定位配置服务器.

spring:
  application:
    name: myservice
  cloud:
    config:
      uri: http://config:8890
      fail-fast: true
Run Code Online (Sandbox Code Playgroud)

但是,当我在没有docker的IDE中本地运行它们时,无法解析短主机名.

所以我正在寻找一种解决方案,根据我的环境定位不同的配置服务器.

docker spring-cloud

14
推荐指数
1
解决办法
9282
查看次数

Spring Cloud Feign:与RestTemplate相比,Feign的效率是否足够?

我快速浏览了Feign的源代码,我发现Feign使用JDK HttpUrlConnection发出HTTP请求,并在请求完成时关闭它而不使用连接池.我怀疑这种方式的效率.然后我读了Spring的文档,RestTemplate它说RestTemplate可以切换到Apache Http Client或OKHttp来发送HTTP请求:

注意:默认情况下,RestTemplate依赖于标准JDK工具来建立HTTP连接.您可以通过HttpAccessor.setRequestFactory(org.springframework.http.client.ClientHttpRequestFactory)属性切换到使用不同的HTTP库,例如Apache HttpComponents,Netty和OkHttp.

这是否意味着RestTemplate在性能方面优于Feign?

spring-cloud spring-cloud-feign

14
推荐指数
1
解决办法
4577
查看次数

Turbine Dashboard未加载Spring Cloud微服务中的聚合

我正在尝试使用spring MVC和spring boot框架开发一个spring cloud微服务.和Eureka服务器,Zuul,Ribbon,hystrix和Turbine用于春天云.我已经开发了一个微服务并且只实现了hystrix仪表板.我可以使用hystrix仪表板.现在我正在实施更多服务.因此,我选择涡轮机进行监控聚合.但它没有获得仪表板.我在单独的弹簧启动项目中实施了涡轮机.

我的pom.xml包含,

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-turbine</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

而我的主要课程包含,

@SpringBootApplication
@EnableHystrixDashboard
@EnableCircuitBreaker
@EnableTurbine

public class ZTurbineClientApplication {

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

我的Turbine项目application.properties文件包含,

server.port=8085
spring.application.name=espace-Turbine
eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
turbine:
 aggregator:
  clusterConfig: APPCLUSTER
 app-config: espaceService1,espaceService2
 instanceUrlSuffix.APPCLUSTER: /hystrix.stream
Run Code Online (Sandbox Code Playgroud)

和我以前的第一个服务的application.properties文件一样

eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
spring.application.name=espaceService1
server.port=8080
eureka:
  instance:
    prefer-ip-address: true
    leaseRenewalIntervalInSeconds: 3
    leaseExpirationDurationInSeconds: 3
    metadata-map:
      cluster: APPCLUSTER
Run Code Online (Sandbox Code Playgroud)

第二个服务的应用程序属性文件包含,

eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
spring.application.name=espaceService2
server.port=8081
eureka:
  instance:
    prefer-ip-address: …
Run Code Online (Sandbox Code Playgroud)

turbine spring-cloud

14
推荐指数
1
解决办法
796
查看次数