当一个大型系统拥有很多服务时,往往需要一个服务注册中心来管理这些服务,它可以提供如下功能:
如下图,商城系统通过服务注册中心管理其中的若干服务:
服务注册中心如何实现呢,其实并不复杂,简述如下:
Spring Cloud提供了基于Netflix Eureka的服务注册中心实现,可以轻松的实现服务注册中心应有的功能,Spring Cloud Eureka服务注册中心实现过程如下:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
eureka-server依赖即引入了Eureka服务注册中心,此时我们可以根据项目需求来定制我们自己的服务注册中心了。
通过在SpringBoot启动类上添加@EnableEurekaServer
注解,就可以启动服务注册中心功能,此时注册中心启动后,可以监听其他服务发送过来的登记请求,并可以通过心跳检测登记服务是否存活。
@SpringBootApplication // 启动SpringBoot应用 @EnableEurekaServer // 启动服务注册中心 public class EurekaServerDemo { public static void main(String[] args) { SpringApplication.run(EurekaServerDemo.class, args); } }
可以通过修改配置文件application.properties,指定注册中心的服务端口等信息。
# 指定注册中心的服务端口 server.port=1001 # 是否向注册中心注册自己,由于我们的注册中心不提供具体服务,所以不必注册自己 eureka.client.register-with-eureka=false # 是否从注册中心获取其他服务信息,由于我们的注册中心仅提供注册功能,不必调用其他服务,所以不必获取其他服务信息 eureka.client.fetch-registry=false
直接运行启动类即可启动服务注册中心,此时我们在浏览器输入http://localhost:1001
,可以发现服务注册中心已启动,暂时还没有服务登记到该注册中心。