登陆

极彩娱乐登录平台-Spring Cloud(Greenwich版)-05-Spring Cloud集成Ribbon

admin 2019-09-07 122人围观 ,发现0个评论

前语

前面完成了产品和用户微服务的注册发现,是根据点对极彩娱乐登录平台-Spring Cloud(Greenwich版)-05-Spring Cloud集成Ribbon点的微服务之间的调用,那么在实践场景中微服务都是集群布置的,调用联系如下图所示:

看到这儿咱们会想到不便是负载均衡嘛!项目中经常用Nginx来处理图中的服务集群问题,那如果有1000+乃至10000+的服务呢?每增加一个服务要去Nginx里边装备一下,然后重启?额......想想都头皮发麻!而且Nginx的负载均衡方式和本文即将讲的是有差异的。

那么本章将会用到Ribbon组件来处理上述问题。

Ribbon简介及运用场景

Ribbon浅显来讲便是一个负载均衡器,用来操控HTTP和TCP客户端行为,Ribbon从装备服务提供者列表库(例如:Eureka、Zookeeper)去获取服务装备信息,根据负载均衡算法计算出要恳求的方针服务地址。

在Spring Cloud中Ribbon一般合作Eur极彩娱乐登录平台-Spring Cloud(Greenwich版)-05-Spring Cloud集成Ribboneka运用,Ribbon能够主动从Eureka Server获取服务提供者地址列表,并根据负载均衡算法,挑选其间一个服务提供者实例。下图展现了Ribbon与Eureka合作运用时的大致架构。

Spring Cloud集成Ribbon

第一步:仿制产品和用户微服务项目

仿制项目microservice-consumer-goods,将pom.xml文件中ArtifactId内容修正为 microservice-consumer-goods-ribbon 。如下图所示:

仿制项目microservice-provider-user,将pom.xml文件中ArtifactId 内容修正为microservice-provider-user-ribbon极彩娱乐登录平台-Spring Cloud(Greenwich版)-05-Spring Cloud集成Ribbon。如下图所示:

补白:记住修正端口,否则发动会呈现端口抵触问题。

第二步:增加Ribbon依靠

因为 极彩娱乐登录平台-Spring Cloud(Greenwich版)-05-Spring Cloud集成Ribbonspring-cloud-starter-netflix-eureka-client 现已包括 spring-cloud-starter-netfilx-ribbon ,这一步能够省掉。

第三步:在RestTemplate上增加@LoadBalanced注解支撑

MicroserviceConsumerGoodsRibbonApplication.java
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
};

对的,你没看错,到这儿就完毕了!只需要增加LoadBalanced注解就能够让RestTemplate整合Ribbon。

第四步: 修正调用用户微服务

GoodsController.java
@GetMapping("/goods/{id}")
public User findById(@PathVariable Long id){
return this.restTemplate.getForObject("http://microservice-provi圈养der-user/simple/"+id,User.class);
}

前面咱们在调用用户微服务的时分选用的是IP+端口+方针服务端点的方法,这儿将恳求方针改为http://{方针服务称号}/{方针服务端点} 的方式。这样的话Ribbon会主动在实践调用时,将方针服务名替换为该服务的IP和端口

第五步:发动测验

  • 发动microservice-discovery-eureka
  • 发动microservice-provider-user
  • 发动microservice-provider-user-ribbon
  • 发动microservice-consumer-goods-ribbon

如上图所示,2个用户微服务和1个产品微服务都注册到了Eureka Server,因为2个用户微服务的极彩娱乐登录平台-Spring Cloud(Greenwich版)-05-Spring Cloud集成Ribbon称号都是microservice-provider-user那么会主动识别为同一个集群服务,也便是上面产品微服务调用用户微服务的方针服务称号。

拜访http://127.0.0.1:8091/goods/2

10次,会发现两个用户微服务示例都会打印日志而且是每个被恳求5次。

配套代码

主代码库:https://github.com/yundianzixun/spring-cloud-study

产品微服务:https://github.com/yundianzixun/spring-cloud极彩娱乐登录平台-Spring Cloud(Greenwich版)-05-Spring Cloud集成Ribbon-study/tree/master/microservice-consumer-goods-ribbon

Eureka Server:https://github.com/yundianzixun/spring-cloud-study/tree/master/microservice-discovery-eureka

用户微服务1:https://github.com/yundianzixun/spring-cloud-study/tree/master/microservice-provider-user

用户微服务2:https://github.com/yundianzixun/spring-cloud-study/tree/master/microservice-provider-user-ribbon

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP