IDEA开发SpringCloud指南(三)—Eureka服务消费者(Ribbon)

在微服务架构中,业务都会拆分成一个独立的服务,服务与服务的通讯是基于http restful的。SpringCloud有两种服务调用方式,一种是ribbon+restTemplate,另外一种是feign,在这篇文章中讲解下ribbon+rest。

一、Eureka创建服务消费者(Ribbon)

Ribbon其实就是一个客户端的负载均衡方式组件

Ribbon在工作时分成两步

第一步先选择EurekaServer,它优先选择在同一区域内负载较少的server

第二步再根据用户指定的策略(默认的轮询策略),在从server取到的服务注册列表中选择一个地址

二、实战

1. 使用IDEA的Spring Assistan创建工程,选择Default,单击next

2.填写项目信息,命名工程名称为eureka_consumer_ribbon,单击next

3.选择SpringCloudDisicovery中的Eureka Discovery Client,Web中的SpringWeb,SpringCloudRouting中的Ribbon,单击next,然后finish完成。

 

4.创建完后的工程的pom.xml文件自带依赖spring-boot-starter-web、spring-cloud-starter-netflix-eureka-client 、spring-cloud-starter-netflix-ribbon如下:

       <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
		</dependency>

5.给EurekaConsumerApplication主程序增加restTemplate类,并通过@LoadBalanced进行负载均衡,  添加@EnableDiscoveryClient,用于寻找Eureka

@EnableDiscoveryClient
@SpringBootApplication
public class EurekaConsumerRibbonApplication {

	@Bean
	@LoadBalanced//负载均衡
	RestTemplate restTemplate(){
		return new RestTemplate();
	}
	public static void main(String[] args) {
		SpringApplication.run(EurekaConsumerRibbonApplication.class, args);
	}

}

6.在resources文件夹下创建application.yml文件,内容如下。并删除掉application.properties。在配置文件指定服务的注册中心地址为http://localhost:8761/eureka/,程序名称为eureka-consumer-ribbon,程端口为8791。

server:
  port: 8791
  enable-self-preservation: false
spring:
  application:
    name: eureka-consumer-ribbon
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

7. 新建Service文件夹,创建ConsumerService类

@Service
public class ConsumerService {
    @Autowired
    RestTemplate restTemplate;

    @RequestMapping("hello")
    public String goHello()
    {
        return restTemplate.getForEntity("http://EUREKA-PROVIDER/hello",String.class).getBody();
    }
}

8. 新建controller文件夹,创建ConsumerController类

@RestController
public class ConsumerController {
    @Autowired
    ConsumerService consumerService;

    @RequestMapping("hello")
    public String goHello()
    {
        return consumerService.goHello();
    }
}

9.运行程序,重新刷新http://localhost:8761 ,界面如下,可以看到eureka_consumer-ribbon已经在到注册中心了:

在地址栏里调用消费者端口地址  http://localhost:8791/hello ,显示如下,证明调用提供者的hello成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值