Fork me on GitHub

跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络通信的,网络可能出问题;微服务本身也不可能100%可用。 如何提升应用的可用性呢?这是我们必须考虑的问题—— 举个例子:某大型系统中,服务A调用服务B,某个时刻,微服务B突然崩溃了。微服务A中,依然有大量请求在请求B,如果没有任何措施,微服务A很可能很快就会被拖死——因为在Java中,一次请...

跟我学Spring Cloud(Finchley版)-11-Feign常见问题总结

TIPS 本文基于Spring Cloud Finchley编写,如需阅读更新、更全的总结文章,详见: 如何使用Feign构造多参数的请求 本文总结Feign常见问题及解决方案。 一、FeignClient接口如使用@PathVariable ,必须指定value属性代码示例: 123456@FeignClient("microservice-provider-user")public interface UserFeignClient { @Reque...

跟我学Spring Cloud(Finchley版)-10-Feign深入

上一节( 跟我学Spring Cloud(Finchley版)-09-Feign )讲了Feign的入门姿势并深入对比了RestTemplate,本节来深入探讨Feign的高级特性。总的来说,Feign是一个相对简单的组件,但细节还是比较多的,一不小心就可能入坑,注意点我会以WARINING的形式标记出来,便于读者查阅。 Feign配置自定义【细粒度配置】方式一、代码配置方式Spring Cloud Netflix provides the following bean...

Spring Cloud系列教程

Spring Cloud 技术讨论微信群:加群导航 本文列出笔者所有Spring Cloud相关的文章。共计80+篇,包括系列教程、新特性总结、技巧 & 提升 & 源码分析、对未来的一些看法等。 本文旨在打造全面的Spring Cloud贴——常见问题、容易踩到的坑等都应该能覆盖到;如果没有,请联系我微信 jumping_me 给我提需求。 一、跟我学Spring Cloud系列1.1 主线 跟我学Spring Cloud(Finchley版)-01...

跟我学Spring Cloud(Finchley版)-09-Feign

经过前文讲解,我们已使用Eureka实现服务发现;使用Ribbon实现了负载均衡这种听起来很高端的东西。我们的架构已经初具雏形,但依然存在很多问题,下面不妨来分析下前文的代码—— 1234567891011@GetMapping("/users/{id}")public User findById(@PathVariable Long id) { // 这里用到了RestTemplate的占位符能力 User user = this.r...

跟我学Spring Cloud(Finchley版)-08-Ribbon深入

上一节讲了Ribbon的入门姿势,本节深入探讨Ribbon的高级特性。 内置负载均衡规则负载均衡规则是Ribbon的核心,下面来看一下Ribbon内置的负载均衡规则。 AvailabilityFilteringRule:过滤掉一直连接失败的被标记为circuit tripped的后端Server,并过滤掉那些高并发的后端Server或者使用一个AvailabilityPredicate来包含过滤server的逻辑,其实就就是检查status里记录的各个Server的运...

跟我学Spring Cloud(Finchley版)-07-Ribbon入门

经过前文讲述,我们已经实现了服务发现。本节来解决 跟我学Spring Cloud(Finchley版)-02-构建分布式应用 提到的如下问题: 负载均衡如何考虑?难道得在电影微服务和用户微服务之间加个NGINX做负载均衡吗?听起来是可行的,但如果有10000+服务(这并不夸张,我司的微服务数目是这个数字乘以N,N >= m,哈哈哈)那这个NGINX的配置得有多复杂…… 一般来说,提到负载均衡,大家一般很容易想到浏览器 -> NGINX -> 反向代...

跟我学Spring Cloud(Finchley版)番外-01-Eureka安全详解

前文的示例中,Eureka Server都是允许匿名访问的,该方式一般无法满足公司在安全性上的诉求。 本节来构建一个需要登录才能访问的Eureka Server。Eureka本身不具备安全认证的能力,Spring Cloud使用Spring Security为Eureka Server进行了增强。 Eureka Server端改造 加依赖 1234<dependency> <groupId>org.springframework.boot&lt...

跟我学Spring Cloud(Finchley版)-06-服务注册与服务发现-Eureka深入

在跟我学Spring Cloud(Finchley版)-05-服务注册与服务发现-Eureka入门 一节中,已经编写了一个Eureka Server,并将服务提供者与消费者都注册到了Eureka Server上。 本节,来深入探讨Eureka的高级特性。 Eureka原理本节来探讨Eureka的原理。 Region & Availability Zone下面分析一下Eureka原理,在分析原理前,先来了解一下Region和Availability Zone,如下...

跟我学Spring Cloud(Finchley版)-05-服务注册与服务发现-Eureka入门

本节讲解基于Eureka的服务发现。 Eureka简介Eureka是Netflix开源的服务发现组件,本身是一个基于REST的服务,包含Server和Client两部分,Spring Cloud将它集成在子项目Spring Cloud Netflix中。 拓展阅读 Eureka的GitHub:https://github.com/Netflix/Eureka Netflix是一家在线影片租赁提供商。 Eureka的典故:阿基米德发现浮力时,非常开心,于是说:“Eu...