Spring Cloud之——Eureka(服务注册与发现)
简介
Eureka
服务注册中心是netflix
开源组织提供的一个服务高可用
的解决方案,在前端时间一直在疯传的2.0开源流产
的问题,其实并不影响我们的使用,netflix
只不过是不再维护2.0
分支的开源代码,所以做出了免责声明,不过对于我们使用者来说确实比较担心这一点,还有不少人更换服务注册中心,比如:zookeeper
、consul
。
当然对于Eureka 2.0 流产
这件事情就当做一场闹剧来对待吧,因为SpringCloud.Finchley.SR1版本依赖的Eureka
是1.9.3
,根本不需要考虑到这一点了。
我们还是来关心我们的分布式
微服务架构系统该怎么去设计。
Eureka Server
构建项目
跟我们之前构建项目一样, 使用idea
工具直接创建一个新的SpringBoot
项目,在选择依赖的界面勾选Cloud Discovert -> Eureka Server
依赖,创建完成后的pom.xml
配置文件内容如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
我们在创建新的项目时,如果选择了相关SpringCloud
的依赖,则会自动在pom.xml
配置文件内添加SpringCloud
最新稳定版本依赖配置。
spring-cloud-dependencies
这个依赖是SpringCloud
内所需要依赖的版本维护
,在maven
项目内如果被<dependencyManagement>
内修饰的<dependency>
,子项目或者本项目在使用时可以不用设置版本号,默认使用<dependencyManagement>
下<dependency>
内设置的版本信息。
正因如此,这也是为什么我们添加了spring-cloud-dependencies
依赖后,在使用相关SpringCloud
插件时可以不用添加version
标签设置导入指定版本的依赖。
Eureka Server的配置
添加spring-cloud-starter-netflix-eureka-server
依赖后,我们就来看看怎么开启Eureka Server
服务。开启Eureka
的注册中心服务端比较简单,只需要修改注意两个地方。
- 第一个地方是在主启动类上添加
Eureka Server
的注解@EnableEurekaServer
,如下所示:
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
- 第二个地方是
application.yml/application.properties
文件内添加配置基本信息,如下所示:
server.port=8761
#实例的主机名称
eureka.instance.hostname=localhost
#不向注册中心注册自己(Eureka即可以是服务端也可以客户端)
eureka.client.register-with-eureka=false
#表示自己就是注册中心,不需要维护服务实例,只需要检索服务
eureka.client.fetch-registry=false
#设置与Eureka Server交互地址查询和注册服务部署需要依赖的地址
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
运行测试
启动应用程序,在浏览器访问http://localhost:8761
即可访问到Eureka Server
管理界面
对于界面我们可以看到一些Eureka Server
的健康数据以及基本信息,比如:
-
server-uptime
:已经启动的耗时 -
current-memory-usage
:当前占用的内存总量 -
Instances currently registered with Eureka
:注册到该中心的服务列表 -
ipAddr
:当前Eureka Server
的IP地址,如果没有配置eureka.instance.ip-address
那么这里使用默认的IP地址。
Eureka Client
构建项目
跟我们之前构建项目一样, 使用idea
工具直接创建一个新的SpringBoot
项目,在选择依赖的界面勾选Cloud Discovert -> Eureka Client
依赖,创建完成后的pom.xml
配置文件内容如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
Eureka Client的配置
添加spring-cloud-starter-netflix-eureka-client
依赖后,我们就来看看怎么开启Eureka Client
服务。开启Eureka
的注册中心服务端比较简单,只需要修改注意两个地方。
- 第一个地方是在主启动类上添加
Eureka Client
的注解@EnableEurekaClient
,如下所示:
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
- 第二个地方是
application.yml/application.properties
文件内添加配置基本信息,如下所示:
server.port=8760
spring.application.name=micro-weather-eureka-client
#客户端注册进eureka
eureka.client.service-url.defaultZone=http://localhost:8761/eureka
#自定义服务名称信息
eureka.instance.instance-id=eureka-client
#访问路径可以显示IP
eureka.instance.prefer-ip-address=true
运行测试
启动应用程序,在浏览器访问http://localhost:8761
即可访问到Eureka Server
管理界面,你会看到服务已经注册好了!!!