Fork me on GitHub

跟我学Spring Cloud(Finchley版)-14-Feign使用Hystrix

Feign默认已经整合了Hystrix,本节详细探讨Feign使用Hystrix的具体细节。 服务降级 加配置,默认Feign是不启用Hystrix的,需要添加如下配置启用Hystrix,这样所有的Feign Client都会受到Hystrix保护! 123feign: hystrix: enabled: true 提供Fallback: 12345678910111213@FeignClient(name = "microservice-provid...

跟我学Spring Cloud(Finchley版)-13-通用方式使用Hystrix

本节详细讲解使用Hystrix的通用方式。 简介Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主要通过以下几点实现延迟和容错。 包裹请求 使用HystrixCommand(或HystrixObservableCommand)包裹对依赖的调用逻辑,每个命令在独立线程中执行。这使用到了设计模式中的“命令模式”。 跳闸机制 当某服务的错误率超过一定阈值时,Hys...

跟我学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 &#12...

跟我学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 use...

跟我学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...