微服务体系<2> ribbon

1. 什么是负载均衡  比如说像这样 一个请求打在了nginx上  基于nginx进行负载分流
这就是负载均衡

微服务体系<2> ribbon_第1张图片

但是负载均衡分 服务端负载均衡和客户端负载均衡 

客户端负载均衡  我user 从注册中心拉取服务 拉取order列表,然后发起getOne()调用
这就是客户端负载均衡
特点就是我客户端可以拉取到服务端列表


服务端负载均衡  服务端怎么处理负载均衡
就像nginx一样  就可以在nginx中的upstream中配置  订单服务的列表  
我消费者只需要获取到nginx地址就可以了  真正调用呢个服务是由nginx来做的

微服务体系<2> ribbon_第2张图片

负载均衡算法
随机
轮询
加权轮询
地址Hash 根据ip 进行取模

微服务体系<2> ribbon_第3张图片

怎么去使用 ribbon就是一个负载均衡器  
基于resttemplate发起调用

微服务体系<2> ribbon_第4张图片

我们只需要在resttemplate上面添加一个@Lb注解 就可以实现负载均衡的调用了
@Lb得作用就是让我们的RestTemplate的调用框架具备负载均衡能力

微服务体系<2> ribbon_第5张图片

如果我不配置 @Lb会报错
@Lb的作用就是吧mall-order 替换成 ip:port 然后基于负载均衡算法发起调用

微服务体系<2> ribbon_第6张图片

nacos-discovery 引入依赖  快速开始 因为nacos-discovery 
中引入了ribbon的依赖

微服务体系<2> ribbon_第7张图片

在我们的resttemplate上添加一个@Lb注解 就让我们的resttemplate具备负载均衡的能力
然后就让微服务发起调用

内部@Lb是怎么做的 
我们的@Lb干一件事情就是
利用负载均衡算法从多个节点中获取一个  再把微服务名字替换成ip:port
将mall-order 替换成ip:port  然后基于ip:port发起调用
之后就可以正常发起调用

微服务体系<2> ribbon_第8张图片

Ribbon中有一个,Irule 负载均衡策略
NacosRule优先调用同一个集群   基于随机权重的


微服务体系<2> ribbon_第9张图片

我们可以全局配置负载均衡策略

微服务体系<2> ribbon_第10张图片

也可以局部指定具体哪一个微服务
局部配置 基于yaml配置
具体到某一个微服务 使用什么负载策略

微服务体系<2> ribbon_第11张图片

微服务的调用
当postman第一次发请求的时候 有一些慢   第二次发请求的时候就快了    

微服务体系<2> ribbon_第12张图片
微服务体系<2> ribbon_第13张图片

为什么会这样 因为第一次调用要干的事情:因为第一次会  拉取服务 进行缓存 第二次直接从缓存中去取的

微服务体系<2> ribbon_第14张图片

这是一种优化 意味着  服务启动的时候就把mall-order拉取过来了
再发起请求的时候 就不用初始化了
我直接从本地拉缓存就可以了

Ribbon的使用

微服务体系<2> ribbon_第15张图片

在resttemplate发起调用的组件上面加上@Lb注解 就具备负载均衡的能力了  就可以发起调用
核心就是注入一个拦截器,拦截器的作用基于mall-order拉取服务列表
然后再根据负载均衡算法发起调用

你可能感兴趣的:(微服务,ribbon,架构)