Eureka简介
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
微服务架构中最核心的部分是服务治理,服务治理最基础的组件是注册中心。随着微服务架构的发展,出现了很多微服务架构的解决方案,其中包括我们熟知的 Dubbo 和 Spring Cloud。
关于注册中心的解决方案,dubbo 支持了 Zookeeper、Redis、Multicast 和 Simple,官方推荐 Zookeeper。Spring Cloud 支持了 Zookeeper、Consul 和 Eureka,官方推荐 Eureka。
Eureka Server 搭建
1 添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2 配置 application.yml
spring:
application:
name: eureka-service
server:
port: 2001 #默认端口 8761
eureka:
server:
#禁用保护模式 一般用于测试
enable-self-preservation: false
instance:
# 主机名为了区分集群中不同的服务器
hostname: eureka1
# 针对单台服务器,不向自己注册,也不从自己拉取。 用于单台配置
client:
register-with-eureka: false
fetch-registry: false
3 主启动类添加注解@EnableEurekaServer
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class Sp05EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(Sp05EurekaApplication.class, args);
}
}
4 修改 hosts 文件,添加 eureka 域名映射
host文件地址:
C:\Windows\System32\drivers\etc\hosts
添加内容:
127.0.0.1 eureka1
5 测试
访问地址:
http://eureka1:2001
Eureka Client 搭建
1 添加依赖
<!--添加eureka依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--主要用于管理eureka 版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2020.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2 配置 application.yml
# yml, yaml, Yet another markup language
# yet 已经 markup 利润,涨价 标记
#应用名, 作为“服务id”,注册到注册中心
spring:
application:
name: item-service
#8001, 8101, 8201
server:
port: 8001
eureka:
client:
service-url:
# defaultZone 默认地点
# 如果用云服务, 可以配置不同的地点,自己配置必须指定
defaultZone: http://eureka1:2001/eureka