Eureka是Netflix开发的一套开源服务治理框架,他依托于类似Tomcat,Jetty之类的Web容器才能启动。他类似于Zookeeper和Dubbo的集合,一般将Eureka的注册中心称为服务端,而使用Eureka将服务注册到服务端或者从服务端获取服务的应用称为Eureka的客户端。这个和Dubbo非常明显的分为Provider和Consumer不太一样。本文将依托于Spring Boot的敏捷性快速的搭建一个Eureka的注册中心。
使用Spring Initializr创建一个Spring Boot项目:eureka-server。pom文件中需要引入的依赖如下:
Spring Cloud已经将eureka进行封装,依赖spring-cloud-starter-eureka-server后,会自动导入相关的eureka类库。
在启动类添加@EnableEurekaServer注解,如下所示:
之后在application.properties文件中添加相关的配置:
自此,整个配置过程就结束了。启动Spring Boot项目后,默认存在一个管理平台:http://localhost:1111/
以上为单节点的Eureka注册中心,非常的简单。那么我们再搭建一个三节点的eureka注册。
Eureka集群不同于Zookeeper的地方主要在于节点之间的关系,不同于Zookeeper的Leader模式,Eureka集群节点之间的关系是平等的,他们共享注册信息,所以客户端无论连接到他们之间的哪个节点,都可以获取到完整的服务注册数据。
继续使用上面创建的项目,需要修改的点主要在于application.properties。我们根据这个文件创建三个节点各自的配置文件:
application-peer1.properties, application-peer2.properties, application-peer3.properties
eureka.client.register-with-eureka和eureka.client.serviceUrl.defaultZone的参数,是eureka-server也会将自己作为客户端注册到其他两个Eureka服务端中,这样就实现了注册数据的共享。
由于配置文件使用了域名的写法,需要修改host文件:
自此就配置完成了,下面我们开始逐个启动。
我本机使用的是Windows和IJ,所以可以很方便的打包为jar包。进入到本机jar包所在的文件夹,之后使用如下指令启动三个节点:
启动完成后,三个localhost:1111, localhost:1112, localhost:1113三个地址均可以访问,并且在管理平台上均可以看到三个节点: