#Spring Cloud

在上一篇实现了Spring Cloud资源服务器的定制化,但是又发现了一个新的问题,Spring Cloud微服务调用的过程中需要令牌中继。只有令牌中继才能在调用链中保证用户认证信息的传递。今天就来分享一下如何在Feign中实现令牌中继。 令牌中继令牌中继(Token Relay)是比较正式的说法,说白了就是让Token令牌在服务间传递下去以保证资源服务器能够正确地对调用方进行鉴权。 令牌难道不能在Feign自动中继吗?如果我们携带Token去访问A服务,A服务肯定能够鉴权,但是A服务又通过Feign调用B服务,这时候A的令牌是无法直接传递给B服务的。这里来简单说下原因,服务间的调用通过Feign接口来进行。在调用方通常我们编写类似下面的Feign接口: @FeignClient(name = "foo-service",fallback = FooClient.Fallback.c...

我在上一篇对资源服务器进行了简单的阐述,让大家对资源服务器的概念有了简单的认识,今天我将用实际例子来演示单体应用改造为Spring Cloud微服务时的资源服务器实现。 资源服务器改造以Spring Security实战干货的DEMO为例子,原本它是一个单体应用,认证和授权都在一个应用中使用。改造为独立的服务后,原本的认证就要剥离出去(这个后续再讲如何实现),服务将只保留基于用户凭证(JWT)的访问控制功能。接下来我们将一步步来实现该能力。 所需依赖在Spring Security的基础上,我们需要加入新的依赖来支持OAuth2 Resource Server和JWT。我们需要引入下面几个依赖库: <dependency> <groupId>org.springframework.boot</groupId> <artifactI...

Spring Cloud 2021.0.0-M2 已发布,代号”Jubilee”,可从 Spring Milestone 仓库获取新版本,相关 issue 和 PR 信息查看其 GitHub 项目页面。 另外,此版本与 Spring Boot 2.6.0-M3 兼容。 Spring Cloud Commons调整用于 Sleuth 的NamedContextFactoryAPI Spring Cloud ConfigJDBC Environment 仓库支持除 String 之外的其他类型 issue 1952 Spring Cloud Contract 支持 UUID v4,以及修复大小写敏感问题 issue 1688 使用独立的 docker 镜像时支持自定义build.gradleissue 1672 Spring Cloud Gateway支持 HTTP 2 协议 issu...

Spring Cloud 2020.0.4 正式发布,这是错误修正版本。兼容 Spring Boot 2.4.x and 2.5.x。目前已经可以从中央仓库获取,坐标如下: <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2020.0.4</version> <type>pom</type>...

7月12日消息,Spring Cloud Alibaba新版本2.2.6发布,该版本适配Spring Cloud Hoxton.SR9。 下面一起来看看该版本内容: 特性增强Nacos 支持服务注册的快速失败配置spring.cloud.nacos.discovery.fail-fast,默认为false #2104 Dubbo 重构Dubbo的集成 #2101 #2121 缺陷修复Nacos 修复Nacos在k8s环境下,因DNS不起作用而导致不工作的问题 alibaba/nacos#5291 修复当实例不在默认组下时无法获取实例的问题 #2113 修复NacosWatch对zipkin跟踪的影响 #2140 Dubbo 修复了SCA中组聚合不起作用的问题 #1992 修复SCA dubbo TagRouter的元数据错误 #2031 #2037 修复服务更改期间出现...

2021年5月28日,Spring Cloud发布2020.0.3版本。该版本已经可以在Maven Central中找到。 版本内容该版本是一个Bug修复和依赖升级版本。其中主要更新的内容如下: Spring Cloud Commons 增加禁用负载均衡的属性配置 #940 Spring Cloud Config 修复了几个用Spring Cloud Config Server时候,spring.config.import配置相关的Bug Spring Cloud Consul 修复与spring.config.import相关的远程配置与本地配置的特定问题 #706 Spring Cloud Kubernetes 基于DiscoveryClient实现的时候默认使用当前namespace (#678) Spring Cloud CircuitBreaker Rea...

这几天在不同的微信群和社区里连续碰到了类似的问题: 比如spring4all的帖子:http://bbs.spring4all.com/thread/21 又比如今天在秦总的群里也进行了类似的讨论。 虽然描述不同,但核心都围绕着一个问题:两个不同注册中心下的服务要如何互相调用? 下面就针对这个问题,展开说说我的思考、实践与建议。 为什么会有这样的场景?先来说说背景问题,有的群友在看到这类问题的时候,第一反应就是怎么用多个注册中心,是不是蛋疼了瞎搞的? 显然有点脑子的人都不会这样做!那么为什么会存在这样的场景呢,通常都是这样演变而来的: 缺少统一的基础技术平台管理,几乎所有做大的企业都会碰到这样的问题。为了业务野蛮发展的时期,技术团队是很少有精力去做这些治理的,通过系统边界划分好之后,因为系统与系统间的交互通过协议定义规范就好,每个系统内部的技术栈根据团队特性选择自己最擅长的就行...

Spring Cloud 2020.0.2 (aka Ilford) 已发布,这是一个小版本升级,更新内容主要是修复 bug 以及升级依赖,可从 Maven Central 获取更新。 以下模块作为 Spring Cloud 2020.0.2 的一部分已升级: Module Version Issues Spring Cloud Bus 3.0.2 Spring Cloud Circuitbreaker 2.0.1 Spring Cloud Cli 3.0.2 Spring Cloud Cloudfoundry 3.0.1 Spring Cloud Commons 3.0.2 Spring Cloud Config 3.0.3 Spring Cloud Consul 3.0.2 Spring Cloud Contract 3.0...

Spring Cloud Alibaba 2.2.4 已经发布,目前已可以从 maven 仓库获取,坐标如下: <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.4.RELEASE</version> <type>pom</type> <scope>...

2020年12月22日,Spring Cloud 2020.0 正式发布GA版本! 版本说明每次Spring Cloud的大版本发布,我们都要先弄清楚,它对应的Spring Boot版本是哪个! 该版本的Spring Cloud对应的是Spring Boot 2.4,但需要注意的是,必须从2.4.1开始。 由于Spring Boot 2.4.0中大量配置相关的Bug。因此要使用这个最新的Spring Cloud版本,就必须选用 Spring Boot 2.4.1 及之后的版本构建应用。 更多版本关系和文档索引可见:springcloud.com.cn。如果您正要学习Spring Cloud,那么我的这个免费教程可能很适合你哟! 更新内容发布内容 Spring Cloud Commons的Bootstrap被默认禁用。导入配置的新方法采用Spring Boot 2.4新出的spr...

前段时间Spring Boot发布了本年度最后一个重要更新版本:Spring Boot 2.4.0。 最近在社群里也开始有讨论关于Spring Boot 2.4的一些使用问题。我发现有很多Spring Cloud用户也急切着想要体验最新版本的Spring Boot,然后碰到了一些问题,其中被提出来最多的就是配置无法加载的问题。 我没有去深究这个问题如何去解决,因为之前,在发布说明中有提及过,在Spring Boot 2.4版本中对配置文件的处理做了较大的改动,如果你只是简单的使用application.properties或application.yaml,那么还能无缝衔接。但如果用了更为复杂的配置方式,很可能会失败。 所以,当你采用Spring Cloud Config来管理配置和加载的时候,就很容易出现这样的问题。同时,从Spring Boot和Spring Cloud的版本支持...

今天在知乎上看到了这样一个问题:Spring Cloud 和 Dubbo哪个会被淘汰?看了几个回答,都觉得不在点子上,所以要么就干脆写篇小文瞎逼叨一下。 简单说说个人观点 我认为这两个框架大概率会长期都存在。 时至今日,这两个框架放到现在,已经不存在谁取代谁这一说了。由于Spring Cloud Alibaba的出现,Dubbo已经很好的融入到了Spring Cloud体系,所以围绕Spring Cloud生态的各种周边产品都是可以无缝整合到一起来玩的。 Dubbo无缝整合Spring Cloud生态是啥意思呢?主要两方面: 如果你原来是Dubbo用户,那么现在可以把Spring Cloud引入进来。轻松便捷地整合Spring Cloud的配置中心、注册中心以及诸如分布式跟踪等好用的周边产品来管理你的分布式服务集群,与其他Spring Cloud Netflix用户享受同等的生态优...

Spring Cloud 开发团队昨日公布了 Spring Cloud 2020 年的路线图,并对 Spring Cloud Greenwich 和 Hoxton 的生命周期进行了一些讲解。 Spring Cloud Ilford开发团队称 Spring Cloud Ilford 将是下一个主要版本,这也将是自 Spring Cloud Finchley 发布以来的第一个主要版本。此版本将提供对 Spring Boot 2.x 和 Spring Framework 5.x 的支持。通过使 Ilford 成为主要版本,开发团队将能够删除进入维护模式(maintenance mode)的模块,并兑现今年早些时候宣布的简化新版本的承诺。此外,团队成员还会对一些 API 进行重构,这可能会引入重大变更。 Spring Cloud Ilford 将在 2020 年第四季度的某个时候随 Spri...

距离Spring Boot 2.2.0的发布已经有一个半月左右时间,由于与之匹配的Spring Cloud版本一直没有Release,所以在这期间碰到不少读者咨询的问题都是由于Spring Boot和Spring Cloud版本不匹配导致。 很多时候,我们在学习或重建系统的时候都喜欢直接选用最高版本来开发,但是在使用Spring全家桶的时候,这样的选择不一定是最佳选择。主要还是由于Spring全家桶中各项目之间还存在一定的依赖关系。尤其是在大版本迭代期间,是我们尤其要注意的。比如,这次Spring Framework、Spring Boot、Spring Cloud的升级,是一次整体的大版本的升级,涵盖了Spring Framework 5.2、Spring Boot 2.2、Spring Cloud Hoxton。 由于Spring Boot 2.2基于Spring Framewo...

很早以前,在刚开始搞Spring Cloud基础教程的时候,写过这样一篇文章:《微服务架构的基础框架选择:Spring Cloud还是Dubbo?》,可能不少读者也都看过。之后也就一直有关于这两个框架怎么选的问题出来,其实文中我有明确的提过,Spring Cloud与Dubbo的比较本身是不公平的,主要前者是一套较为完整的架构方案,而Dubbo只是服务治理与RPC实现方案。 由于Dubbo在国内有着非常大的用户群体,但是其周边设施与组件相对来说并不那么完善。很多开发者用户又很希望享受Spring Cloud的生态,因此也会有一些Spring Cloud与Dubbo一起使用的案例与方法出现,但是一直以来大部分Spring Cloud整合Dubbo的使用方案都比较别扭。这主要是由于Dubbod的注册中心采用了ZooKeeper,而开始时Spring Cloud体系中的注册中心并不支持Zo...