Ribbon-微服务注册中心(Ribbon概述 基于Ribbon实现订单调⽤商品服务 服务调⽤Ribbon⾼级 )

目录

一、Ribbon概述

1. 什么是Ribbon

 2. Ribbon的主要作⽤

二、基于Ribbon实现订单调⽤商品服务

1. 坐标依赖

 2. ⼯程改造

三、服务调⽤Ribbon⾼级 

1. 负载均衡概述

2. 客户端负载均衡与服务端负载均衡 

3. 基于Ribbon实现负载均衡 

3.1 搭建多服务实例

3.2 负载均衡策略 


一、Ribbon概述

1. 什么是Ribbon

        ribbon是 Netflixfa 发布的⼀个负载均衡器,有助于控制 HTTP 和 TCP客户端⾏为。在 SpringCloud 中, Nacos⼀般配合Ribbon进⾏使⽤,Ribbon提供了客户端负载均衡的功能,Ribbon利⽤从Nacos中读取到的服务信息,在调⽤服务节点提供的服务时,会合理的进⾏负载。
        在SpringCloud中可以将注册中⼼和Ribbon配合使⽤,Ribbon⾃动的从注册中⼼中获取服务提供者的列表信息,并基于内置的负载均衡算法,请求服务

 2. Ribbon的主要作⽤

服务调⽤

        基于Ribbon实现服务调⽤, 是通过拉取到的所有服务列表组成(服务名-请求路径的)映射关系。借助RestTemplate 最终进⾏调⽤
负载均衡
当有多个服务提供者时,Ribbon可以根据负载均衡的算法⾃动的选择需要调⽤的服务地址

二、基于Ribbon实现订单调⽤商品服务

1. 坐标依赖

在springcloud提供的服务发现的jar中以及包含了Ribbon的依赖。所以这⾥不需要导⼊任何额外的坐标

 2. ⼯程改造

( 1 )服务提供者
控制台打印查询商品的信息
( 2 )服务消费者
在创建RestTemplate⽅法 上添加 @LoadBalanced 注解
通过服务名称消费使⽤
restTemplate . getForObject ( "http://商品服务名称/product/1" , Product . class );

三、服务调⽤Ribbon⾼级 

1. 负载均衡概述

        在搭建⽹站时,如果单节点的 web服务性能和可靠性都⽆法达到要求;或者是在使⽤外⽹服务时,经常担⼼被⼈攻破,⼀不⼩⼼就会有打开外⽹端⼝的情况,通常这个时候加⼊负载均衡就能有效解决服务问题。
         负载均衡是⼀种基础的⽹络服务,其原理是通过运⾏在前⾯的负载均衡服务,按照指定的负载均衡算法,将流量分配到后端服务集群上,从⽽为系统提供并⾏扩展的能⼒。
        负载均衡的应⽤场景包括流量包、转发规则以及后端服务,由于该服务有内外⽹个例、健康检查等功能,能够有效提供系统的安全性和可⽤性

2. 客户端负载均衡与服务端负载均衡 

服务端负载均衡
先发送请求到负载均衡服务器或者软件,然后通过负载均衡算法,在多个服务器之间选择⼀个进⾏访问;即在服务器端再进⾏负载均衡算法分配
客户端负载均衡
客户端会有⼀个服务器地址列表,在发送请求前通过负载均衡算法选择⼀个服务器,然后进⾏访问,这是客户端负载均衡;即在客户端就进⾏负载均衡算法分配

3. 基于Ribbon实现负载均衡 

3.1 搭建多服务实例

通过idea再启动⼀个 shop-product 微服务,设置其端⼝为8087
分别启动两次服务器验证效果,并查看两个控制台发现已轮询的⽅式调⽤了商品服务
在之前nacos的代码就行演示
只需要在yml文件添加这个就行--以轮询的⽅式进⾏负载均衡
#需要调用的微服务名称
service-product:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

一直访问这页面 看看负载

结果

3.2 负载均衡策略 

Ribbon内置了多种负载均衡策略,内部负责复杂均衡的顶级接⼝为
  • com.netflix.loadbalancer.RoundRobinRule :以轮询的⽅式进⾏负载均衡
  • com.netflix.loadbalancer.RandomRule :随机策略
  • com.netflix.loadbalancer.RetryRule :重试策略
  • com.netflix.loadbalancer.WeightedResponseTimeRule :权重策略。会计算每个服务的权重,越⾼的被调⽤的可能性越⼤
  • com.netflix.loadbalancer.BestAvailableRule :最佳策略。遍历所有的服务实例,过滤掉故障实例,并返回请求数最⼩的实例返回
  • com.netflix.loadbalancer.AvailabilityFilteringRule :可⽤过滤策略。过滤掉故障和请 求数超过阈值的服务实例,再从剩下的实⼒中轮询调⽤
  • ZoneAvoidanceRule:以区域可⽤的服务器为基础进⾏服务器的选择。使⽤Zone对服务器进⾏分类,这个Zone可以理解为⼀个机房、⼀个机架等。⽽后再对Zone内的多个服务做轮询
⾃定义负载均衡策略
⽅式1:定义⼀个新的IRule:(全局设置)

@Bean
public IRule randomRule(){
 return new RandomRule();
}
⽅式2:在yml配置⽂件中配置:(局部设置)
上面的演示就是在yml中配置-- 以轮询的⽅式进⾏负载均衡
#需要调⽤的微服务名称
service-product:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯诺依曼转世

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值