spring cloud 注册中心

做微服务,注册中心是少不了的,之前用Dubbo的时候用的是Zookeeper,Spring Cloud也有自己的注册中心——Eureka。

按照之前的文章《极简Spring Boot搭建、开发、部署》在http://start.spring.io 构建一个Spring Boot工程,dependencies选web、Eureka Server。

pom.xml:

重要配置如下:

spring cloud 注册中心

1

spring cloud 注册中心

2

spring cloud 注册中心

3

spring cloud 注册中心

4

spring cloud 注册中心

5

代码&配置:

结构:

spring cloud 注册中心

代码结构

启动类:

spring cloud 注册中心

启动类

简单至极,就加上@EnableEurekaServer即可,没其他代码了。

application.yml:

spring cloud 注册中心

配置文件

说明:

端口号就不解释了。

A, 可以不配置,在eureka的监控页面上有个environment,会显示test。

B, hostname也可以不配置,在D上直接写死即可,不过后面我们会配置Eureka集群,这里最好还是配上,当然不会是localhost了。

C, 因为我们这个是服务端,所以自己不会去注册自己。下面我们会写需要注册的服务,这两个必须是true。

D,可以写死。

直接启动,访问http://127.0.0.1:8864,会看到以下页面:

spring cloud 注册中心

注意红框。

需要注册的服务,去http://start.spring.io 构建一个Spring Boot工程,dependencies选web、Eureka Discovery。

pom.xml:

与注册中心基本相同,区别如下:

spring cloud 注册中心

代码&配置:

spring cloud 注册中心

启动类

就加一个@EnableDiscoveryClient注解即可。

spring cloud 注册中心

A, 服务名。

B, 需要向注册中心注册,且读取注册信息。

C, 注册中心的url。

先启动注册中心,再启动本服务,访问http://127.0.0.1:8864,监控页面如下:

spring cloud 注册中心

已经注册进去了,其他服务就可以调用了。

还有一些配置,比如心跳发送间隔、注册中心多久没收到心跳就剔除服务等,大家可以自己查询API。

单节点的注册中心开发环境中还可以,生产环境就得上高可用了。

程序代码不需要改,但是要部署到不同的服务器或虚拟机或Docker上,IP、Hostname肯定不一样了。要么是打包之后修改配置文件,要么是配置好配置文件,在启动的时候指定。

规划:

spring cloud 注册中心

先在三台服务器中修改hosts,把ip和hostname对应上。别忘了把防火墙中相应的端口打开。

配置文件:

修改application.yml,内容如下:

spring cloud 注册中心

spring cloud 注册中心

server2

spring cloud 注册中心

server3

具体就不解释了,都看得懂。

启动&测试:

打包之后,分别上传到服务器中,使用以下命令启动:

java -jar eurekaserver-0.0.1-SNAPSHOT.jar --spring.profiles.active=eurekaserver1

java -jar eurekaserver-0.0.1-SNAPSHOT.jar --spring.profiles.active=eurekaserver2

java -jar eurekaserver-0.0.1-SNAPSHOT.jar --spring.profiles.active=eurekaserver3

在我们的Windows系统中,如果也配置了hosts,可以通过hostname:port来访问,如果没有,就直接访问ip地址。

三个监控页面如下:

spring cloud 注册中心

server1

spring cloud 注册中心

server2

spring cloud 注册中心

server3

客户端配置:

只需要把defaultZone一个URL地址改成三个即可,用,分隔。

启动服务之后,可以刷新一下Eureka的三个监控页面,客户端已经注册进去了。