问题标签 [spring-cloud-netflix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
509 浏览

jwt - 作为范围的 Ldap 组是否适用于云代工 uaa 授权代码授权类型?

我正在尝试使微服务环境正常工作。我已经设置了 config-server、eureka-server、zuul-server 和 service。为了处理安全问题,我安装并运行了 Cloud Foundry 的 UAA 服务器。

按照有关如何设置 UAA 服务器的文档,可以选择将Ldap 组作为我拥有的范围,我可以看到它们是如何在 UAA 服务器日志上创建的,但它们不会进入 JWT 令牌。Zuul 正确代理到 UAA 服务器,我在 UAA 上执行身份验证过程并在 Zuul 上获取 JWT 令牌,然后 zuul 将代理添加到它后面的服务中,但没有登录用户的组/范围只有 openid 范围关于客户端配置。我错过了什么吗?或者这就是事情的工作方式,我必须实施一种解决方法,即从令牌中获取用户的用户名并获得他对每个服务的每个请求的访问权限?

这是我的 uaa.yml:

0 投票
2 回答
2459 浏览

java - 微服务中的服务器到服务器通信

我正在研究微服务架构,但我在这方面面临一些挑战。

首先让我简要介绍一下架构。

  1. 用户登录并获得一个签名令牌,该令牌将用于调用所有 REST API。

  2. 将有很多 API 服务器使用 Spring 安全性保护 API,并根据用户角色进行授权。

  3. 服务必须相互交互以获取/更新信息。

  4. 每个服务都有权通过身份验证服务器验证令牌问题。

问题:-

  1. 如果用户登录并且使用相同的令牌并将其传递给经过验证的每个服务,则一切正常。因此,在传递令牌时,服务不需要相互信任。

  2. 现在,问题是有一些服务需要从服务器本身调用而无需登录。让我们说一个服务器到服务器的调用。服务将如何验证和授权来自其他服务的调用。

我读到了 spring 微服务,但 Zuul 也不是这里的救星,因为每个 API 服务器都嵌入了 spring 安全性,而不仅仅是 API 网关。

一种解决方案可以是每个服务都有自己的具有特定角色的默认用户,用于登录->获取令牌->使用令牌调用其他服务器 api。

您能否在服务器到服务器调用中给我一些指示,其中每个服务器都使用 Spring Security 进行身份验证和授权。

谢谢。

0 投票
1 回答
543 浏览

angularjs - Spring Cloud,Netflix OSS - 微服务编排

我最近开始了一个项目,涉及使用 Spring Cloud 和 Netflix OSS 开发微服务架构。微服务是 RESTful 并产生 JSON 响应。

目标是组合每个微服务的 JSON 结果(它们可能是它们之间的依赖关系,例如 Service_B 需要 Service_A 的输出才能完成其计算)并通过 UI 呈现给最终用户(即 Angular.js 单页)。

作为参考,我遵循了callista enterprise的指南,其中三个示例微服务(产品、推荐、评论)的组成由另一个名为“product-composite”的微服务完成,该微服务基本上执行对其他微服务的一系列 http 调用.

在这一点上,我对这种组合/编排方法有点困惑,因为它无法扩展,并且每次向架构中添加新的微服务时都需要进行重大更改。

问题是:在结构化流程中组合/编排微服务的最佳/适当方法是什么?

我希望在单个 Angular.js 页面中组合每个服务,但我担心将每个微服务暴露给外部,因为需要调用单个 API 端点(比如说 /report)并获得所需的整个计算。

另一种选择似乎是 Spring Integration,但我找不到说明如何使用这种技术映射这种架构的文档。

任何提示、指南、参考和建议将不胜感激。谢谢你的支持。

卢卡

0 投票
3 回答
641 浏览

java - Turbine 使用 docker 时只能找到一台主机

我有 3 个项目:一个 hystrix 仪表板、一个涡轮服务器(使用 AMQP)和一个 API

当我开始开发环境时,我设置了 2 个 API 实例(使用端口 8080 和 8081)。为了测试涡轮机聚合,我拨打了电话,在仪表板中,我可以看到Hosts: 2.
虽然当我使用 Docker 时,即使负载均衡器命中 2 台服务器,我也只能在 hystrix 仪表板上看到一台主机。

我的假设:
1-因为两个容器都在同一个端口(8080)上启动,Turbine 将它们视为一个
2-因为我也对 RabbitMQ 进行了 dockerize,这可能会导致问题

这是我的docker-compose.yml文件

我的persona_api配置文件

恐怕如果我将它部署到生产环境(在 Rancher 或 Docker 云上),我会看到同样的问题。

这是我设置两个负载平衡的 API 时发生的事情的 GIF

在此处输入图像描述

0 投票
2 回答
7180 浏览

java - 通过 RestTemplate 流式下载文件

我有一个由一台服务器上的 RestController 提供的大文件下载,我需要通过另一台服务器上的 RestController 进行流式传输。当直接调用终端服务器时,结果流很好。但是,当使用 RestTemplate 调用此服务器然后将响应写入 OutputStream 时,响应会在前端服务器上缓冲,直到整个文件准备好,然后流式传输。有没有办法可以将文件写入输出流?

目前我在前端服务器上的代码与此类似

我已将我的 RestTemplate 设置为不缓冲,并且通过检查所使用的请求类型 (SimpleStreamingClientHttpRequest) 来验证这是否有效。数据全部恢复正确,它只是一次全部写入流,而不是当它进来时

0 投票
1 回答
621 浏览

spring-boot - Eureka 元数据中的启动时间戳

我们将 Spring Cloud Angel.SR6 与 Netflix Eureka 和 Spring Config Server 一起使用。我们的一个微服务是一个分布式系统,它使用 Eureka 作为发现机制来寻找对等点。为了在多个实例并行启动时以正确的方式启动系统,我们想知道哪个节点先启动。Eureka 中的应用程序信息包含几个不同的时间戳,但是当 Eureka 客户端更新状态时它们会发生变化,因此我们似乎无法依赖它们。

我们现在的想法是让应用程序在 Eureka 中注册自己的启动时间戳metadataMap,我们已经能够使用EurekaInstanceConfigBean. 然而,使用这种方法,时间戳在过程中添加得太晚了。这些实例最初出现在 Eureka 中没有时间戳,这对我们来说还不够好(即使是这样,也需要很长时间才能成为一个好的解决方案)。

我们正在尝试做的是获取包含在初始 Eureka 注册中的时间戳。声明的属性bootstrap.properties包括在内,所以如果我们能以某种方式在此处获取时间戳,一切都会正常工作:

eureka.instance.metadataMap.bootTimestamp=<here we want the timestamp>

我们尝试使用Spring Cloud 文档PropertySourceLocator中提到的方法添加自定义,但仍然没有运气。初始 Eureka 注册发生在 PropertySourceLocator 初始化之前,这再次为时已晚。

我们如何才能在初始 Eureka 注册之前将启动时间戳放入环境中,这样应用程序就不会在没有时间戳的情况下出现在 Eureka 中?

0 投票
1 回答
1069 浏览

spring-boot - 如何在没有spring boot actuator的情况下在spring cloud中使用zuul?

我想在我的应用程序中使用 zuul 作为代理服务器,但我不想使用 spring boot 执行器,我尝试将其从依赖项中删除,如下所示:

但是,它会导致一些 ClassNotFoundException。我的应用程序中不需要 spring boot 执行器,但它在 spring boot 中有很多自动配置,会产生许多我不想要的端点。有什么好的方法可以解决这个问题吗?

0 投票
0 回答
268 浏览

spring - 在 SpringClientFactory AppContext 中请求作用域 bean

我正在使用 aSpringClientFactory创建一个带有自定义的功能区客户端com.netflix.niws.client.http.RestClient。这RestClient@Bean请求范围内的(即@Scope("request"))连接。这一切都是作为 Brixton 发布系列的一部分完成的。

SpringClientFactory有一个ApplicationContext它自己为给定实例化的name,并且这个上下文没有任何注册的范围。

我有一个扩展的解决方法SpringClientFactory,但感觉有点笨拙,并且它对BeanFactory可用的类型做出假设。

有没有人尝试在 a 中使用替代 bean 范围(请求、会话、全局会话)SpringClientFactory

这个更针对 Spring Cloud 维护者:是否有意识的原因是范围没有从父上下文传播到在NamedContextFactory? 似乎这可能只是一个疏忽。

0 投票
1 回答
76 浏览

spring-boot - Spring 服务发现限制

我关注了这个页面:https ://spring.io/guides/gs/service-registration-and-discovery/

到目前为止没有问题。我可以注册自动发现的 Spring 服务。

我现在需要发现特定域上可访问的服务(例如,区分 TEST 和 PROD)

这意味着我将运行 2 个发现服务。一个应该只在myTestDomain.domain.ch上获取服务,而另一个应该只在myProdDomain.domain.ch上获取服务。

任何人都知道如何区分?

0 投票
0 回答
409 浏览

spring - 设置码头守护进程时通过shutdownhook关闭spring boot应用程序?

我已经编写了一个zuul 应用程序,并将默认的tomcat 替换为jetty。我为码头的高级配置(如线程池)实现了自己的 CustomJettyEmbeddedServletContainerFactory。

}

问题是,当我设置 时threadPool.setDaemon(true),我的应用程序将被 shutdownhook 优雅地关闭。是什么导致这种情况发生?任何想法?

我的 spring-boot 版本是 1.3.5.RELEASE,spring-cloud-netflix 版本是 1.1.2.RELEASE。

这是我的日志的一部分。