通过方法重载开启缓存
如果我们使用了自定义Hystrix请求命令的方式来使用Hystrix,那么我们只需要重写getCacheKey方法即可实现请求缓存,如下:
1 | public class BookCommand extends HystrixCommand<Book> { |
如果我们使用了自定义Hystrix请求命令的方式来使用Hystrix,那么我们只需要重写getCacheKey方法即可实现请求缓存,如下:
1 | public class BookCommand extends HystrixCommand<Book> { |
Spring Cloud Hystrix 的服务降级与异常处理
前面两篇文章中,fallbackMethod所描述的函数实际上就是一个备胎,用来实现服务的降级处理,在注解中我们可以通过fallbackMethod属性来指定降级处理的方法名称,在自定义Hystrix请求命令时我们可以通过重写getFallback函数来处理服务降级之后的逻辑。使用注解来定义服务降级逻辑时,服务降级函数和@HystrixCommand注解要处于同一个类中,同时,服务降级函数在执行过程中也有可能发生异常,所以也可以给服务降级函数添加‘备胎’,如下:
1 | @HystrixCommand(fallbackMethod = "error1") |
我们除了使用@HystrixCommand注解,也可以自定义类继承自HystrixCommand,如下:
1 | public class BookCommand extends HystrixCommand<Book> { |
这是所有负载均衡策略的父接口,里边的核心方法就是choose方法,用来选择一个服务实例。
AbstractLoadBalancerRule是一个抽象类,里边主要定义了一个ILoadBalancer,就是负载均衡器。这里定义它的目的主要是辅助负责均衡策略选取合适的服务端实例。
首先我们需要在服务消费者中引入hystrix,如下:
1 | <dependency> |
首先我们来看一张上篇文章中的旧图:
这是ILoadBalancer接口的一张类关系图,我们就从这张图里看起吧。
AbstractLoadBalancer类的定义如下:
Spring Cloud RestTemplate 负载均衡
开启负载均衡很简单,只需要在RestTemplate的bean上再添加一个@LoadBalanced注解即可,所以本文我们就从这个注解开始我们的分析吧。
首先我们来看看@LoadBalanced注解的源码:
1 | /** |
负载均衡是我们处理高并发、缓解网络压力和进行服务端扩容的重要手段之一,但是一般情况下我们所说的负载均衡通常都是指服务端负载均衡,服务端负载均衡又分为两种,一种是硬件负载均衡,还有一种是软件负载均衡。
硬件负载均衡主要通过在服务器节点之间安装专门用于负载均衡的设备,常见的如F5。
软件负载均衡则主要是在服务器上安装一些具有负载均衡功能的软件来完成请求分发进而实现负载均衡,常见的就是Nginx。
无论是硬件负载均衡还是软件负载均衡,它的工作原理都不外乎下面这张图:
Spring Cloud RestTemplate 中几种常见的请求方式
首先我们要搭建一个测试环境,方便我们一会验证相应的API。
创建好的maven项目如下图所示:
其中commons是一个公共模块,是一个普通的JavaSE工程,我们一会主要将实体类写在这个模块中,provider和consumer是两个spring boot项目,provider将扮演服务提供者的角色,consumer扮演服务消费者的角色。
最小化安装CentOS 8快速编译安装GCC10.2.0最新版本
本文介绍了个人认为最简单的 CentOS 编译安装最新版 gcc 的方法。已将安装包一并打包上传。点击 gcc-10.2.0-all.tar.gz 获得。
CentOS 8 1905 最小化(minimal)