您当前的位置: 首页 >  spring

09SpringCloud - Ribbon项目示例

杨林伟 发布时间:2019-05-21 16:22:35 ,浏览量:4

服务提供者

在项目:spring-cloud-eureka-provider-1spring-cloud-eureka-provider-2spring-cloud-eureka-provider-3的启动类,都加入@Value("${server.port}"),修改home()方法, 来区分不同端口的Controller 响应,因为接下来,使用ribbon做均衡需要测试需要使用到。

@SpringBootApplication
@EnableEurekaClient
@RestController
public class EurekaProviderApplication {
    @Value("${server.port}")
    String port;
    @RequestMapping("/")
    public String home() {
        return "Hello world ,port:" + port;
    }
    public static void main(String[] args) {
        SpringApplication.run(EurekaProviderApplication.class, args);
    }
}
配置

在项目:spring-cloud-eureka-provider-1spring-cloud-eureka-provider-2spring-cloud-eureka-provider-3,修改server: port:端口依次为8081,8082,8083。

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
spring:
  application:
    name: eureka-provider
server:
  port: 8081
服务消费者(Ribbon Consumer)

添加依赖 新建 spring-cloud-ribbon-consumer



    org.springframework.cloud
    spring-cloud-starter-ribbon



    org.springframework.cloud
    spring-cloud-starter-eureka

开启服务负载均衡 在工程的启动类中,通过@EnableDiscoveryClient向服务注册中心注册;并且向程序的ioc注入一个bean: restTemplate并通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。

@EnableDiscoveryClient
@SpringBootApplication
public class RibbonConsumerApplication {
    @LoadBalanced
    @Bean
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
    public static void main(String[] args) {
        SpringApplication.run(RibbonConsumerApplication.class, args);
    }
}
消费提供者方法

新建 ConsumerController类,调用提供者的 hello 方法

/**
 * 描述:调用提供者的 `home` 方法
 *
 * @author yanpenglei
 * @create 2017-12-05 18:53
 **/
@RestController
public class ConsumerController {
    @Autowired
    private RestTemplate restTemplate;
    @GetMapping(value = "/hello")
    public String hello() {
        return restTemplate.getForEntity("http://eureka-provider/", String.class).getBody();
    }
}

添加配置

完整配置 application.yml

指定服务的注册中心地址,配置自己的服务端口,服务名称

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
spring:
  application:
    name: ribbon-consumer
server:
  port: 9000
测试服务

启动服务,依次启动项目:

spring-cloud-eureka-service spring-cloud-eureka-provider-1 spring-cloud-eureka-provider-2 spring-cloud-eureka-provider-3 spring-cloud-ribbon-consumer

启动该工程后,访问服务注册中心,查看服务是否都已注册成功:http://localhost:8761/ 在这里插入图片描述

负载均衡

在命令窗口curl http://localhost:9000/hello,发现Ribbon已经实现负载均衡

或者浏览器get请求http://localhost:9000/helloF5 刷新 在这里插入图片描述

关注
打赏
1688896170
查看更多评论

杨林伟

暂无认证

  • 4浏览

    0关注

    3183博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.1027s