介绍
Eureka在Spring Cloud体系中起服务注册和发现的作用,即订单服务将服务地址注册到注册中心。当产品服务想调用订单服务的时候先从注册中心拿到订单服务的地址列表,然后根据一定的负载均衡策略调用其中一个订单服务地址
github地址:https://github.com/erlieStar/spring-cloud-learning
搭建服务注册中心
示例项目:eureka-service(spring-cloud-eureka)
1.项目配置如下
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
application.yaml
server:
port: 7001
spring:
application:
name: eureka-service
eureka:
instance: #eureka实例定义
hostname: localhost # 定义eureka所在的主机名称
client:
fetch-registry: false # 是否从eureka拉取注册信息,默认为true
register-with-eureka: false # 是否将自己注册到Eureka Service,默认为true
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
# 设置与Eureka交互的地址,默认为http://localhost:8761/eureka,多个地址可用英文逗号分隔
可以看到eureka.client里面有很多配置项目,如何获取其他配置项和配置项的默认值呢?只需要点击属性,就能跳到相应的配置类,这里会跳EurekaClientConfigBean类中,同理配置文件中的各种属性都能通过点击跳到相应的配置类
2.在启动类上加注解@EnableEurekaServer,或任意@Configuration注解修饰的类
@EnableEurekaServer
@SpringBootApplication
public class EurekaService {
public static void main(String[] args) {
SpringApplication.run(EurekaService.class);
}
}
3.访问localhost:7001即可看到注册中心的页面
可以看到没有服务注册上来
高可用服务注册中心
示例项目:eureka-cluster(spring-cloud-eureka)
服务注册中心不可用时,整个服务都不可用了,如何避免注册中心的单点问题?
可以采用注册中心相互注册,我这里介绍一个3个注册中心互相注册的例子,2个同理,代码没有变化。
1.写3个配置文件
application-peer1.xml
server:
port: 7001
spring:
application:
name: eureka-cluster
eureka:
instance: #eureka实例定义
hostname: peer1 # 定义eureka所在的主机名称
client:
fetch-registry: false # 是否从eureka拉取注册信息,默认为true
register-with-eureka: false # 是否将自己注册到Eureka Service,默认为true
service-url:
defaultZone: http://eureka2:7002/eureka,http://eureka3:7003/eureka
application-peer2.xml
server:
port: 7002
spring:
application:
name: eureka-cluster
eureka:
instance: #eureka实例定义
hostname: peer2 # 定义eureka所在的主机名称
client:
fetch-registry: false # 是否从eureka拉取注册信息,默认为true
register-with-eureka: false # 是否将自己注册到Eureka Service,默认为true
service-url:
defaultZone: http://eureka1:7001/eureka,http://eureka3:7003/eureka
第三个配置类似,可以参考github源码
2.在host文件中配置如下信息
127.0.0.1 peer1 peer2 peer3
3.执行命令
#打包
mvn clean package
# 指定相应的配置文件启动eureka
java -jar eureka-cluster-1.0.jar --spring.profiles.active=peer1
java -jar eureka-cluster-1.0.jar --spring.profiles.active=peer2
java -jar eureka-cluster-1.0.jar --spring.profiles.active=peer3
此时访问注册中心页面 http://localhost:7001
DS Replicas就会显示其余的2个注册中心