springcloud day01【eureka】

来源:互联网 发布:python 区分中英文 编辑:程序博客网 时间:2024/06/04 22:42

day01

一、服务提供者和消费者

消费者通过接口调用服务提供者的接口,通过RestTemplate类实现调用,

注意事项,需要注册RestTemplate实例。

存在问题ip写死

新注解

@RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。

 

private RestTemplate restTemplate;@GetMapping("movie/{id}")public User findById(@PathVariable Long id) {return this.restTemplate.getForObject("http://localhost:7900/simple/"+id, User.class);}

 

二、服务注册与发现 eureka 

为什么选择eureka,negex,zookerper也可以,但是eureka与springcloud的其它组件配合的更好

解决痛点,服务消费者,固定ip,如果地址更换不利于维护,相当于一个域名中心维护这些。

1、配置eureka服务端

        导包

<!--eureka服務端  --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency><!--安全认证,必须加密码  --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>

2、通过注解标识即可配置好服务端

    @EnableEurekaServer//eureka专用服务端注解

    或者@EnableDiscoveryClient 这个注解被通用

3、配置一些参数信息

#开启安全认证,并设置用户名密码security:  basic:    enabled: true  user:    name: user    password: 123server:  port: 8761eureka:  client:    register-with-eureka: false    fetch-registry: false  #单机版    service-url:  #服务端批次间通信,数据同步       defaultZone: http://user:123@localhost:8761/eureka

4、配置客户端

导入jar依赖文件

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency>    <!--配置健康检查--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

5、配置客户端注解

@EnableEurekaClient  可以用@EnableDiscoveryClient取代

6、配置文件一些信息

eureka:  client:    healthcheck:      enabled: true    serviceUrl:      defaultZone: http://user:123@localhost:8761/eureka     #定义status信息    instance:    prefer-ip-address: true    instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}


服务端截图,出现警告是因为客户端断掉后重连

客户端健康检查信息


三、其它配置

1、两个api,在eureka客户端获取服务端信息

 @Autowired private EurekaClient eurekaClient; @GetMapping("/serviceUrl") public String serviceUrl() { //通过application名称获取ip     InstanceInfo instance = eurekaClient.getNextServerFromEureka("zw_provider_user", false);     return instance.getHomePageUrl(); }  @Autowired  private DiscoveryClient discoveryClient;  @GetMapping("/instance-info")  public ServiceInstance showInfo() {    ServiceInstance localServiceInstance = this.discoveryClient.getLocalServiceInstance();    return localServiceInstance;  }