SoringCloud Eureka

最后都变了- 提交于 2019-12-11 01:37:30

SpringCloud

springcloud是一个分布式的整体解决方案、springcloud为开发者提供了在分布式系统(配置管理、服务发现、熔断、路由、微代理、控制总线、一次性token、全局锁、leader选举、分布式session、集群状态)中快速构建的工具。
SpringCloud分布式开发五大常用组件

  1. 服务发现–Netflix Eureka
  2. 客服端负载均衡–Netflix Ribbon
  3. 断路器–Netflix Hystrix
  4. 服务网关–Netflix Zuul
  5. 分布式配置–Spring Cloud Config
    在这里插入图片描述

搭建Eureka服务发现中心

1、书写一个yml文件来标明此为注册中心

server:
  port: 8761
eureka:
  instance:
    hostname:euraka-server  #euraka实例主机名
  client:
    register-with-eureka: false  #不把自己注册到euraka上
    fetch-registry: false #不从eureka上来获取服务的注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/

2、@EnableEurekaServer
可以将项目作为SpringCloud中的注册中心。
3、启动起来就看到了Eureka的界面。
在这里插入图片描述

搭建提供方

server:
  port: 8001
spring:
  application:
    name: provider-name

eureka:
  instance:
    prefer-ip-address: true #注册服务的时候使用服务的IP地址
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

在这里插入图片描述

搭建消费者

spring:
  application:
    name: consumer--user
server:
  port: 8200

eureka:
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

RestTemplate
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率
@LoadBalanced
在Spring Cloud中服务的发现与消费一文中首先使用了RestTemplate并且开启了客户端负载均衡功能,开启负载均衡很简单,只需要在RestTemplate的bean上再添加一个@LoadBalanced注解即可


@EnableDiscoveryClient//开启发现服务功能
@SpringBootApplication
public class ConsumerUserApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerUserApplication.class, args);
    }

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

}
@RestController
public class UserController {

    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/buy")
    public String buyTicket(String name){
        ResponseEntity<String> s=
        restTemplate.getForEntity("http://PROVIDER-NAME/ticket",String.class);
        return name+"购买了"+s.getBody();
    }
}

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!