SpringCloud-Ribbon组件
Ribbon组件
是Netflix的开源组件,能实现基于http和tcp的客户端负载均衡,它不需要独立部署,但存在于第一个基于spring cloud构建的微服务应用程序中
负载均衡的概念
也就是分担承受压力
负载匀衡的实现(也就是需要一个负载均衡的服务器)
Ribbon的用法
服务端负载均衡
客户端先访问负载均衡服务器,负载均衡服务器通过负载均衡算法请求进行分发,访问到具体的服务器
客户端负载均衡
服务消费者先通过注册中心获得服务器清单,再通过Ribbon使用负载均衡算法计算服务地址,访问具体的服务提供者
具体实现:
1. 添加依赖:spirng-cloud –starter-netflix-ribbon
包含在srping-cloud-starter-netflix-eureka-client依赖中
2. 为RestTemplate添加@LoadBalance注解
注:该注解在调用商品服务(订单服务中),config类中
3. 增加多个商品服务端:
以同样的方法可以增加多个商品服务
注:如何调用不同服务端口号
RestTemplate的用法
是spring框架提供的Rest客户端,用于调用Rest服务,它基于HTTP和tcp协议,默认依赖jdk的httpURLConnection实现,也可以按需要修改为其他实现,如ApacheHttpComponents,Netty和OKHttp等。
常用方法
Object getForObject Get方法调用
ResponseEntity getForEntity Get方法调用
Object postForObject post方法调用
ResponseEntiy postForEntity post方法调用
Void delete delete方法调用
Void put PUT方法调用
ResponseEntiy exchange 转换方法(put,delete没有返回对象)
也就是远程接口的调用。
负载均衡算法:
这里的所有内置负载均衡策略(也就是有规律的访问服务器(端口))都要实现IRule接口
内置负载均衡策略类
RoundRobinRule 线性轮询
RandomRule 随机选择
WeightedResponseTimeRule 按相应时间分配权重
AvailabilityFileringRule 过滤短路和并发我的服务器
ZoneAvoidanceRule 以可用区域对服务器进行分类
BestAvailableRule 忽略短路并选择并发少的服务器
RetryRule 重试机制
自定义配置方法:
服务器名.ribbon.NFLoadBalancerRuleClassName-com.netflix.loadbalacer.策略名称