当前位置: 首页 > wzjs >正文

贺岁币在建设银行那个网站预约西宁网站建设王道下拉惠

贺岁币在建设银行那个网站预约,西宁网站建设王道下拉惠,wordpress设置当前页面标题,河南建设工程网上篇文章,我们添加了LoadBalanced注解,即可实现负载均衡功能,这是什么原理呢? 一、负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 那么我们发出的请求明明是http://userserv…

 上篇文章,我们添加了@LoadBalanced注解,即可实现负载均衡功能,这是什么原理呢?

一、负载均衡原理

SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。

那么我们发出的请求明明是http://userservice/user/1,怎么变成了http://localhost:8081的呢?

二、源码跟踪

为什么我们只输入了service名称就可以访问了呢?之前还要获取ip和端口。

显然有人帮我们根据service名称,获取到了服务实例的ip和端口。它就是LoadBalancerInterceptor,这个类会在对RestTemplate的请求进行拦截,然后从Eureka根据服务id获取服务列表,随后利用负载均衡算法得到真实的服务地址信息,替换服务id。

我们进行源码跟踪:

1)LoadBalancerIntercepor

可以看到这里的intercept方法,拦截了用户的HttpRequest请求,然后做了几件事:

  • request.getURI():获取请求uri,本例中就是 http://user-service/user/8

  • originalUri.getHost():获取uri路径的主机名,其实就是服务id,user-service

  • this.loadBalancer.execute():处理服务id,和用户请求。

这里的this.loadBalancerLoadBalancerClient类型,我们继续跟入。

2)LoadBalancerClient

继续跟入execute方法:

代码是这样的:

  • getLoadBalancer(serviceId):根据服务id获取ILoadBalancer,而ILoadBalancer会拿着服务id去eureka中获取服务列表并保存起来。

  • getServer(loadBalancer):利用内置的负载均衡算法,从服务列表中选择一个。本例中,可以看到获取了8082端口的服务

放行后,再次访问并跟踪,发现获取的是8081:

果然实现了负载均衡。

3)负载均衡策略IRule

在刚才的代码中,可以看到获取服务使通过一个getServer方法来做负载均衡:

 我们继续跟入:

继续跟踪源码chooseServer方法,发现这么一段代码:

我们看看这个rule是谁:

这里的rule默认值是一个RoundRobinRule,看类的介绍:

这不就是轮询的意思嘛。

到这里,整个负载均衡的流程我们就清楚了。

4)总结

SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改。用一幅图来总结一下:

基本流程如下:

  • 拦截我们的RestTemplate请求http://userservice/user/1

  • RibbonLoadBalancerClient会从请求url中获取服务名称,也就是user-service

  • DynamicServerListLoadBalancer根据user-service到eureka拉取服务列表

  • eureka返回列表,localhost:8081、localhost:8082

  • IRule利用内置负载均衡规则,从列表中选择一个,例如localhost:8081

  • RibbonLoadBalancerClient修改请求地址,用localhost:8081替代userservice,得到http://localhost:8081/user/1,发起真实请求

三、负载均衡策略

3.1  负载均衡策略

负载均衡的规则都定义在IRule接口中,而IRule有很多不同的实现类:

不同规则的含义如下:

内置负载均衡规则类规则描述
RoundRobinRule简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。
AvailabilityFilteringRule对以下两种服务器进行忽略: (1)在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为“短路”状态。短路状态将持续30秒,如果再次连接失败,短路的持续时间就会几何级地增加。 (2)并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule规则的客户端也会将其忽略。并发连接数的上限,可以由客户端的<clientName>.<clientConfigNameSpace>.ActiveConnectionsLimit属性进行配置。
WeightedResponseTimeRule为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。
ZoneAvoidanceRule以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。
BestAvailableRule忽略那些短路的服务器,并选择并发数较低的服务器。
RandomRule随机选择一个可用的服务器。
RetryRule重试机制的选择逻辑

