做微服务,注册中心是少不了的,之前用Dubbo的时候用的是Zookeeper,Spring Cloud也有自己的注册中心——Eureka。
按照之前的文章《极简Spring Boot搭建、开发、部署》在http://start.spring.io 构建一个Spring Boot工程,dependencies选web、Eureka Server。
pom.xml:
重要配置如下:
1
2
3
4
5
代码&配置:
结构:
代码结构
启动类:
启动类
简单至极,就加上@EnableEurekaServer即可,没其他代码了。
application.yml:
配置文件
说明:
端口号就不解释了。
A, 可以不配置,在eureka的监控页面上有个environment,会显示test。
B, hostname也可以不配置,在D上直接写死即可,不过后面我们会配置Eureka集群,这里最好还是配上,当然不会是localhost了。
C, 因为我们这个是服务端,所以自己不会去注册自己。下面我们会写需要注册的服务,这两个必须是true。
D,可以写死。
直接启动,访问http://127.0.0.1:8864,会看到以下页面:
注意红框。
需要注册的服务,去http://start.spring.io 构建一个Spring Boot工程,dependencies选web、Eureka Discovery。
pom.xml:
与注册中心基本相同,区别如下:
代码&配置:
启动类
就加一个@EnableDiscoveryClient注解即可。
A, 服务名。
B, 需要向注册中心注册,且读取注册信息。
C, 注册中心的url。
先启动注册中心,再启动本服务,访问http://127.0.0.1:8864,监控页面如下:
已经注册进去了,其他服务就可以调用了。
还有一些配置,比如心跳发送间隔、注册中心多久没收到心跳就剔除服务等,大家可以自己查询API。
单节点的注册中心开发环境中还可以,生产环境就得上高可用了。
程序代码不需要改,但是要部署到不同的服务器或虚拟机或Docker上,IP、Hostname肯定不一样了。要么是打包之后修改配置文件,要么是配置好配置文件,在启动的时候指定。
规划:
先在三台服务器中修改hosts,把ip和hostname对应上。别忘了把防火墙中相应的端口打开。
配置文件:
修改application.yml,内容如下:
server2
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地址。
三个监控页面如下:
server1
server2
server3
客户端配置:
只需要把defaultZone一个URL地址改成三个即可,用,分隔。
启动服务之后,可以刷新一下Eureka的三个监控页面,客户端已经注册进去了。