天天看点

历程之Spring Boot 2:Eureka注册中心

Eureka是Netflix开发的一套开源服务治理框架,他依托于类似Tomcat,Jetty之类的Web容器才能启动。他类似于Zookeeper和Dubbo的集合,一般将Eureka的注册中心称为服务端,而使用Eureka将服务注册到服务端或者从服务端获取服务的应用称为Eureka的客户端。这个和Dubbo非常明显的分为Provider和Consumer不太一样。

本文将依托于Spring Boot的敏捷性快速的搭建一个Eureka的注册中心。

使用Spring Initializr创建一个Spring Boot项目:eureka-server。pom文件中需要引入的依赖如下:

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

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Brixton.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
           

Spring Cloud已经将eureka进行封装,依赖spring-cloud-starter-eureka-server后,会自动导入相关的eureka类库。

在启动类添加@EnableEurekaServer注解,如下所示:

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaServerApplication.class, args);
	}

}
           

之后在application.properties文件中添加相关的配置:

server.port=1111

eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
           

自此,整个配置过程就结束了。启动Spring Boot项目后,默认存在一个管理平台:http://localhost:1111/

以上为单节点的Eureka注册中心,非常的简单。那么我们再搭建一个三节点的eureka注册。

Eureka集群不同于Zookeeper的地方主要在于节点之间的关系,不同于Zookeeper的Leader模式,Eureka集群节点之间的关系是平等的,他们共享注册信息,所以客户端无论连接到他们之间的哪个节点,都可以获取到完整的服务注册数据。

继续使用上面创建的项目,需要修改的点主要在于application.properties。我们根据这个文件创建三个节点各自的配置文件:

application-peer1.properties, application-peer2.properties, application-peer3.properties

//applicaiton-peer1.properties
spring.application.name=eureka-server
server.port=1111

eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true


eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/,http://peer3:1113/eureka/


//applicaiton-peer2.properties
spring.application.name=eureka-server
server.port=1112

eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true


eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer3:1113/eureka/


//applicaiton-peer3.properties
spring.application.name=eureka-server
server.port=1113

eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true


eureka.instance.hostname=peer3
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/
           

eureka.client.register-with-eureka和eureka.client.serviceUrl.defaultZone的参数,是eureka-server也会将自己作为客户端注册到其他两个Eureka服务端中,这样就实现了注册数据的共享。

由于配置文件使用了域名的写法,需要修改host文件:

127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3
           

自此就配置完成了,下面我们开始逐个启动。

我本机使用的是Windows和IJ,所以可以很方便的打包为jar包。进入到本机jar包所在的文件夹,之后使用如下指令启动三个节点:

java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peee1
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peee2
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peee3
           

启动完成后,三个localhost:1111, localhost:1112, localhost:1113三个地址均可以访问,并且在管理平台上均可以看到三个节点:

历程之Spring Boot 2:Eureka注册中心

至此,Eureka集群也就搭建成功了。

需要看完整代码可以访问:GitHub

继续阅读