怎样做电商网站好视频教学,网站搭建排名优化,建行卡如何网上签约,北京最大公司排名Ribbon是一个基于HTTP和TCP的客户端负载均衡工具#xff0c;不需要独立部署#xff0c;几乎存在于每一个springcloud构建的微服务和基础设施中。 微服务间调用#xff0c;API网关的请求转发都通过Ribbon实现。
负载均衡
通常所说的负载均衡都是指的服务端负载均衡#xf…Ribbon是一个基于HTTP和TCP的客户端负载均衡工具不需要独立部署几乎存在于每一个springcloud构建的微服务和基础设施中。 微服务间调用API网关的请求转发都通过Ribbon实现。
负载均衡
通常所说的负载均衡都是指的服务端负载均衡包括硬件和软件如软件的nginx。而ribbon是一个客户端负载均衡客户端负载均衡中所有客户端节点维护自己要访问的服务端清单与服务注册中心配合完成。springcloud的服务治理框架默认会整合ribbon如Eureka。
在微服务架构中使用客户端负载均衡调用两步 服务提供者只需要启动多个服务实例并注册到一个注册中心或是多个相关联的服务注册中心。 服务消费者直接通过调用被LoadBalanced注解修饰过的RestTemplate来实现面服务的接口调用。 服务消费者的两个目标发现服务和消费服务发现服务由Eureka的客户端完成通过EnableDiscoveryClient注解让应用注册为Eureka客户端应用获得服务发现能力服务消费任务由ribbon完成应用主类中创建RestTemplate的SpringBean实例通过LoadBalanced注解开启客户端负载均衡 Eureka包含了ribbon当ribbon与Eureka联合使用时ribbon的服务实例清单会被扩展为从Eureka注册中心获取服务端列表。 还使用文章中的例子 Springcloud笔记2-Eureka服务注册中心-CSDN博客
服务消费 在 j-cloud-sonsumer的 HelloController.java代码
RestController
public class HelloController {BeanLoadBalancedpublic RestTemplate getResttemplate(){return new RestTemplate();}Autowiredprivate RestTemplate resttemplate;RequestMapping(/hello)public String hello(){//指出服务地址 http://{服务提供者应用名名称}/{具体的controller}String urlhttp://provider-user/user/sayHello;//返回值类型和我们的业务返回值一致return resttemplate.getForObject(url, String.class);}} 1、创建RestTemplate的Spring Bean实例并通过LoadBalanced注解开启客户端 负载均衡。
2、在接口实现中调用RestTemplate创建的实例使用getForObject方法实现对服务提供的/user/sayHello接口进行调用可以看到这里的服务名为provider-user。
启动消费者访问查看控制台Ribbon输出了当前客户端维护的provider-user的服务列表情况。其 中包含了各个实例的位置Ribbo就是按照此信息进行轮询访问以实现基于客户 端的负载均衡。另外还输出了一些其他非常有用的信息如对各个实例的请求总数 量、第一次连接信息、上一次连接信息、总的请求失败数量等。
使用ribbon来实现服务消费ribbon对服务列表进行轮询实现负载均衡
RestTemplate
RestTemplate 该对象会使用Ribbon的自动化配置通过配置LoadBanlanced开启客户端负载均衡。 在RestTemplate 中对GET请求通过如下两个方法进行调用实现。 1getForEntity 2) getForObject POST请求三个方法进行调用实现 1postForEntity 2) postForObject 3) postForLocation
Ribbon支持的负载均衡策略
Ribbon内置了多种负载均衡策略,内部负载均衡的顶级接口为
com.netflix.loadbalancer.IRule
可以通过修改配置来调整Ribbon的负载均衡策略具体代码如下 service-product: # 调用的提供者的名称 ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule