目录
一、Eureka简介
二、 provider和consumer搭建
1、springboot-父工程环境引入依赖
2、provider端和consumer端引入依赖springboot-web
三、 使用RsetTemplate完成远程调用
1、定义一个@bean-rsetTemplate
2、注入@Bean
3、consumer中调用方法
四、Euerka Server服务搭建
1、引入springcloud和eureka-server相关依赖信息
(1)父类工程pom.xml引入依赖
(2)eureka-server中pom.xml引入依赖
2、完成euerka-sever配置
(1)eureka-server启动类中加入驱动注解
(2)eureka-server的application.yml配置
五、使provider和consumer成为eureka的客户端(eureka-client)
1、引入eureka-client相关依赖、完成eureka-client相关配置
(1)provider和consumer中引入依赖
(2)consumer和provider启动类增加注解
(3)provider和consumer的application.yml配置
六、使用Eureka Server服务实现远程调用
1、动态从consumer获取provider的IP和端口
(1)注入并激活 DiscoveryClient 注解
(2)使用DiscoveryClient动态获取
七、Eureka相关配置
Eureka是 Netflix公司开源的一个服务注册与发现的组件。
Eureka和其他Netflix公司的服务组件(例负载均衡、熔断器、网关等)一起,被Spring Cloud 社区整合为Spring-Cloud-Netflix模块。
Eureka包含两个组件: Eureka Server(注册中心)和Eureka Client(服务提供者、服务消费者)。
Eureka的两个组件:Eureka Server(注册中心)和Eureka Client(服务提供、消费)。
Eureka Server:提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息。Eureka Server可通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。。
Eureka Client:是一个java客户端,用于简化与Eureka Server的交互,客户端同时也
是一个内置的、使用轮询负载算法的负载均衡器。SpringCloud学习(一)——Eureka服务发现原理与搭建步骤_Hey 锡瑞的博客-CSDN博客
org.springframework.boot
spring-boot-starter-parent
2.1.e.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
(3)provider端和consumer端引入依赖springboot-web
RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版。
@Bean
public RsetTemplate rsetTemplate(){
return new RsetTemplate();
}
@Autowired
private RestTemplate restTemplate;
String url = "http://localhost:(provid)的端口号/**/**/**/"+ID;
Student student = restTemplate.getForObject(url, Student.class);
Finchley.RELEASE
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
@SpringBootApplication
@EnableEurekaServer // Eureka启用注解
public class EurekaApp {
public static void main( String[] args ){
SpringApplication.run(EurekaApp.class, args);
}
}
server:
port: 8761 #默认端口号
eureka:
instance:
hostname: localhost #主机名
client:
service-url:
# eureka服务端地址 客户端使用这个地址和eureka通信
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
# 是否将路径注册到eureka上,一般【消费方】(eureka server)不需要注册到eureka上,【提供方】(eureka provider client)需要
register-with-eureka: false
# 是否需要从eureka中获取路径 -consumer client才需要获取路径
fetch-registry: false
provider和consumer中引入相同的依赖
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
两者的注解相同@EnableEurekaClient
@SpringBootApplication
@EnableEurekaClient // 启用注解
public class providerApp {
public static void main( String[] args ){
SpringApplication.run(providerApp .class, args);
}
}
# provider 配置
server:
port: 8000
eureka:
instance:
hostname: localhost #主机名
client:
service-url:
defaultZone: http://localhost:8761/eureka
# 是否将路径注册到eureka
# register-with-eureka: turn #默认是turn可省略
# 是否需要从eureka中获取路径
# fetch-registry: turn #默认是turn可省略
spring:
application:
name: eureka-provider #设置名称,会在eureka中Application显示,以后可根据这个名字来获取路径
# consumer 配置
server:
port: 9000
eureka:
instance:
hostname: localhost #主机名
client:
service-url:
defaultZone: http://localhost:8761/eureka
spring:
application:
name: eureka-consumer #不同之处
List instances = dicoveryClient.getInstances(EUREKA-PROVIDER);
// 判断非空
if (instances.size() > 0 || instances == null) {
return null;
}
ServerInstance instance = instances.get(0);
String host = instance.getHost();
int port = instance.getPort();
String url = "http://"+host+":"+port+"/**/**/**/"+ID;
Student student = restTemplate.getForObject(url, Student.class);
# eureka—4部分配器
#1.dashboard: eureka的web控制台配置
#2.server: eureka的服务端配器
#3.client: eureka的客户端配器
#4.instance: eureka的实例配置
eureka:
instance:
hostname: localhost
lease-renewal-interval-in-seconds: 30 #定义调用服务续约任务的时间间隔
lease-expiration-duration-in-seconds: 90 # 定义服务时效的时间
prefer-ip-address: # 是否将自己的IP注入到eureka上 默认false
ip-address: # 设置IP
instance-id: # 修改instance-id显示
server:
# 开启保护机制 默认true
enable-self-preservation: true
# 清理时间间隔(毫秒) 默认60S
eviction-interval-timer-in-ms: