第三步写配置:在yml文件中写配置,这里不需要写 。
第四步修改代码:ribbon会根据user-center去nacos中找到请求的真是路径 。
public ShareDTO findById(Integer id) {Share share = this.shareMapper.selectByPrimaryKey(id);Integer userId = share.getUserId();//根据userId查询用户信息UserDTO userDTO = this.restTemplate.getForObject("http://user-center/users/{userId}", UserDTO.class, userId);ShareDTO shareDTO = new ShareDTO();BeanUtils.copyProperties(share, shareDTO);shareDTO.setWxNickname(userDTO.getWxNickname());return shareDTO;}
ok,到这里ribbon就整合完了 。那有人会问,到这就结束了吗?那显然不是,阿七不是浮于表面的人,咱学习一个东西就要刨根问底 。
四、ribbon组成ribbon组件虽小,但是五脏俱全,它的组成都有哪些呢?贴心的我已经为大家准备好了 。
文章插图
同时,ribbon支持8种负载均衡策略,如下所示:
文章插图
这里的Zone本意为地区、地带的意思,这里作机房的架子,也就是放服务器的机架 。那我们实际上没有Zone的,也就是说默认采用的负载均衡策略是RoundRibonRule(轮训策略) 。我们看一下源码,找到RoundRobinRule.JAVA类,其中最主要的就是这一段,实际上就是取余得到访问的server的index 。
private int incrementAndGetModulo(int modulo) {int current;int next;do {current = this.nextServerCyclicCounter.get();next = (current + 1) % modulo;} while(!this.nextServerCyclicCounter.compareAndSet(current, next));return next;}
compareAndSet是AtomicInteger的方法,其实类似参数列表compareAndSwapInt(var1, var2, var5, var4),作为base的var1加上偏移量var2之后和var5比较是不是值相同,相同就update为var4. valueOffset是native的C的方法指针找到的地址 。public final boolean compareAndSet(int expect, int update) {return unsafe.compareAndSwapInt(this, valueOffset, expect, update);}
五、细粒度配置ribbon那我们如何细粒度、自定义配置负载均衡策略呢?比如,内容中心想指定一种负载均衡策略来获取用户中心的实例 。很简单,我们只需要加一下yml配置文件即可 。#指定服务名user-center:ribbon:#负载均衡策略的全路径NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
这样我们就修改ribbon负载均衡策略为RandomRule,也就是随机获取一个实例 。六、ribbon解饿加载在实际代码运行中发现,当我们第一次请求http://localhost:8889/shares/1这个接口时,运行结果是很慢的,为什么呢?因为ribbon默认是懒加载 。只有在下面代码第一次执行的时候,才会创建一个名叫user-center的ribbon client 。
//根据userId查询用户信息UserDTO userDTO = this.restTemplate.getForObject("http://user-center/users/{userId}", UserDTO.class, userId);
我们可以通过修改yml配置文件来解决这个问题 。ribbon:eager-load:enabled: true#多个用逗号隔开 user-center,xxx,yyyclients: user-center
这样就可以第一次请求也变得很快啦 。好了ribbon就学习到这里了 。但是,我们的代码还是存在很多问题的,那么下一篇我们将一起学习声明式http客户端--feign,一起将代码优化的更好吧 。
喜欢的朋友记得点个关注吧,一起探讨,共同进步 。
【你要的负载均衡Ribbon,来了】
推荐阅读
- 现在,你可以直接在Windows 10上打开安卓app了
- 老曼峨普洱茶功效,你喝的茶来自哪儿老曼峨
- 姜伏茶做法你知道吗,姜红糖茶的做法
- iPhone|iPhone 14曝光 接口大升级:苹果逼你买Pro版 独享USB 3.0
- 最浪漫的情人节告白词让你告别单身
- 教你辨别真假碧螺春茶,碧螺春茶健康饮用介绍
- 红糖姜茶减肥你会吗,孕妇可以喝红糖姜茶吗
- 苹果彻底删除的照片还能恢复吗?两招帮你解决困扰
- 对于网络推广,你不得不知道的精准投放
- 如何做好手机端网页设计