Fork me on GitHub

Spring Cloud

Config Server——使用Spring Cloud Bus自动刷新配置

前文我们讨论了使用/refresh 端点手动刷新配置,但是如果所有微服务节点的配置都需要手动去刷新的话,那必然是一个繁琐的工作,并且随着系统的不断扩张,会变得越来越难以维护。因此,实现配置的自动刷新是很有必要的,本节我们讨论使用Spring Cloud Bus实现配置的自动刷新。 Spring Cloud Bus提供了批量刷新配置的机制,它使用轻量级的消息代理(例如RabbitMQ、Kafka等)连接分布式系统的节点,这样就可以通过Spring Cloud Bus广播配...

如何使用Feign构造多参数的请求

本节我们来探讨如何使用Feign构造多参数的请求。笔者以GET以及POST方法的请求为例进行讲解,其他方法(例如DELETE、PUT等)的请求原理相通,读者可自行研究。 GET请求多参数的URL假设我们请求的URL包含多个参数,例如http://microservice-provider-user/get?id=1&username=张三 ,要如何构造呢? 我们知道,Spring Cloud为Feign添加了Spring MVC的注解支持,那么我们不妨按照Sp...

Config Server——配置内容的加密与解密

我们在Git仓库中存储的都是明文,但在很多场景下,某些敏感的配置内容(例如数据库账号、密码),应当被加密存储以提高安全性。Config Server为配置内容的加密与解密提供了支持。 安装JCEConfig Server的加解密功能依赖Java Cryptography Extension(JCE)。 Java 8 JCE的地址是:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download...

Eureka服务注册过程详解之IpAddress(详解eureka.instance.prefer-ip-address = true 与 eureka.instance.prefer-ip-address)

阅读本文你将了解 微服务注册到Eureka Server上的粗粒度过程 eureka.instance.prefer-ip-address = true 时,发生的一些事 深度理解eureka.instance.ip-address 和eureka.instance.prefer-ip-address = true 。 杂谈 注:本篇较长、枯燥、烧脑,并且涉及的范围相对广,建议选择一个舒服的姿势阅读。 分析,eureka.instance.prefer-ip-add...

理解微服务注册到Eureka Server上的过程(以appname为例)

阅读本文你将了解 微服务注册到Eureka Server上的粗粒度过程 为什么appname是大写。 appName的配置:spring.application.name与eureka.instance.appname,及它们的优先级。 Prepare首先解释一下什么是appname 图中的MICROSERVICE-PROVIDER-USER就是appname。下面我们来分析一下它的详细逻辑。 分析(1) 首先找到:org.springframework.clou...

Docker容器双向联通与高可用的Eureka Server

在《4.7 Eureka Server的高可用》中,我们构建了一个双节点的Eureka Server集群,本节我们使用Compose来编排这个Eureka Server集群。该双节点的Eureka配置如下: 1234567891011121314151617181920212223242526spring: application: name: microservice-discovery-eureka-ha---spring: profiles: peer...

解决Spring Cloud Bus不刷新所有节点的问题及理解"Application Context ID must be unique"

如果同一微服务的多个实例使用的端口相同,当配置修改时,使用Spring Cloud Bus不会刷新全部实例的配置。此时需要配置各个实例的spring.application.index为不同的值。下面我们来分析一下原因。 在Spring Cloud Config上有这么一段: Application Context ID must be uniqueThe bus tries to eliminate processing an event twice, once f...

Spring Cloud中,Feign常见问题总结

Spring Cloud中,Feign常见问题的总结。 FeignClient接口,不能使用@GettingMapping 之类的组合注解代码示例: 123456@FeignClient("microservice-provider-user")public interface UserFeignClient { @RequestMapping(value = "/simple/{id}", method = RequestMethod...

Spring Cloud中,如何解决Feign/Ribbon第一次请求失败的问题?

Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题,要如何解决该问题呢? 造成该问题的原因Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入fallback代码。而首次请求往往会比较慢(因为Spring的懒加载机制,要实例化一些类),这个响应时间可能就大于1秒了。知道原因后,我们来总结一下解决放你。解决方案有三种,以feign为例。 方法一1hystrix.command.default.ex...

Spring Cloud中,Eureka常见问题总结

Spring Cloud中,Eureka常见问题总结。 指定Eureka的Environment1eureka.environment: 指定环境 参考文档:https://github.com/Netflix/eureka/wiki/Configuring-Eureka 指定Eureka的DataCenter1eureka.datacenter: 指定数据中心 参考文档:https://github.com/Netflix/eureka/wiki/Configuri...