赞
踩
本文章使用Spring Boot
2.x
版本
Spring Boot2.x版本与1.x版本相比,依赖包发生了变化,如
1.0x版本:spring-cloud-starter-eureka
2.0x版本:spring-cloud-starter-netflix-eureka
项目代码:https://gitee.com/huchxproject/spring-cloud-simple
Eureka
是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
Eureka包含两个组件:Eureka Server
和Eureka Client
。
Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。
在应用启动后,将会向Eureka Server
发送心跳,默认周期为30
秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除
(默认90
秒)。
Eureka Server之间通过复制
的方式完成数据的同步
,Eureka还提供了客户端缓存机制
,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存
中的信息消费其他服务的API。综上,Eureka通过心跳检查
、客户端缓存
等机制,确保了系统的高可用性
、灵活性
和可伸缩性
。
Spring Boot2.x 基础依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
<!--Eureka服务端依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <!--Spring Boot1.x版本依赖--> <!--<artifactId>spring-cloud-starter-eureka-server</artifactId>--> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR1</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
dependencyManagement
repository
https://repo.spring.io/libs-milestone
server:
port: 8081
eureka:
instance:
hostname: localhost
client:
##是否将资深注册
register-with-eureka: false
##如果为true,启动时报警
fetch-registry: false
service-url:
default-zone: http://${eureka.instance.hostname}:${server.port}/eureka/
在启动类上面添加@EnableEurekaServer
注解
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApp
{
public static void main( String[] args )
{
SpringApplication.run(EurekaServerApp.class,args);
}
}
启动服务后,浏览器打开http:/localhost:8081
,出现如图即为成功:
作为请求的最终执行者,提供服务其他客户端调用。也可以系统中的客户端注册到注册中心中。
<!--Eureka服务端依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <!--Spring Boot1.x版本依赖--> <!--<artifactId>spring-cloud-starter-eureka</artifactId>--> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR1</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
server:
port: 8084
eureka:
client:
service-url:
## 地址为注册中心(2.2.中)配置的地址
defaultZone: http://localhost:8081/eureka
spring:
application:
## 必须要有此属性,指定在注册中心的名称
name: eureka-provider
注意:
使用defaultZone
,而不是default-zone,因为使用default-zone,启动服务时会提示找不到注册中心的地址。
在启动类上添加@EnableDiscoveryClient
或@EnableEurekaClient
,表明应用为client。
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaProviderApp {
public static void main(String[] args) {
SpringApplication.run(EurekaProviderApp.class, args);
}
}
@RequestMapping("client")
public String index(String name){
return "Hello,"+name;
}
启动服务后,浏览器打开http:/localhost:8081
,出现如图即为成功:
访问http://localhost:8084/client?name=huchx
,显示如图:
2.x
和1.x
版本对于Eureka依赖的差异defaultZone
,而不是default-zone先启动Eureka Server
(注册中心)的服务,再启动Eureka Client服务。上一章:Spring Cloud 知识点整理 | (一)基本概念理解
下一章:Spring Cloud知识点整理 | (三) Eureka服务消费者
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。