标签: spring-cloud

在spring boot中将属性放在application.yml或bootstrap.yml上有什么区别?

在spring boot中将属性放在application.yml或bootstrap.yml上有什么区别?在logging.config情况下,应用程序的工作方式不同.

java spring spring-boot spring-cloud

203
推荐指数
5
解决办法
7万
查看次数

EnableEurekaClient和EnableDiscoveryClient有什么区别?

在某些应用程序中,我看到人们正在使用EnableEurekaClient.其他一些示例应用程序正在使用EnableDiscoveryClient.

这两者有什么区别吗?

spring-cloud netflix-eureka

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

了解Spring Cloud Eureka Server自我保护和更新阈值

我是开发微服务的新手,虽然我已经研究了一段时间,阅读了Spring的文档和Netflix.

我已经在Github上开始了一个简单的项目.它基本上是Eureka服务器(阿基米德)和三个Eureka客户端微服务(一个公共API和两个私有).查看github的自述文件以获取详细说明.

关键是当一切都在运行时,我希望如果其中一个私有微服务被杀死,Eureka服务器会实现并从注册表中删除它.

在Stackoverflow上发现了这个问题,解决方案通过enableSelfPreservation:false在Eureka Server配置中使用.一段时间后执行此操作,被杀死的服务会按预期消失.

但是我可以看到以下消息:

自保护模式已关闭.在网络/其他问题的情况下,可能无法保护实例.

1.自我保护的目的是什么?该文件指出,对"客户端进行自我保护可以获得不再存在的实例".那么什么时候打开/关闭它是否明智?

此外,启用自我保护后,您可能会在Eureka Server控制台警告中收到一条未完成的消息:

紧急!当EUREKA不是时,EUREKA可能会不正当地提出申请.更新的数量超过了阈值,并且这些实际情况并未到期,只是为了安全起见.

现在,继续使用Spring Eureka控制台.

Lease expiration enabled    true/false
Renews threshold    5
Renews (last min)   4
Run Code Online (Sandbox Code Playgroud)

我遇到了一个奇怪的阈值计数行为:当我单独启动Eureka Server时,阈值为1.

2.我有一个Eureka服务器并配置registerWithEureka: false为防止它在另一台服务器上注册.那么,为什么它会显示在阈值计数中?

3.对于每个客户端,我开始阈值计数增加+2.我想这是因为他们每分钟发送2条续订消息,对不对?

4. Eureka服务器永远不会发送续订,因此最后一次更新时间始终低于阈值.这是正常的吗?

renew threshold 5
rewnews last min: (client1) +2 + (client2) +2 -> 4
Run Code Online (Sandbox Code Playgroud)

服务器cfg:

server:
  port: ${PORT:8761}

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    enableSelfPreservation: false
#   waitTimeInMsWhenSyncEmpty: 0 …
Run Code Online (Sandbox Code Playgroud)

spring spring-cloud netflix-eureka

76
推荐指数
2
解决办法
4万
查看次数

Spring Cloud Gateway与Zuul有何不同?

我一直在使用Zuul作为边缘服务和API网关.最近我注意到Spring Cloud Platform发布了Spring Cloud Gateway.这两个网关有什么区别?为什么Zuul没有扩展到支持SC-Gateway的功能?一个新图书馆的驱动因素是什么?什么时候应该使用?

spring-mvc spring-cloud netflix-zuul spring-cloud-netflix

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

从位置“类路径资源 [application-dev.yml]”导入的属性“spring.profiles.active”无效

我将 Spring cloud 应用程序更新到最新的 Spring boot 版本 2.5.0。

但在启动过程中我遇到了这个异常:

11:05:05.038 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property 'spring.profiles.active' imported from location 'class path resource [application-dev.yml]' is invalid in a profile specific resource [origin: class path resource [application-dev.yml] from skyshop-mail-1.0.jar - 42:17]
        at org.springframework.boot.context.config.InvalidConfigDataPropertyException.lambda$throwOrWarn$1(InvalidConfigDataPropertyException.java:125)
Run Code Online (Sandbox Code Playgroud)

应用程序.yml

spring:
    application:
        name: mail-service
    profiles:
        active: dev
Run Code Online (Sandbox Code Playgroud)

application-dev.yml 文件:

logging:
    file:
        name: ${java.io.tmpdir}/application.log
    level:
        com:
            backend: DEBUG
        org:
            springframework: DEBUG
            springframework.web: DEBUG
jwt:
    expiration: 86400
    secret: test112322
server:
    port: 8020
    servlet:
        context-path: /mail
spring: …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot spring-cloud

50
推荐指数
5
解决办法
10万
查看次数

Zuul在长期请求中超时

我正在使用作为zuul代理(@EnableZuulProxy)的前端spring spring应用程序(微服务)将来自外部源的请求路由到使用spring cloud(spring boot)编写的其他内部微服务.
zuul服务器直接位于samples部分的应用程序中

