springcloud微服务之Eureka配置详解
Eureka注册中⼼/服务发现框架
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还提供了客户端缓存机制,即使所有的Eurek
a Server都挂掉,客户端依然可以利⽤缓存中的信息消费其他服务的API。综上,Eureka通过⼼跳检查、客户端缓存等机制,确保了系统的⾼可⽤性、灵活性和可伸缩性。
如何使⽤构建 Eureka Server ?
加⼊依赖(此处以Maven为例)
<!-- 1. 继承 spring-boot-starter-parent ,如果是聚合⼯程可以写到⽗⼯程中-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 2.加⼊Eureka 服务端依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
创建Eureka Server 主运⾏类
package com.liang.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloudflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer // 加上启⽤Eureka服务注解(标记其为Eureka服务)
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class,args);
}
}
Eureka服务没有后台存储,但是注册表中的所有服务实例都必须发送⼼跳信号以使其注册保持最新(因此可以在内存中完成)。客户端还具有Eureka注册的内存缓存(因此,对于每个对服务的请求,它们都不必进⼊注册表)。
默认情况下,每个Eureka服务端也是有Eureka客户端,并且需要(⾄少⼀个)服务URL来定位。如果您不提供该服务,则该服务将不断运⾏,所输出的错误⽇志,也许对你有所⼲扰(如果你端⼝不是8761并
且配置了另外的serviceUrl则会不断产⽣这样的错误⽇志,如果按默认配置只会报⼀次这样的错误,随后待⾃⾝启动后便可连接⾃⾝成功)。
单机配置
server:
port: 8761 # 端⼝
spring:
application:
name: eureka-server # 应⽤名称,会在Eureka中显⽰
springcloud和springbooteureka:
client:
register-with-eureka: false # 是否注册⾃⼰的信息到EurekaServer,默认是true
fetch-registry: false # 是否拉取其它服务的信息,默认是true
service-url: # EurekaServer的地址,现在是⾃⼰的地址,如果是集,需要加上其它Server的地址。
defaultZone: ${eureka.instance.hostname}:${server.port}/eureka
请注意serviceUrl,指向与本地实例相同的主机。
集配置
---
server:
port: 6001
spring:
profiles: eureka6001
eureka:
instance:
hostname: eureka6001
client:
register-with-eureka: false # 是否注册⾃⼰的信息到EurekaServer,默认是true
fetch-registry: false # 是否拉取其它服务的信息,默认是true
service-url: # EurekaServer的地址,现在是⾃⼰的地址,如果是集,需要加上其它Server的地址。
defaultZone: eureka6002:6002/eureka
---
server:
port: 6002
spring:
profiles: eureka6002
eureka:
instance:
hostname: eureka6002
client:
register-with-eureka: false # 是否注册⾃⼰的信息到EurekaServer,默认是true
fetch-registry: false # 是否拉取其它服务的信息,默认是true
service-url: # EurekaServer的地址,现在是⾃⼰的地址,如果是集,需要加上其它Server的地址。
defaultZone: eureka6001:6001/eureka
在前⾯的⽰例中,我们有⼀个YAML⽂件,通过在不同的Spring配置⽂件中运⾏该服务器,可以在两个
主机(eureka6001和eureka6002)上运⾏同⼀Eureka服务。您可以使⽤此配置通过操作/etc/hosts解析主机名来测试单个主机上的对等感知(在⽣产环境中这样做没有太⼤价值)。实际上,eureka.instance.hostname如果您在知道其主机名的计算机上运⾏(默认情况下,使⽤的是该机器的主机名)。Eureka springcloud 应⽤实例 www.1b23
您可以将多个Eureka服务添加到集,并且只要它们均通讯的连接,它们就可以在彼此之间同步注册。如果在物理上分开(在⼀个数据中⼼内或在多个数据中⼼之间),只要它们都直接相互连接,它们就可以在彼此之间同步注册。
Eureka Client 连接Eureka Server 集配置
eureka:
client:
serviceUrl:
defaultZone: eureka6001/eureka/,eureka6002
到此这篇关于springcloud微服务之Eureka配置详解的⽂章就介绍到这了,更多相关springcloud Eureka配置内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论