微服务核心技术——负载均衡

一:Ribbon简介

Ribbon是Netflix公司开源的一个负载均衡的项目,是一个客户端负载均衡器,运行在客户端上。它是一个经过了云端测试的IPC库,可以很好地控制HTTP和TCP客户端的一些行为。Feign已经默认使用了Ribbon。

二:Ribbon的工作流程

微服务核心技术——负载均衡

 

1:user微服务1、user微服务2、user微服务3是一个服务集群,它们都会向注册中心注册服务(它们的应用名都是USER-SERVICE)

2:注册中心记录集群元数据信息,即USER-SERVICE下有3个服务节点

3:Ribbon拦截所有的请求,从请求信息中获取应用名

4:ribbon根据应用名从eureka注册中心获取服务列表

5:ribbon从服务列表中通过相关均衡策略获取具体某个服务

6:请求远程服务

三:Ribbon源码解析

第一步:Ribbon拦截请求,获取应用名LoadBalancerAutoConfiguration是Ribbon的自动配置类,在这个配置类里面配置了一个拦截器,该拦截器会拦截所有请求,这就是Ribbon的入口

微服务核心技术——负载均衡

 

LoadBalancerInterceptor的intercept方法(当远程调用的时候都会被拦截器拦截)

@Overridepublic ClientHttpResponse intercept(final HttpRequest request, final byte[] body,      final ClientHttpRequestExecution execution) throws IOException {   final URI originalUri = request.getURI();   String serviceName = originalUri.getHost();//这里就是获取应用名可以打断点测试   Assert.state(serviceName != null, "Request URI does not contain a valid hostname: " + originalUri);   return this.loadBalancer.execute(serviceName, requestFactory.createRequest(request, body, execution));}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值