目录
一、Eureka是什么?
Eureka是基于REST(Representational State Transfer)服务,主要以AWS云服务为支撑,提供服务发现并实现负载均衡和故障转移。我们称此服务为Eureka服务。Eureka提供了Java客户端组件,Eureka Client,方便与服务端的交互。客户端内置了基于round-robin实现的简单负载均衡。在Netflix,为Eureka提供更为复杂的负载均衡方案进行封装,以实现高可用,它包括基于流量、资源利用率以及请求返回状态的加权负载均衡。
二、构建Eureka Server
- 新建工程,选择Spring Initializr
- 输入GroupId,Artifact
- 选择Cloud Discovery--Eureka Server,选择springboot的版本
- 选择项目存放位置,finish
- 在启动类中添加@EnableEurekaServer注解
-
package cn.aaralyn.eureka; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
application.yml中配置
# 设置端口号 server: port: 8761 eureka: client: # 该项目自身也需要注册到eureka注册中心,此配置可以关闭自身的注册 register-with-eureka: false # 设置需要注册到的地址 service-url: defaultZone: http://localhost:8761/eureka server: # 关闭自我保护,客户端不在线,将不在服务端显示 enable-self-preservation: false #设置应用名称 spring: application: name: eureka-server
- 启动项目,打开http://localhost:8761/eureka
三、构建Eureka Client
- 创建项目与创建服务项目类似,在第三步中由选择Eureka Server改为Eureka Discovery,其他一致
- 在启动类中添加@EnableEurekaClient注解
package cn.aaralyn.eurekaclient; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } }
- application.yml中配置
spring: application: name: eureka-client eureka: client: service-url: defaultZone: http://localhost:8761/eureka
- 先启动服务端,再启动客户端,打开http://localhost:8761/eureka,可以看到服务以及注册进来了
四、Eureka的高可用
Server之间:添加其他server的地址
Client:在每个client的配置文件中,添加所有server的地址