Spring Cloud - Eureka

Eureka

在Spring Cloud体系中,eureka承担着服务注册与发现的任务,在整个微服务架构中起着整合做用。eureka的一些概念:java

服务提供者

provider,指一个将自身的功能接口暴露出来的应用。spring

服务消费者

consumer,指须要借助provider提供的功能完成自身业务的应用。json

服务注册

当provider应用启动时,会将自身的元数据,好比IP地址,端口,应用名等注册到eureka server中。架构

服务续约

provider每搁固定的时间段(默认30秒),向eureka server汇报一次自身情况,若是eureka server在固定的时间段(默认90秒)内没有收到某一provider的服务续约的请求,将会把这个provider实例从服务列表中剔除。app

获取注册信息

consumer应用会定时从eureka server获取服务注册列表信息以供自身进行远程调用,consumer应用默认每30秒会更新一次注册列表信息,默认eureka server和consumer应用使用压缩的json进行交互。ide

服务下线

provider应用关闭时,会向eureka server发送下线请求,eureka server收到请求后会将此provider实例信息从服务注册列表中剔除。微服务

Eureka Server

添加eureka server依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

application.yml 配置

server:
  port: 8761 # 服务端口

spring:
  application:
    name: eurekaServer # 服务名
eureka:
  environment: devlopment # eureka server环境
  instance:
    lease-renewal-interval-in-seconds: 10 # 发送心跳的间隔时间
    lease-expiration-duration-in-seconds: 30 # 若这个时间段没收到心跳则移除该instance
    prefer-ip-address: true # 实例名称显示IP配置

  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/ # eureka server的地址
    register-with-eureka: true # 此服务是否注册到eureka server上
  server:
    enable-self-preservation: false # 关闭自我保护模式
    eviction-interval-timer-in-ms: 4000 # 扫描失效服务间隔(单位ms, 默认是60 * 1000)
    wait-time-in-ms-when-sync-empty: 0

debug: true # debug 模式

加入@EnableEurekaServer注解

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

只需这简单的配置,就已经搭建了一台eureka server应用。url

Eureka Client

添加eureka依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

application.yml 配置

server:
  port: 8080
debug: true
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true   #将本身的IP注册到eureka server上,如不配置则表示注册微服务所在操做系统的hostname到eureka server

加入@EnableDiscoveryClient注解

/**
 * TODO
 * Created by jinzili on 09/06/2017.
 */
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderUserApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderUserApplication.class, args);
    }
}

如今咱们已经搭建好了一台Eureka Server 和一台provider,访问http://localhost:8761看看效果! image操作系统

perfect!debug

咱们的两个服务已经注册到了Eureka Server上,上图的红字是由于咱们在Eureka Server服务的application.yml配置了eureka.server.enable-self-preservation: false 关闭了自我保护模式,推荐在开发中咱们使用此配置,能够及时刷新服务的最新状态,可是切记在生产环境使用要开启自我保护模式。

相关文章
相关标签/搜索