我们的niginx是在服务器上做负载均衡,我们的ribbon是在客户端做负载均衡,所以这里我们就要在客户端去添加依赖,而且我们不仅要在客户端添加ribbon的依赖,还要去添加eureka的依赖,因为我们要从eureka中拿到我们的服务:
依赖导入完毕,我们现在来更改配置:
eureka就配置完了,我们现在可以向三个服务器去获取服务就达到了我们负载均衡的效果了。
别忘了启动类也要加上注解。
我们之前在config中配置了restTemplate,我们现在也要再去写上我们负载均衡的配置:
我们这部分就只需要加上一个注解。
我们原来controller中的服务地址是写死的,我们不应该把它写死,用Ribbon的话应该是写成变量形式。
就是我们服务中心的服务的名称。
我们从这里可以看到信息,就代表我们配置没问题了。
Ribbon 和 Eureka结合以后,客户端可以直接调用,不用关心ip地址和端口号。
我们现在配置完初步的Ribbon之后,我们现在开始去配置负载均衡。
我们再去创建两个数据库:
这三个数据库表中只有数据库名称不一样。
我们现在想对三个数据库做三个提供者。
我们3个服务的名字一定要是一致的,我们就是依靠这个去寻找的。
我们现在三个服务都注册到eureka中了。
我们去启动消费者的查询列表方法:
我们会发现我们每次去从eureka中调用服务会一次按顺序调用我们的数据库(提供者),这就是我们的轮询算法。轮询机制,这是我们Ribbon负载均衡的内部方法。
我们会有这么多的应对负载均衡的算法。
我们默认的是走的是轮询的,我们现在去给它改一下,改成走我们随机的:
我们会发现它调用哪个服务,哪个数据库是随机的。
我们再写一个我们自己的负载均衡算法:
首先要注意我们的自己的配置类不能和启动类放在同包下,这是官方文档告诉我们的。
一般情况下,我们不会在我们的这个RestTemplate下去写自己的负载均衡算法:
我们把我们的之前的随机算法放到我们的自己的类下面。
我们会去在启动类上去表名给哪个服务用哪个算法。
我们现在来去写我们的自定义负载均衡算法:
我们先把人家的随机算法类复制粘贴了。
然后在它的基础上进行修改:
这是我们的一个需求。
我们要把这部分就行修改。
然后就可以了。