微服务负载均衡器Ribbon

微服务负载均衡器Ribbon

下图为微服务架构图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nxLVH1xO-1660923544987)(…/blog_img/20220728161129.png)]

目前主流有两种负载均衡方案:

  • 集中式负载均衡:在客户端和服务端中间使用独立的代理方式进行负载,有硬件的(比如 F5),也有软件的(比如Nginx)。
  • 客户端负载均衡:即在客户端就进行负载均衡算法来选择服务端。Ribbon就属于客户端负载均衡。

SpringCloud Ribbon是基于Netflix Ribbon 实现的一套客户端的负载均衡工具。Ribbon先获取到提供的所有服务实例,之后Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。

什么是客户端负载均衡?
客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问。即在客户端就进行负载均衡算法分配。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WwzYaRgg-1660923544991)(…/blog_img/ribbon20220804161456.png)]

什么是集中式负载均衡?
例如通过Nginx进行负载均衡,先发送请求,然后通过负载均衡算法,在多个服务器之间选择一个进行访问;即在服务器端再进行负载均衡算法分配。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mWzVaNom-1660923544993)(…/blog_img/ribbon20220804162054.png)]

1.常见的负载均衡算法

  • 随机:通过随机选择服务进行执行,一般这种方式使用较少;
  • 轮询:负载均衡默认实现方式,请求进来之后排队处理;
  • 加权轮询:通过对服务器性能的分型,给高配置,低负载的服务器分配更高的权重,均衡各个服务器的压力;
  • 最小链接数:根据服务器的情况,比如请求积压数等参数,将请求分配到当前压力最小的服务器上。

2. Spring Cloud Alibaba 引入ribbon

ribbon的负载均衡方案主要是客户端负载均衡,即当客户端调用多个同名服务端集群时,可以通过ribbon来负载均衡。

① 引入ribbon:Nacos2.2.8版本内置了ribbon。当引入nacos依赖时,可不引入ribbon依赖。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NDqt4Cqx-1660923544994)(…/blog_img/ribbon20220804164526.png)]

②:修改服务调用者的配置文件,注意这个配置idea没有提示。

# 针对某个这个服务提供者,ribbon使用的负载策略
# user-service是注册中心中某个服务提供者的服务名
# com.alibaba.cloud.nacos.ribbon.NacosRule 这个是基于权重&随机的负载策略算法
user-service.ribbon.NFLoadBalancerRuleClassName=com.alibaba.cloud.nacos.ribbon.NacosRule

③:运行服务,之后多次调用服务提供者user-service的某个接口,观察端口的变化。可以看出负载均衡生效。

//order和order2两个服务都在注册中心的注册名为user-service
//这两个服务的都有下面的接口。区别是各自占用的端口不同。
@RestController
@RequestMapping("/order")
public class orderController {
    @Value("${server.port}")
    private String port;
    @RequestMapping("/get")
    public String getOrder(){
        return "order "+port;
    }
}

3.LoadBalancer和Ribbon的区别?

Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器,用来替代已经闭源的Ribbon。

目前由于LoadBalancer只支持轮询的负载均衡策略,没有Ribbon强大,所以暂时不建议用LoadBalancer去替换Ribbon。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值