Eureka 在Spring Cloud体系中,eureka承担着服务注册与发现的任务,在整个微服务架构中起着整合作用。eureka的一些概念:
服务提供者 provider,指一个将自身的功能接口暴露出来的应用。
服务消费者 consumer,指需要借助provider提供的功能完成自身业务的应用。
服务注册 当provider应用启动时,会将自身的元数据,比如IP地址,端口,应用名等注册到eureka server中。
服务续约 provider每搁固定的时间段(默认30秒),向eureka server汇报一次自身状况,如果eureka server在固定的时间段(默认90秒)内没有收到某一provider的服务续约的请求,将会把这个provider实例从服务列表中剔除。
获取注册信息 consumer应用会定时从eureka server获取服务注册列表信息以供自身进行远程调用,consumer应用默认每30秒会更新一次注册列表信息,默认eureka server和consumer应用使用压缩的json进行交互。
服务下线 provider应用关闭时,会向eureka server发送下线请求,eureka server收到请求后会将此provider实例信息从服务注册列表中剔除。
Eureka Server 添加eureka server依赖 1 2 3 4 <dependency > <groupId > org.springframework.cloud</groupId > <artifactId > spring-cloud-starter-eureka-server</artifactId > </dependency >
application.yml 配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 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注解 1 2 3 4 5 6 7 @SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main (String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
只需这简单的配置,就已经搭建了一台eureka server应用。
Eureka Client 添加eureka依赖 1 2 3 4 <dependency > <groupId > org.springframework.cloud</groupId > <artifactId > spring-cloud-starter-eureka</artifactId > </dependency >
application.yml 配置 1 2 3 4 5 6 7 8 9 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注解 1 2 3 4 5 6 7 8 9 10 11 @SpringBootApplication @EnableDiscoveryClient public class ProviderUserApplication { public static void main (String[] args) { SpringApplication.run(ProviderUserApplication.class, args); } }
现在我们已经搭建好了一台Eureka Server 和一台provider,访问http://localhost:8761看看效果!
perfect!
我们的两个服务已经注册到了Eureka Server上,上图的红字是因为我们在Eureka Server服务的application.yml配置了eureka.server.enable-self-preservation: false 关闭了自我保护模式,推荐在开发中我们使用此配置,可以及时刷新服务的最新状态,但是切记在生产环境使用要开启自我保护模式。