我是个小菜鸡,写了一个系列,面向初学者,有什么错误忘大佬们及时指出加以改正,这个系列主要有eureka、ribbon、feign、hystrix、gateway,简单的搭建与使用
Ribbon
上一篇链接:https://blog.csdn.net/weixin_42699857/article/details/103697462
我是在这个基础上继续写demo的
一、什么是ribbon
负载均衡,与eureka配合使用,ribbon自动从eureka中获取服务信息,在调用服务节点提供的服务时,进行合理的负载均衡
1、 服务调用
不需要引入太多外部类,eureka内部集成,可以直接使用
首先我们新建一个测试的controller,这里我用一个简单的表格做实验,数据库用mysql
PreductServer的controller里面写一个方法进行测试
现在我们可以测试一下页面上的返回数据
OrdeServerr里面进行比对测试代码
最开始我们如果要在orderServer里面调用prudectServer的接口时要这样拿到
这个在上一个模块,springcloud之eureka里面有讲到过,那么现在我们要改一下这样的方法,因为有点麻烦,我们直接使用ribbon用那么调用,先改一下orderServer的启动类
再修改一下controller里面的方法
现在我们再启动一下orderServer,看看是否调用了prudectServer
2、 负载均衡
客户端— ---服务端A/服务B/服务C等等,那么负载均衡就是再转发到各个微服务之前添加负载均衡器,由负载均衡器来去挑选,这个请求应该发送到哪一个服务上,
那么ribbon是一个典型的客户端负载均衡器,他首先拿到请求,根据内部算法进行计算,获取本次请求的有效地址
下面进行测试demo:
第一步,我们准备两个prudectserver进行测试,还用刚才我们改过的order的controller,两个prudectserver除了端口不一样其他完全一样,一个端口9091,一个9081
这个我们启动以后能看到现在信息被做了修改
现在我们再orderserver里面调用一下这两个接口
第一次进来的时候看到这个IP是这个
点击刷新发现IP变了
我们一直点刷新就会发现这个一直在变,那么多个服务端也一样,现在我们就能发现,eureka内置的负载均衡ribbon就是不断地再各个服务之间来回切换,从A切换到B,再切换到A一直反复,这个就是ribbon的客户端负载均衡,即轮询策略,一个节点一次,当然这个也可以切换
关于策略选择
1、 如果每台机器配置差不多,一般我们轮询策略用的多(默认),不建议修改
2、 如果机器差异比较大,建议按照实际情况选择权重策略
策略修改
修改比较简单,不粘贴代码了,规则就是
服务名称 – ribbon –
NFLoadBalancerRuleClassName: 策略
比如我的prudectServer就是
prudect-client;
ribbon:
NFLoadBalancerRuleClassName: 策略
3、 重试机制
那么如果消费者通过ribbon服务发送到A,A网络不稳定,那么这种情况怎么办,ribbon里面有一个重试机制,请求连接超时时间,返回数据时间,超过时限立马把请求发送到B
我们现在来模拟一下重试机制
首先再orderserver里面引入pom支持
然后配置文件上打日志
现在我们正常启动orderserver以后依然可以链接9091、9081两个端口,那么,现在我们把9091端口断开,模拟服务器挂掉,现在我们刷新就会发现,每一次走到9081的时候正常,走到9091的时候就会报错
模拟完毕,我们现在开始进行配置重试机制
现在我们全部重启以后依然断开9091端口,刷新orderServer的url,第一次刷新以后是9081端口正常,第二次的话按照轮询策略应该是9091,断开9091以后应该报错,那么我们刷新以后发现依然是9081,现在我们反过头来看日志
这里就开始重新连接了
第二部分over