Spring Cloud - Eureka原理、注册、搭建、应用(全过程详解)
Eureka是Netflix开发的一个开源项目,它是基于REST的服务,用于AWS云环境中的中间层服务,用于服务发现和负载平衡。
Eureka原理
Eureka Server提供服务注册服务,它相当于服务的目录,记录了服务和服务实例的信息。
Eureka Client是一个java客户端,用来简化与Eureka Server的交互。
注册
- 引入Eureka Client依赖
- 在application.properties或application.yml中配置Eureka Server的地址
- 使用
@EnableEurekaClient
或@EnableDiscoveryClient
注解 - 程序启动时,Eureka Client会向Eureka Server注册自己的信息
搭建
- 创建Eureka Server项目
- 引入Eureka Server依赖
- 在application.properties或application.yml中配置服务端信息
- 使用
@EnableEurekaServer
注解启动Eureka Server
应用
- 服务提供者将自己的服务注册到Eureka
- 服务消费者可以通过Eureka获取服务列表,并通过负载均衡器调用服务
示例代码
pom.xml(Eureka Server)
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
application.yml(Eureka Server)
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
Java配置(Eureka Server)
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
pom.xml(Eureka Client)
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
application.yml(Eureka Client)
spring:
application:
name: service-provider
server:
port: 8080
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
Java配置(Eureka Client)
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@En
评论已关闭