Ribbon负载均衡

本文介绍了软件负载均衡的两种类型,包括DNS和反向代理,并重点探讨了客户端负载均衡,特别是Netflix的Ribbon组件。Ribbon作为客户端负载均衡器,从服务注册中心获取服务端地址列表,并通过负载均衡算法选择服务实例。此外,文章还提及了Ribbon的组件模块和工作原理,包括拦截请求、替换URL以及自定义配置策略。
摘要由CSDN通过智能技术生成

两种负载均衡

软件负载均衡:nginx,lvs

硬件负载均衡:F5

我们只关注软件负载均衡,
第一层可以用DNS,配置多个A记录,让DNS做第一层分发。
第二层用比较流行的是反向代理,核心原理:代理根据一定规则,将http请求转发到服务器集群的单一服务器上。

客户端负载均衡

在客户端负载均衡中,所有的客户端节点都有一份自己要访问的服务端地址列表,这些列表统统都是从服务注册中心获取的;

服务端负载均衡

在服务端负载均衡中,客户端节点只知道单一服务代理的地址,服务代理则知道所有服务端的地址。

Ribbon组成

看官网首页:https://github.com/Netflix/ribbon

ribbon-core: 核心的通用性代码。api一些配置。

ribbon-eureka:基于eureka封装的模块,能快速集成eureka。

ribbon-examples:学习示例。

ribbon-httpclient:基于apache httpClient封装的rest客户端,集成了负载均衡模块,可以直接在项目中使用。

ribbon-loadbalancer:负载均衡模块。

ribbon-transport:基于netty实现多协议的支持。比如http,tcp,udp等。

原理

  1. 拦截请求。
  2. 获取url。
  3. 通过url中 serviceName 获取 List。
  4. 通过负载均衡算法选取一个ServiceInstance。
  5. 替换请求,将原来url中的 serviceName换成ip+port。

总结

  1. 几种负载均衡。(硬,软(服务端,客户端(Ribbon)))
  2. Ribbon可以单独使用。需要提供服务地址列表。
  3. 原理。拦截请求,然后替换地址(servicename到ip+port)。
  4. 源码。ILoadBalancer,Map<服务名,ILoadBalancer>
  5. @LoadBalanced,拦截器。(LoadBalancerInterceptor中intercept)
  6. 自定义配置:java配置,yml配置。
  7. 自定义负载均衡策略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值