Ribbon:Spring Cloud负载均衡与服务调用组件

瑞星  金牌会员 | 2024-3-18 20:16:33 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 534|帖子 534|积分 1602

Ribbon:Spring Cloud负载均衡与服务调用组件

问题总结


  • 负载均衡?
  • Ribbon实现服务调用?
  • Ribbon实现负载均衡?
  • 切换负载均衡策略?
  • 定制负载均衡策略?
问题答案


  • 负载均衡
    负载均衡(Load Balance),将用户的请求平分到多个服务器上运行,以扩展服务器带宽、增强数据处理能力、增加吞吐量、提高网络的可用性和灵活性的目的。


  • 服务端负载均衡


  • 服务端负载均衡:在客户端和服务端之间建立一个负载均衡服务器(硬件设备:F5,软件:Nginx)。负载均衡服务器维护了一份可用服务端清单,然后通过心跳机制来删除故障的服务端节点,以保证清单中的所有服务节点都是可以正常访问。
  • 客户端发送请求,全部交给负载均衡服务器(轮询、随机),选择一个服务端进行转发。、
  • 特点:
    (1)需要建立一个独立的负载均衡服务器。
    (2)负载均衡在客户端发送请求后进行,客户端不知道那个服务器提供服务。
    (3)可用服务端清单存储于负载均衡服务器中。

    • 客户端负载均衡


    • 客户端负载均衡是将负载均衡逻辑以代码的形式封装到客户端上。客户端从服务注册中心获取服务端列表,并通过(轮询、随机)将请求分配给多个服务提供者。


    • 服务端负载均衡VS客户端负载均衡
    不同点服务端负载均衡客户端负载均衡是否需要建立负载均衡服务器是否是否需要服务注册中心否是可用服务清单存储位置负载均衡服务器上(nginx)服务注册中心负载均衡的时机发送请求,再进行负载均衡先负载均衡,再发送请求客户端是否了解服务提供方消息否是


  • Ribbon实现服务调用

    • Ribbon可以与RestTemplate配合使用,以实现微服务之间的调用。
    • RestTemplate是一个用于消费第三方的请求框架,实现了对HTTP请求的封装。例如HEAD、GET、POST、PUT、DELETE等类型的HTTP请求,分别对应RestTemplate中的headForHeaders()、getForObject()、postForObject()、put()、delete()方法。



  • Ribbon实现负载均衡
Spring Cloud Ribbon提供了一个IRule接口,用于定义负载均衡策略。
序号实现类负载均衡策略1RoundRobinRule排序轮询2RandomRule随机选取3RetryRule先轮询,如果获取到的服务实例为null或已经失效,则再指定时间内不断地进行轮询重试,超过指定时间没有获取到则返回null4WeighedResponseTimeRuleRoundRobinRule的一个子类,对父类进行了扩展。根据平均响应时间,计算所以服务实例的权重,响应时间和服务实例的权重、选中概率成反比。刚启动,统计信息不足,使用轮询5BestAvailableRule先过滤掉故障或者失效的服务实例,选择并发量最小的服务实例6AvailabilityFilteringRule同BestAvailableRule7ZoneAvoidanceRule默认,根据服务所在区域的性能和服务的可用性,来选择服务实例(轮询)

  • 切换负载均衡策略


  • 再客户端的配置类中,将IRule的其他实现类注入到容器中即可。


  • 定制负载均衡策略


  • 类似于4

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表