@SpringBootApplication
@Controller
@EnableZuulProxy
@EnableDiscoveryClient
public class ZuulServerApplication {
    public static void main(String[] args) {
        new SpringApplicationBuilder(ZuulServerApplication.class).web(true).run(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在本地运行这组服务,它似乎工作正常但如果我在网络上运行它有一些负载或通过VPN然后我开始看到zuul转发错误,我在日志中看到客户端超时

有没有办法改变zuul前锋的超时,所以我可以从我的直接关注中消除这个问题.有什么可访问的参数设置.

我正处于发布阶段,这只是出现了:)

spring-cloud netflix-zuul

43
推荐指数
6
解决办法
3万
查看次数

Zuul - Api网关认证

我想在一些服务面前通过Spring Cloud作为API网关介绍Zuul.

我对身份验证有一些设计疑虑.身份验证将由Spring Security处理,它位于servlet过滤器链中的Zuul之前.

我的顾虑:

  • Gateway将坐在许多服务面前

  • 某些服务可能会暴露不需要身份验证的端点

  • 某些服务可能会暴露需要会话ID的端点和一些带有令牌的端点",一个任意的不透明值(例如,如果您知道"难以猜测"的URL,则下载文件)在API网关/ Spring Security中,您可以配置所有具有特定身份验证要求的端点.

在管理API网关方面:

  • 您如何强制实际的服务团队为每个下游服务提供所需的设置?
  • 如何允许网关中的频繁验证设置更改(根据服务需求)而不必停止整个网关?

谢谢,阿德里安

spring-cloud netflix-zuul

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

什么是Eureka服务,Eureka客户端,Eureka实例和Eureka服务器

我正在通过阅读本文学习Spring cloud Netflix ,但是我开始对本文中的不同术语感到困惑,它们是:

  1. 尤里卡服务.据我所知,这是一个普通的服务(特别是微服务),运行在一个独特的uri(即每个uri的一个服务).说localhost:12000.它可以在Eureka服务器中注册.

  2. 尤里卡客户.与尤里卡服务相同???

  3. 尤里卡服务器.据我所知,我们可以检查,发现和管理我们构建的一系列微服务,通常运行的是服务器localhost:8761

  4. 尤里卡实例.我对它所指的是什么感到困惑,与Eureka客户一样?

在本文中,它eureka.client在配置和EurekaClientNetflix API中提到,它们是指同一件事吗?

如果我错了,请告诉我这四个术语是什么意思并纠正我.谢谢!

================================== UPDATE =============== ===================

在文章中它说:

@EnableEurekaClient 使应用程序成为Eureka"实例"(即它注册自己)和"客户端"(即它可以查询注册表以查找其他服务).

因此看起来Eureka实例与Eureka服务相同.虽然Eureka Client是一个可以查询其他实例/服务的特殊实例.

spring spring-cloud netflix-eureka

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

Spring @EnableResourceServer vs @ EnableOAuth2Sso

到目前为止,我读过的大多数教程都使用@EnableOAuth2Sso而不是@EnableResourceServerAPI网关.有什么区别?什么是OAuth2Sso相反呢?

详细信息:我正在为基于Spring的微服务和单页应用程序实现安全/基础架构.有一段时间,虽然我们没有安全要求,但是在不同的主机(CORS方)上,SPA直接与开放式微服务进行了对话.

现在我使用spring-oauth和添加一层安全性和网关模式spring-zuul.所以我有一个服务(uaa-service)@EnableAuthorizationServer和一个带@EnableZuulProxy&的网关@EnableResourceServer.我只需要密码授权类型,因此每个SPA都有自己的登录表单,并通过网关对uaa-service令牌端点进行身份验证,然后继续使用该令牌进行进一步的请求.

这种方法有什么问题吗?我应该用@EnableOAuth2Sso吗?

java spring spring-security rest-security spring-cloud

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

尤里卡从不注销服务

我目前正面临一个问题,即Eureka没有取消注册注册服务.我直接从git hub中取出了Eureka服务器示例,只进行了一次更改eureka.enableSelfPreservation = false.我的application.yml看起来像这样:

server:
  port: 8761
eureka:
  enableSelfPreservation: false
  client:
    registerWithEureka: false
fetchRegistry: false
  server:
    waitTimeInMsWhenSyncEmpty: 0
Run Code Online (Sandbox Code Playgroud)

我已经读过,如果85%的注册服务在15分钟内停止提供心跳,Eureka认为该问题与网络有关,并且不会取消注册没有响应的服务.在我的情况下,我只运行一个服务,所以我禁用了自我保护模式.我突然杀了这个过程,尤里卡离开了服务注册的时间似乎是无限期的.

我的客户的application.yml看起来像这样:

eureka:
  instance:
    leaseRenewalIntervalInSeconds: 3
  client:
    healthcheck:
      enabled: true
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  appInfo:
    replicate:
      interval: 3
    initial:
      replicate:
        time: 3
spring:
  rabbitmq:
    addresses: ${vcap.services.${PREFIX:}rabbitmq.credentials.uri:amqp://${RABBITMQ_HOST:localhost}:${RABBITMQ_PORT:5672}}
Run Code Online (Sandbox Code Playgroud)

我的目标是创建一个演示,其中Eureka快速检测到服务不再运行,另一个启动的服务可以快速注册.

截至目前,一旦eureka客户端启动,它将在3秒内注册.当服务突然终止时,它永远不会取消注册.在我终止服务后,Eureka仪表板显示:

紧急!当EUREKA不是时,EUREKA可能会不正当地提出申请.更新的数量超过了阈值,并且这些实际情况并未到期,只是为了安全起见.

我该如何防止这种行为?

spring-cloud netflix-eureka

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