在实战三中,咱们曾说到,咱们须要一种机制,能够在访问服务的时候不须要关心IP,而且还能提供相似Nginx的负载均衡的功能,其实在上一篇文章中咱们已经使用过spring-cloud的负载均衡功能了,还记得咱们在配置restTemplate的时候加的注解吗?
git
@LoadBalanced就是告诉restTemplate,须要使用负载均衡,而且,在eureka-client消费者消费服务的时候,只能经过@LoadBalanced才能使用eureka-server中的服务application-name来访问服务.eureka中的负载均衡,是借助ribbon来实现的,让咱们来试一试.老规矩,经过前面这么屡次的实践,咱们会发现使用spring-cloud的功能通常有三个步骤:
1.配置maven依赖
2.配置application.properties
3.进行代码编码.
首先配置maven:
github
但其实若是使用了eureka,就不须要这个步骤了,由于eureka中已经内置了ribbon了:
spring
默认状况下,@LoadBalanced的负载均衡策略是轮询,咱们使用producer修改代码,启动三个微服务注册到eureka,而后在consumer来验证一下:
数组
能够看到,咱们已经注册了三个producer微服务,而后使用consumer来访问一下:
app
再刷新一下:
负载均衡
再刷新一下:
maven
再刷新一下:
微服务
能够看到,默认状况下采用的是轮询的方式,那么若是咱们要自定义负载均衡策略能实现吗?答案固然是能够,自定义负载策略分为两种:
1.全局负载均衡策略
2.针对某个微服务定制个性化的负载均衡策略编码
要实现全局的负载均衡策略很简单,咱们只须要以下代码便可:
3d
而后重启consumer刷新试一试,能够发现,采用的是随机的负载均衡策略.
个性化的负载均衡策略相对于全局负载均衡策略更复杂一些,首先,须要在spring扫描不到的位置,好比和主类不在同一个目录下:
而后修改启动类:
若是有多个须要自定义的服务,可使用@RibbonClients用数组来处理.
那么,若是脱离eureka来使用ribbon还能使用吗?答案固然是能够的,只不过相对而言更复杂,咱们须要本身编写代码来实现,好比:
介绍完了ribbon,下一篇文章,咱们会介绍feign接口服务,敬请期待.
本文由博客一文多发平台 OpenWrite 发布!