Ribbon & Feign 简述
文章目录
Ribbon & Feign
Ribbon
Ribbon 概述
- Ribbon 是客户端负载均衡器
- Ribbon 服务发现
- Ribbon 服务选择规则
- Ribbon 服务监听
Ribbon IRule算法
IRule算法 | 算法描述 |
---|---|
RoundRobinRule | 轮询规则 |
RandomRule | 随机规则 |
AvailabilityFilteringRule | 可用过滤规则 |
WeightedResponseTimeRule | 根据平均响应时间计算 |
RetryRule | 遵循RoundRobin规则,但会对失败的服务进行重试 |
BestAvailableRUle | 结合了可用过滤规则和响应时长规则 |
ZoneAvoidanceRule | 复合判断server所在区域性能和可用性选择服务器 |
Ribbon核心之IPing
- IPing 是Ribbon保证服务可用性的基石
- 常见实现:
NIWSDiscoveryPing
,PingUrl
- IPing算法:
IPing算法 | 算法描述 |
---|---|
NIWSDiscoveryPing | 不执行Ping操作, 根据Eureka Client 的反馈判断存活 |
PingUrl | 使用HttpClient对服务进行Ping操作 |
DummyPing | 默认返回true |
NoOpPing | 永远返回true |
Ribbon 核心之ServerList
- ServerList是Ribbon存储的可用服务列表
- ServerList 可以手动设置
- ServerList 常见应用是从Eureka中自动获取
Ribbon参数配置
- 默认参数配置:
DefaultClientConfigImpl
- Ribbon Key 定义:
CommonClientConfigKey
- Ribbon 参数分为全局配置和指定客户端配置
- 参数格式:
<client>
.ribbon.<key>
=<value>
Feign
Feign是什么
Feign是一个声明式WebService客户端.使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解.Feign也支持可拔插式的编码器和解码器.Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters.Feign可以与Eureka和Ribbon组合使用以支持负载均衡.
Feign Http 性能优化
- Feign 默认使用 JDK 自带的 HTTP 方式, 更换HTTP 底层实现(Apache HttpClient, OkHttp)
- HTTP 数据压缩, Feign 可以支持 GZip 的请求压缩
Feign 简化开发
- Feign 继承
– end
–
如有问题,请留言或者发送邮件,感谢您的阅读
欢迎关注博主公众号
: