注册中心
- 微服务架构中,需要一个最基本的功能就是服务的注册和发现。
- Eureka:这里是 Spring Cloud Eureka 的简称,是 Spring Cloud Netflix 组件之一。 用于搭建服务注册中心;实现服务治理,包括服务注册、服务发现和服务检测监控等。
组成角色
- Eureka Server :提供服务注册和发现等
- Service Provider:服务提供者:自身注册到Eureka Server,供消费端调用
- Service Consumer:服务消费方:从Eureka获取注册服务列表,从而能够消费服务
Eureka Server搭建
首先前提:搭建Spring boot工程,引入Spring Cloud工具集
maven引入eureka-server 包
<dependencies>
<!-- eureka server依赖包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<!-- 低版本 -->
<!-- <artifactId>spring-cloud-starter-eureka-server</artifactId> -->
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
配置文件
spring.application.name=spring-cloud-eureka
server.port=8000
# 表示是否将自己注册到Eureka Server,默认为true。
eureka.client.register-with-eureka=false
# 表示是否从Eureka Server获取注册信息,默认为true。
eureka.client.fetch-registry=false
# 设置与Eureka Server交互的地址
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
配置启动类
- 启动类增加@EnableEurekaServer 注解配置
@SpringBootApplication
@EnableEurekaServer
public class SpringCloudEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudEurekaApplication.class, args);
}
}
启动服务
访问服务
Eureka Server集群
- 其他配置同单机服务
- 改动配置文件,将eureka.serviceUrl 互相引用。多台集群,就将其他的eureka.server地址配置进去,用逗号隔开
配置文件
########### 注册中心集群 ,多注册中心 #######################
# peer1
spring:
application:
name: spring-cloud-eureka
profiles: peer1
server:
port: 8000
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
# --- 三横隔离配置文件
---
# peer2
spring:
application:
name: spring-cloud-eureka
profiles: peer2
server:
port: 8001
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/
---
# peer3
spring:
application:
name: spring-cloud-eureka
profiles: peer3
server:
port: 8002
eureka:
instance:
hostname: peer3
client:
serviceUrl:
defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/
- 上面例子中共用了一个yaml配置文件,也可以搭建多个服务,就有多个配置文件
- yaml 中 “—” 服务号 将文件分割,不然会出现 属性名相同的错误
- spring.profiles 相当于不同的配置文件的id,代表一个 — 中的配置
- 利用这个属性可以在spring boot启动,或者java打包时指定不同的参数来适配不同的配置文件。
#打包
mvn clean package
# 分别以peer1和peeer2 配置信息启动eureka
java -jar eureka-server-1.0.jar --spring.profiles.active=peer1
java -jar eureka-server-1.0.jar --spring.profiles.active=peer2
java -jar eureka-server-1.0.jar --spring.profiles.active=peer3
- 在本地搭建的时候,IP都是相同的,所以需要针对peer1、peer2、peer3在host中指向本机
127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3
配置启动
- IDEA配置启动,因为是三个服务集群,则需要启动三个服务。例子用了同一个工程,所以启动需要指定不同的参数
启动
- 抛出异常
- 原因是三个服务启动时,总有先后,当服务寻找另外服务时,没有找到;就找不到连接。
- 这个异常可以先忽略,因为Eureka Server会持续连接,等待其他服务都启动好了。就能连接到其他服务了。
- 启动完成
访问服务
- 集群部署完成。
- 另外两台访问就指向其他两台。