服务调用
微服务基本组成
Ribbon
简介
SpringCloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡工具,主要是提供客户端的软件负载均衡算法和服务调用,一句话就是负载均衡+RedisTemplate调用
Ribbon本地负载均衡和Nginx服务端负载均衡区别
- Nginx是服务器负载均衡,客户端所有请求都会交给Nginx,然后由Nginx实现转发请求,负载均衡由服务端调用
- Ribbon本地负载均衡,在调用服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术
新版的Eureka-Client已经自带了Ribbon了,不用再引入
RedisTemplate
getForObject/postForObject方法:返回对象为响应体中数据转化成的对象,基本上可以说是Json
getForEntity/postForEntity方法:返回对象为ResponseEntity对象,包含响应头,响应码等相关信息
1 |
|
IRule
Ribbon自带负载均衡算法接口
名称 | 负载均衡方式 |
---|---|
RoundRobinRule | 轮询 |
RandomRule | 随机 |
RetryRule | 先按照RoundRobinRule的策略获取服务 如果获取服务失败则在指定时间内会进行重试 |
WeightedResponseTimeRule | 对RoundRobinRule的扩展,响应速度越快的实例选择权重越大,越容易被选择 |
BestAvailableRule | 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务 |
AvailabilityFilteringRule | 先过滤掉故障实例,再选择并发较小的实例 |
ZoneAvoidanceRule | 默认规则,复合判断server所在区域的性能和server的可用性选择服务器 |
基本使用
修改Ribbon默认的负载均衡方式配置,不能和主启动类在一个包下,即不能被@ComponentScan扫描到
自定义规则
1 |
|
主启动类上配置注解
1 |
|
负载均衡
OpenFeign
简介
Feign是一个声明式WebService客户端,使用Feign能让编写WebService客户端更简单
它的使用用方法是定义一个服务接口然后在上面添加注解,Feign也支持可拔插式的编码器和解码器。SpringCloud对Feign进行了封装,使其支持了SpringMVC标准注释和HTTPMessageConverters,Feign可以与Eureka和Ribbon组合使用来负载均衡
使用
导入pom
1 |
|
启动类开启
1 |
|
配置接口类
1 |
|
超时配置
OpenFeign默认等待的时间是1秒钟,超时就报错,因为OpenFeign默认集成了Ribbon,有负载均衡的功能,所以可以在yml文件中设置超时等待时间
1 |
|
日志增强
级别 | 解释 |
---|---|
NONE | 默认,不显示日志 |
BASIC | 仅记录请求方法、URL、响应状态码及执行时间 |
HEADERS | 除了BASIC中定义的信息外,还有请求和响应的头信息 |
FULL | 除了HEADERS中的信息外,还有请求和响应的正文及元数据 |
设置配置类
1 |
|
添加yml
1 |
|