《Spring Cloud Netflix官方文档》2. 服务发现:Eureka服务器

50 篇文章 0 订阅
10 篇文章 0 订阅

2. 服务发现:Eureka服务器

2.1 如何创建Eureka服务器

引用org.springframework.cloud的spring-cloud-starter-eureka-server就可以创建Eureka服务器。在当前Spring Cloud版本中如何进行详细设置可以查看Spring Cloud工程页面

 

2.2 如何运行Eureka服务器

Eureka服务器的示例代码:

1@SpringBootApplication
2@EnableEurekaServer
3public class Application {
4 
5    public static void main(String[] args) {
6        newSpringApplicationBuilder(Application.class).web(true).run(args);
7    }
8 
9}

该服务器有一个UI主页,并且Eureka每一个功能点都可以通过/eurake/*形式的HTTP API来访问。
Eureka背景阅读:查看flux capacitorgoogle group discussion页面。
提示:由于Gradle缺少设置父工程的方式,仅仅靠spring-cloud-starter-eureka-server会使得应用在启动时失败。要解决这个问题必须将Spring Boot的Gradle插件添加进来,并且像下面这种方式导入Spring cloud的父工程。
build.gradle.

01buildscript {
02  dependencies {
03    classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE")
04  }
05}
06 
07apply plugin: "spring-boot"
08 
09dependencyManagement {
10  imports {
11    mavenBom "org.springframework.cloud:spring-cloud-dependencies:Brixton.RELEASE"
12  }
13}

2.3 高可用性,区块和区域

Eureka服务器并没有一个后台存储,但是注册表中的所有服务实例都要得发送心跳以更新它们的注册信息(所以这可以在内存中操作)。客户端也会有一个对eurake注册信息的缓存(所以它们的每次单独服务请求并不非得去注册表中查询)。
默认情况下Eureka服务器也是一个Eureka客户端并且需要(至少)一个服务URL来定位到节点。如果你没有提供它也会运行,但是在日志中会出现很多关于没有注册该节点的杂乱信息。
关于客户端侧的区块和区域可以查看如下Ribbon详细支持页面

2.4 单机模式

只要有某种监控或者是弹性运行时间(比如Cloud Foundry)来使服务存活,两个缓存(客户端和服务器)和心跳机制的整合使得单机Eureka服务器对故障保有相关的弹性。在单机模式下,你可能更喜欢关掉服务器的客户端行为,使得它不会不断失败的访问节点。例如:

01server:
02  port: 8761
03 
04eureka:
05  instance:
06    hostname: localhost
07  client:
08    registerWithEureka: false
09    fetchRegistry: false
10    serviceUrl:
11      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

注意serviceUrl和本地实例指向同一个主机。

2.5 节点感知

Eureka通过运行多个实例并要求它们彼此注册来使其高可用。实际上,这是它的默认行为,所以你需要做的就是给节点添加一个有效的serviceUrl来使其正常工作,例如:
Application.yml(两个相互感知的Eureka服务器节点)

01---
02spring:
03  profiles: peer1
04eureka:
05  instance:
06    hostname: peer1
07  client:
08    serviceUrl:
09      defaultZone: http://peer2/eureka/
10 
11---
12spring:
13  profiles: peer2
14eureka:
15  instance:
16    hostname: peer2
17  client:
18    serviceUrl:
19      defaultZone: http://peer1/eureka/

在本例中YAML配置文件通过不同的Spring profiles使得同一个服务器可以运行在两台主机上。你可更改/etc/hosts文件来解析主机名,用这个配置文件在单机上测试节点感知(在生产中这样做是没有多少意义的)。实际上如果你运行的机器知道自己的主机名(默认会通过java.net.InetAddress查找),那么eureka.instance.hostname是不需要的。
你可以在一个系统中添加多个节点,他们之间只要相互连接就能自己同步注册信息。如果这些节点在物理上是分离的(在一个或多个数据中心),那么该系统原则上是可以避免split-brain型故障。

2.6 IP地址偏好

在某些情况下,使用服务的IP地址比主机名好。通过将eureka.instance.preferIPAddress设置为true,应用在注册eureka时就会使用IP地址而不是主机名。

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Spring Cloud Netflix官方文档》2. 服务发现:Eureka服务器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值