Eureka
概念
Eureka客户端
- 1、Eureka客户端是指我们的开发的服务,包括服务提供者和消费者
- 2、Eureka客户端只需要做两件事,导入客户端jar包,使用注解@EnableDiscoveryClient
Eureka服务端60s定时检查没有心跳的server并踢除,默认是开启自我保护模式,避免误杀
springboot Eureka
Eureka单机客户端与服务配置
springcloud Eureka是基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。服务端和客户端均采用java编写,所以主要适用于java实现的分布式系统。
Eureka服务端
即服务注册中心
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
通过@EnableEurekaServer
注解启动一个注册中心
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false #默认情况下,该服务注册中心会将自己作为客户端注册自己,需禁用
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
Eureka客户端
用于处理服务的注册与发现
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
通过@EnableDisCoveryClient
发现服务
通过如下属性指定服务注册中心的地址,启动应用Eureka信息面板就可以看到服务实例了。
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
如果是集群,server地址用逗号分隔
客户端服务通过注解和参数配置方式
,嵌入在客户端应用程序中,应用启动时向注册中心注册自身服务,并周期性的发送心跳来更新他的服务;同时也可以从服务端查询注册的服务信息并缓存到本地,并且周期性的刷新服务状态。
eureka高可用
配置方式一
服务1的配置
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
instance:
hostname: ftcs-reg1
client:
registerWithEureka: true#集群模式下开启
fetchRegistry: true
serviceUrl:
defaultZone: http://ftcs-reg2:8762/eureka/
服务2的配置
server:
port: 8762
spring:
application:
name: eureka-server
eureka:
instance:
hostname: ftcs-reg2
client:
registerWithEureka: true #集群模式下开启
fetchRegistry: true
serviceUrl:
defaultZone: http://ftcs-reg1:8761/eureka/
以上是两台eureka-server的配置,如果启动更多server,只需要在defaultZone后面逗号分隔添加即可。
当前server节点会作为其他节点的消费者
配置方式二
方式1需要提供两个工程,如果只想提供一个工程,可以通过修改yml配置文件,指定多个profile来启动不同的环境模拟高可用
# 公共部分
spring:
application:
name: eureka-server
---
spring:
profiles: dev1
server:
port: 8761
eureka:
instance:
hostname: eureka-1
client:
registerWithEureka: true #集群模式下开启
fetchRegistry: true
serviceUrl:
defaultZone: http://eureka-2:8762/eureka/
---
spring:
profiles:
active: dev2
server:
port: 8762
eureka:
instance:
hostname: eureka-2
client:
registerWithEureka: true #集群模式下开启
fetchRegistry: true
serviceUrl:
defaultZone: http://eureka-1:8761/eureka/