从Spring Cloud切换Brixton.M5到Brixton.RC1我的ZuulProxy时,不再将Authorization标头下游传递给我的代理服务.
在我的设置中有各种各样的演员,但大多数都非常简单: - AuthorizationServer:单独运行; 向客户发放JWT - 客户:从OAuth服务器获取JWT; 每个人都可以访问一部分资源. - ResourceServers:使用JWT进行访问决策 - MyZuulProxy:代理各种资源服务器; 应该转发JWT.
应该注意的是,MyZuulProxy没有任何安全依赖性; 它将Authorization: Bearer {JWT}它收到的头传递给ResourceServers,前RC1.MyZuulProxy显然不是客户端本身,目前不使用@EnableOAuth2SSO或类似.
在使用Spring Cloud Brixton.RC1时,如何让MyZuulProxy再次将JWT中继到ResourceServers?
有很少的代码后:这只是@EnableZuulProxy,@EnableAuthorizationServer并@EnableResourceServer在三个不同的罐子.我的客户端不是Spring应用程序.
java spring-security-oauth2 spring-cloud spring-cloud-netflix
这是我的Feign界面
@FeignClient(
name="mpi",
url="${mpi.url}",
configuration = FeignSimpleEncoderConfig.class
)
public interface MpiClient {
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<String> getPAReq(@QueryMap Map<String, String> queryMap
);
}
Run Code Online (Sandbox Code Playgroud)
和我的自定义配置
public class FeignSimpleEncoderConfig {
public static final int FIVE_SECONDS = 5000;
@Bean
public Logger.Level feignLogger() {
return Logger.Level.FULL;
}
@Bean
public Request.Options options() {
return new Request.Options(FIVE_SECONDS, FIVE_SECONDS);
}
@Bean
@Scope("prototype")
public Feign.Builder feignBuilder() {
return Feign.builder()
.encoder(new FormEncoder());
}
}
Run Code Online (Sandbox Code Playgroud)
如果我发送这样的请求,我会看到我的请求发送Content-Type:application / json; charset = UTF-8。但是如果我设置内容类型
consumes = "application/x-www-form-urlencoded"
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息
feign.codec.EncodeException: Could not write request: …Run Code Online (Sandbox Code Playgroud) 我正在使用Spring云平台开发微服务,其中service1调用多个其他微服务,例如service2,service3,service 4等.这些服务可以并行调用,service1将聚合结果.我可以使用Spring cloud feign(http://cloud.spring.io/spring-cloud-static/Dalston.SR1/#spring-cloud-feign)生成rest客户端并异步调用服务,还是应该使用Spring 4 AsyncRestTemplate异步调用服务?
我正在尝试使用基于DNS的EIP配置在aws上设置eureka集群,如https://github.com/Netflix/eureka/wiki/Configuring-Eureka-in-AWS-Cloud所述
一切似乎都有效,但尤里卡仪表板坚持认为尤里卡实例不可用.我现在想知道这是否只是一个问题(我想是这样)或者我是否遗漏了什么.
据我了解仪表板中的"不可复制副本"逻辑,这是因为eureka正在比较注册主机名和副本主机名.实例在发现客户端注册其内部VPC ip,但在查找副本对等时使用他们的EIP(奇怪的是,在eureka日志中我可以看到内部他们也在使用内部VPC ip).
问题是:这只是一些我不应该担心的化妆品问题,还是因为一些配置错误而等待介入的更大问题?如果它只是一个ui的东西:我能以某种方式"修复"吗?
编辑:
也许相关https://github.com/spring-cloud/spring-cloud-netflix/issues/102#issuecomment-74446709
我正在使用Spring Cloud Config Server并能够检测来自git存储库的更改并将其传递给Config客户端.
有两种方法,我已经实现了它:
参考:http: //tech.asimio.net/2017/02/02/Refreshable-Configuration-using-Spring-Cloud-Config-Server-Spring-Cloud-Bus-RabbitMQ-and-Git.html
参考:https://spring.io/guides/gs/centralized-configuration/
所以两者都运行良好,那么使用Spring Cloud Bus是否有任何优势,或者在生产环境中,没有Spring Cloud Bus会有任何问题吗?因为在生产中将RabbitMQ集群(HA)设置为Spring Cloud Bus需要额外的努力.
谢谢,大卫
spring-boot spring-cloud spring-cloud-netflix spring-cloud-config
Cloudfoundry计划添加对映射到多个IP的DNS A记录的支持(每个应用容器实例一个),请参阅docs-proposal.我想知道弹簧云发现是否与功能区配合可以支持基于DNS的客户端负载平衡.
Spring-Cloud DiscoveryClient似乎没有DNS解析,它管理主机名
功能区负载平衡库通过ListOfServers属性支持FQDN列表.
但我无法找到与指定服务器的DNS查找相关的文档:即,如果DNS A/AAA记录(从ListOfServers获取)返回多个IP地址,那么Ribbon会在IP地址之间进行负载平衡吗?
我需要在哪里配置DNS缓存指令?这是java.security支持中的JVM范围,还是可以将其作为客户端幻灯片负载平衡选项(来自功能区)进行管理?
我知道我们可以通过提供 url Ex 来强制 FeignClient 使用 OkHttp 而不是 Ribbon。 @FeignClient(url="serviceId", name="serviceId")
即使只提供了名称,我也希望使用 OkHttpClient。前任。@FeignClient(name="serviceId")
根据 spring cloud 文档“如果启用 Ribbon,则它是 LoadBalancerFeignClient,否则使用默认的 feign 客户端。”
如何禁用功能区以便使用默认的伪装客户端。
spring-cloud netflix-feign spring-cloud-feign feign spring-cloud-netflix
我正在使用具有功能端点的Spring WebFlux来创建API.为了提供我想要的结果,我需要使用外部RESTful API,并以异步方式执行此操作,我正在使用WebClient实现.效果很好,就像这样:
public WeatherWebClient() {
this.weatherWebClient = WebClient.create("http://api.openweathermap.org/data/2.5/weather");
}
public Mono<WeatherApiResponse> getWeatherByCityName(String cityName) {
return weatherWebClient
.get()
.uri(uriBuilder -> uriBuilder
.queryParam("q", cityName)
.queryParam("units", "metric")
.queryParam("appid", API_KEY)
.build())
.accept(APPLICATION_JSON)
.retrieve()
.bodyToMono(WeatherApiResponse.class);
}
Run Code Online (Sandbox Code Playgroud)
由于这会执行网络访问,因此它是NetFlix OSS Hystrix的一个很好的用例.我已经尝试过使用spring-cloud-starter-netflix-hystrix,将@HystrixCommand添加到上面的方法中,但即使我设置了错误的URL(404)或错误的API_KEY(401),也无法使其跳闸. .
我认为这可能是与WebFlux本身兼容的问题,但设置属性@HystrixProperty(name ="circuitBreaker.forceOpen",value ="true")确实迫使回退方法运行.
我错过了什么吗?这种方法是否与Spring WebClients不兼容?
谢谢!
我正在使用 spring boot + spring cloud + spring JDBC 为单体应用程序开发微服务。目前,该应用程序通过 tomcat JNDI 连接池连接到单个数据库。
我们这里有一个瓶颈,此时不能因为数据库对象数量大、与其他系统的依赖关系等各种原因而改变数据库架构。
所以我们根据应用特性隔离了微服务。我担心的是,如果我们开发的微服务每个都有自己的连接池,那么与数据库的连接数量会呈指数级增长。
目前,我正在考虑两种解决方案
计算每个应用程序功能当前正在使用的连接数并达到每个服务的最大/最小连接参数 - 这是一个非常乏味的过程,我们没有任何机制来获取每个应用程序功能的连接数。
开发具有单个连接池的数据微服务,从其他 MS 获取查询对象,触发对数据库的查询并将结果集对象返回给调用者。
不确定第二种方法是否是微服务架构中的最佳实践。
您能否建议任何其他在当前情况下有用的标准方法?
connection-pooling spring-jdbc spring-boot spring-cloud-netflix
我正在实现一个服务发现,并评估两个选项:Eureka 和 Consul。
帮我决定吧!我倾向于尤里卡,但我需要解决一个主要的技术问题。我的基础设施基于 openshift。我可以让多个容器在负载均衡器后面运行 Eureka 服务器。据我所知,每个服务器都需要相互通信。另外,Eureka主要与AWS一起使用......
(新手)问题:
1)如何配置每个Eureka Server相互通信?我有一个(负载平衡)URL。我担心每个服务器可能会变得不同步。
2)我错过了什么吗?
consul netflix-eureka spring-cloud-netflix spring-cloud-consul