Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能
eureka 工作原理:
看懂了原理,那么我们来做具体实现:
第一步
1、编写 eureka server 端,这个非常简单。
使用 idea 工具 创建spring boot 项目
只选用 选择 Cloud Discovery --> eureka Server 一个依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2、然后 配置 属性文件: application.yml
spring:
application:
name: helloEureka # 服务名称
eureka:
client:
# service-url: #如果需要部署集群,服务器之间需要相互注册,完成相互同步注册的client 端。
# defaultZone: http://localhost:8000/eureka/ //这里是需要注册的服务器地址 多个服务器用 都好隔开
register-with-eureka: false #自己不需要注册自己所以需要设置成false
server:
enable-self-preservation: false #注册中心保护开关 默认打开,为了方便测试 需要把它关闭
#保护机制,是防止由于网络延迟导致eureka 错误的判断其他服务挂掉了,而作为地址缓存机制,这样可以保证当网络正常是,能够再次连上。
server:
port: 8000 端口号。
3、 在 application.class 类上添加注解: 启动服务。()
@SpringBootApplication
@EnableEurekaServer //添加 服务注解
public class EurekaserverApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaserverApplication.class, args);
}
}
访问:localhost:8000 就可以看见服务器首页了。
第二步: 创建 两个客户端:
1、添加依赖:这里必要的三个依赖
① Cloud Discovery --> eureka Discovery
② Web --> web
<!-- eureka client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- web 应用的 基本 依赖 这个不要过多解释-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2、配置 application.class
@SpringBootApplication
@EnableDiscoveryClient //注册为 客户端
public class ProductApplication {
public static void main(String[] args) {
SpringApplication.run(ProductApplication.class, args);
}
}
3、配置 application.yml (启动,就可以连上 服务器)
server:
port: 8081
eureka:
client:
service-url:
defaultZone: http://localhost:8000/eureka/ #向该地址的 eureka 服务器 注册,如果注册多个服务用逗号隔开。
# 应用注册 eureka 名称
spring:
application:
name: productClient
启动后,再次刷新 localhost:8080 就可以看见我们注册上去 的 productClient 客户端。注意在同一个机器上,需要修改不同的端口号。