SpringCloud学习Day01

注:本教程均是参考"程序猿DD"大佬的SpringCloud教程:http://blog.didispace.com/spring-cloud-learning/实践结合自己的理解和总结编写

服务注册与发现中心

  1. @EnableEurekaServer用于将一个普通的SpringBoot服务启动为服务注册中心
  2. @EnableDisCoveryClient用于将当前应用加入到服务治理体系中(使服务可以被发现),类似的注解还有@EnableEurekaClient,和@EnableDiscCoveryClient不同的是,前者只能让服务被Eureka-Server注册中心发现而后者可以使服务被Eureka-Server和Consul注册中心被发现。

服务消费

方式一:LoadBalacerClient

不需要其他特殊配置,代码如下

@Autowired

private LoadBalancerClient loadBalancerClient;

@Autowired

private RestTemplate restTemplate;

@GetMapping("/consumer")

public String dc(){

ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client");

String url = "http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+"/dc";

return restTemplate.getForObject(url,String.class);

}

方式二:Ribbon

结合在注入RestTemplate时添加@LoadBalanced注解,并且调用的时候指定的不是某个服务的固定地址而是服务名称来调用服务

@Autowired

private RestTemplate restTemplate;

@GetMapping("/consumer")

public String dc() {

    String url = "http://eureka-client/dc";

    return restTemplate.getForObject(url, String.class);

}

Spring Cloud Ribbon有一个拦截器,它能够在这里进行实际调用的时候,根据服务名称去选取服务实例,并将实际要请求的IP地址和端口替换这里的服务名,从而完成服务接口的调用。

方式三:通过Feign

添加注解扫描包@EnableFeignClients,创建FeignClient客户端指定要调用的服务名称比如

//调用服务名称为eureka-client的/dc接口

@FeignClient("eureka-client")

public interface DcService {

    @GetMapping("/dc")

    String consumer();

}

在Controller层直接注入DcService即可。

@Autowired

private DcService dcService;


@GetMapping("/consumer")

public String dc(){

    return dcService.consumer();

}

Feign是基于Ribbon实现的,所以自带负载均衡,也可以通过Ribbon的Rule进行策略扩展

代码:https://github.com/SpringStudent/study-spring-cloud

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值