SpringCloud(一):服务注册与发现【Finchley版】
微服务在当下非常盛行,绝大多数的 Java 开发者都在使 SpringBoot/SpringCloud 进行项目开发,由于对微服务这一块比较感兴趣,刚才公司有项目在使用 SpringCloud 组件进行项目开发,最近项目也不是特别忙,有点时间来倒腾 SpringCloud 这套微服务框架,网上有非常多 SpringCloud 相关的资料,本系列学习 Demo 参考了大量网上教材,所谓的站在巨人的肩膀上,猪都能够飞一段距离。微服务架构主要包含服务注册与发现、服务调用、熔断限流、服务路由、配置中心等。
本文是 SpringCloud 系列第一篇文章服务注册与发现,服务注册与发现的组件在市面上有非常多的选择,我选取了 Eureka、Nacos、Consul 三种组件来研究学习。
【注】本系列学习 Demo 所使用环境
- JDK1.8
- SpringBoot 2.0.5.RELEASE
- SpringCloud Finchley.RELEASE
- SpringBoot/SpringCloud 基本依赖都放在父工程里面,具体的实现在module 中
Eureka 版
Eureka 是 Netflix 开源的一款提供服务注册和发现的产品,Eureka2.0已经闭源了,它提供了完整的Service Registry和Service Discovery实现。也是springcloud体系中最重要最核心的组件之一,在使用 Eureka 作为服务注册与发现时,我们需要手动配置 Eureka Server 服务器。
Eureka Server
创建一个 SpringBoot 项目,取名为 eureka-server ,我们只需要对 eureka-server 项目进行简单的改造。
- 在 pom.xml 中引入 Eureka Server
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
- 在 SpringBoot 引导类上添加
@EnableEurekaServer
注解
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
- application.yml 中添加相关配置
server:
port: 8081
spring:
application:
name: eureka-server
eureka: # eureka 相关配置
instance:
hostname: localhost
client:
# 表示是否将自己注册到Eureka Server上,默认为true,当前应用为Eureka Server所以无需注册
register-with-eureka: false
# 表示是否从Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,故而设为false
fetch-registry: false
# Eureka Server的访问地址,服务注册和client获取服务注册信息均通过该URL,多个服务注册地址用,隔开
service-url:
defaultZone: http://${
eureka.instance.hostname