美文网首页Spring cloud
SpringCloud-Ribbon-01入门介绍

SpringCloud-Ribbon-01入门介绍

作者: 小亮__ | 来源:发表于2019-06-23 09:56 被阅读9次

在微服务之前,传统项目需要横向扩展,一般都会使用Ngnix作为负载均衡策略,在前端请求过来之前将请求转发至底层的服务器,
但是在微服务情况下,负载均衡如何考虑,难道需要在每个微服务之间都增加Nginx么?看上去好像也没有什么问题,但是如果微服务达到一定量的时候,超过100个微服务,那么Nginx的配置就超级复杂了,这时我们可以使用Ribbon解决这样的问题

Nginx配置的方式-->代理到多个Tomcat这样的架构,业界称之为”服务端负载均衡“,Nginx维护了各个需要调用节点的信息,
Ribbon的实现方式,则是一种基于”客户端负载均衡策略“

Ribbon简介

Ribbon是Netflix发布的负载均衡器,可以帮助我们控制HTTP,TCP客户端的行为,只需要为Ribbon配置服务提供者的调用地址列表信息,Ribbon就可以在客户端完成基于负载均衡算法,计算出要请求的地址。
Ribbon默认为我们提供了,例如轮询,随机,响应时间加权等短发,同也支持我们自定义自己的负载均衡算法

Cousul配置Ribbon

在SpringCloud中,Ribbon可以与Consul配合使用,这样Ribbon就可以从consul中获得服务提供者的调用地址信息。然后便可以基于自身配置的负载均衡算法,选择其中某个服务实例进行调用

Demo

添加依赖,consul-discovery整合了ribbon

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

增加注解,使用LoadBlanced注解,让RestTemplate整合Ribbon

@Bean
@LoadBalanced
public RestTemplate restTemplate() {
  return new RestTemplate();
}

客户端调用,根据ID查询用户信息

@test
public User findById() {
  User user = this.restTemplate.getForObject( "http://server-user/users/{id}", User.class, id);.
  return user;
}

调用参数中,地址信息格式:http://{目标服务名称}/{目标服务端点}。Ribbon会自动在实际调用时,将目标服务替换成IP和端口

相关文章

网友评论

    本文标题:SpringCloud-Ribbon-01入门介绍

    本文链接:https://www.haomeiwen.com/subject/atqiqctx.html