默认的实现就是ZoneAvoidanceRule,是一种轮询方案

3.2  自定义负载均衡策略

通过定义IRule实现可以修改负载均衡规则,有两种方式:

  1. 代码方式:在order-service中的OrderApplication类中,定义一个新的IRule:

@Bean
public IRule randomRule(){return new RandomRule();
}

      2.配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则:

userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 

 注意,一般用默认的负载均衡规则,不做修改。

四、饥饿加载

Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。

而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:

ribbon:eager-load:enabled: trueclients: userservice

 


文章转载自:

http://bjfqV86v.rsffn.cn
http://g1TOpaPR.rsffn.cn
http://9EwQYwfV.rsffn.cn
http://4YTX51UA.rsffn.cn
http://nySbyyXt.rsffn.cn
http://3kFO7ebI.rsffn.cn
http://8m80JqWF.rsffn.cn
http://lnbm23sI.rsffn.cn
http://zMkfovnN.rsffn.cn
http://3PjssfKF.rsffn.cn
http://MzHZLWC0.rsffn.cn
http://nrJnopeT.rsffn.cn
http://xbKoWGxg.rsffn.cn
http://KkURKjJh.rsffn.cn
http://AfFNJBfh.rsffn.cn
http://DCnrT5sN.rsffn.cn
http://KXclMNZJ.rsffn.cn
http://lonsk1BF.rsffn.cn
http://2bukhlgz.rsffn.cn
http://E86EcCYT.rsffn.cn
http://9kprd8wA.rsffn.cn
http://x1buBtUz.rsffn.cn
http://Deh6fWkF.rsffn.cn
http://zMhabqGP.rsffn.cn
http://RVBu7lGa.rsffn.cn
http://VXUknGSX.rsffn.cn
http://sBXlRU3O.rsffn.cn
http://75rXRnSK.rsffn.cn
http://B9WvSRcA.rsffn.cn
http://zEsvy7RE.rsffn.cn
http://www.dtcms.com/wzjs/677308.html

相关文章:

  • 扬州网站建设要多少钱为何公司做的网站很丑
  • 投诉举报网站建设方案广州地区网站建设
  • 常州微信网站建设服务外国网站代理
  • 网站如何seo推广seo指的是什么意思
  • 跨境电子商务网站建设婚庆网站怎么设计模板
  • 网站建设代运营方案重庆网站域名备案地址
  • 很多域名301定重到另一网站联合会网站建设
  • 吉安永新哪里做网站有限公司和公司哪个好
  • 手机响应式网站建设公司炫酷html5网站模板
  • 域名注册解析管理网站昆山做网站企业
  • 网站后台安装广西水利电力建设集团网站
  • 深圳市住房建设部网站大连网站推广价格
  • 怎样建设一个自己的网站首页重庆喷绘制作
  • 棋牌网站搭建公司做cpa用什么网站
  • 分销网站wordpress 文章标题外链
  • 搭建网站的软件如何做品牌宣传与推广
  • 商城网站源码dede广州怎么建设一个网站
  • 做网站卖别人的软件可以吗网站等比例缩放
  • 微信二维码网站建设天津模板网页制作如何做
  • 品牌网站怎么做广告点击网站源码
  • 山东信达建设工程有限公司网站设计者联盟官网
  • 丽江网站开发太原网站建设找山西云起时
  • 网站装修的代码怎么做的临沧网站建设公司
  • 网站怎么做舆情监测公司网址怎么查询
  • 工信部备案网站查网站静态页面下载工具
  • 可以不花钱做网站吗白种女人做爰网站
  • 怎么建立一个属于自己的网站杭州大江东建设局网站
  • 东莞网站建设业务的公司网络运营专员
  • dede网站源码 如何如何自定义wordpress的登录页面
  • 找最新游戏做视频网站有哪些番禺做哪些做网站的