您当前的位置: 首页 >  负载均衡

Dongguo丶

暂无认证

  • 0浏览

    0关注

    472博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Ribbon客户端负载均衡

Dongguo丶 发布时间:2018-05-09 22:34:07 ,浏览量:0

Ribbon

Spring Cloud Netflix Ribbon 是一个客户端负载均衡的组件。

Ribbon的特点

  • 和Eureka完美整合

  • 支持多种协议-HTTP,TCP,UDP

  • 缓存/批处理

  • built in failure resiliency

具体请查看官方文档 : https://github.com/Netflix/ribbon/wiki

整合Ribbon实现客户端的负载均衡

前期准备

这里用到了上次的两个demo(服务注册中心和服务提供者)。  首先,添加服务提供者的服务,这里我将其端口号打印出来能够更加直观地观察到负载均衡的实现:

@RestController
public  class  PrintfController {
     @Value ( "${server.port}" )
     private  String port;
     @RequestMapping ( "/service" )
     public  String printf(){
         System.out.println( "服务消费者正在使用服务,端口号为 : " +port);
         return  "success" ;
     }
}

接下来分别启动这两个工程,注意将服务提供者的端口号(原来为1111改为1112)修改后再启动一次.就整个项目而言,总共有三个微服务再运行着(一个注册中心,两个服务提供者)。PS:其实服务提供者你想弄多少都行。

创建服务消费者

像一个普通的 spring cloud 工程一样,创建后向注册中心注册自己的信息。  添加依赖:

     org.springframework.cloud
     spring-cloud-starter-ribbon

 添加消费调用接口:  这里涉及到一个类LoadBalancerClient,这个就是由 Netflix Ribbon 提供的工具类。他会根据 ServiceId (配置文件中的Service Name)向 Eureka (注册服务器)获取服务地址。

@RestController
public  class  ConsumerController {
     @Autowired
     private  LoadBalancerClient client;
     @RequestMapping ( "/test" )
     public  String test(){
         ServiceInstance instance = client.choose( "service" );
         URI uri = instance.getUri();
         System.out.println(uri);
         return  ( new  RestTemplate()).getForObject(uri+ "/service" ,String. class );
     }
}

 配置文件信息:

# eureka client 配置
spring.application.name=ribbon-consumer
server.port= 2222
eureka.client.serviceUrl.defaultZone=http: //localhost:8761/eureka/

注意:LoadBalancerClient返回的是已经注册的服务器地址。

启动服务消费者

启动工程后,我们可以看到如下注册信息:

这里写图片描述

Ribbon 实现负载均衡

多次访问 http://localhost:2222/test ,并查看控制台信息: 这里写图片描述

这样子,就实现了客户端的负载均衡了~

关注
打赏
1638062488
查看更多评论
立即登录/注册

微信扫码登录

0.0382s