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
3 public 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 capacitor和google group discussion页面。
提示:由于Gradle缺少设置父工程的方式,仅仅靠spring-cloud-starter-eureka-server会使得应用在启动时失败。要解决这个问题必须将Spring Boot的Gradle插件添加进来,并且像下面这种方式导入Spring cloud的父工程。
build.gradle.

01 buildscript {
02   dependencies {
03     classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE")
04   }
05 }
06  
07 apply plugin: "spring-boot"
08  
09 dependencyManagement {
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服务器对故障保有相关的弹性。在单机模式下,你可能更喜欢关掉服务器的客户端行为,使得它不会不断失败的访问节点。例如:

01 server:
02   port: 8761
03  
04 eureka:
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 ---
02 spring:
03   profiles: peer1
04 eureka:
05   instance:
06     hostname: peer1
07   client:
08     serviceUrl:
09       defaultZone: http://peer2/eureka/
10  
11 ---
12 spring:
13   profiles: peer2
14 eureka:
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服务器

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

  1. 《Spring Cloud Netflix官方文档》1.服务发现:Eureka客户端

    1.     服务发现:Eureka客户端 服务发现是微服务架构的关键原则之一.使用手动配置或一些约定方式来处理多服务多实例的方式是非常困难,并且十分脆弱的.Eureka同时是Netflix服务发现的 ...

  2. Spring Data Commons 官方文档学习

    Spring Data Commons 官方文档学习   -by LarryZeal Version 1.12.6.Release, 2017-07-27 为知笔记版本在这里,带格式. Table o ...

  3. 【文档熟肉】spring cloud官方文档の中文熟肉之eureka

    下面会陆续开始spring cloud中文文档的更新工作. 先更新个spring cloud最关键的eureka吧,原文地址: https://docs.spring.io/spring-cloud- ...

  4. Spring Boot配置文件规则以及使用方法官方文档查找以及Spring项目的官方文档查找方法...

    比如要使用Spring Boot实现一个功能,最直接的方式是Google,但是往往搜索出来的都比较乱,关键是乱在不同的版本上,比如1.x版本和2.x版本的配置是不一样的.最明显区别是在使用Thymel ...

  5. Spring Boot Admin (Spring Clould Admin) 官方文档重点内容中文翻译

    GitHub地址 文章目录 1. Spring Boot Admin简介 2. 快速入门 2.1 配置Spring Boot Admin Server (SBA Server) 2.2 注册Clien ...

  6. Spring cloud alibaba(二)nacos服务发现docker相同ip冲突

    引入服务发现其实比较简单 项目架构:同Spring cloud alibaba(一)多模块项目整合 spring cloud - pay - smdd - coupon - base - order- ...

  7. 关于Spring框架(官方文档)

    反应性堆栈上的Web Version 5.1.0.RELEASE 目录 1. Spring WebFlux 1.9.反应铁心 1.10.使用DispatcherHandler 1.11.带注释控制器 ...

  8. Spring Framework Integration 官方文档笔记

    Integration Message Conversion WebMvcConfigurationSupport 内含默认的 Converter BufferedImageHttpMessageCo ...

  9. spring data jpa 官方文档

    http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/#repositories.custom ...

最新文章

  1. 机器学习中如何处理缺失数据(NAN和Ifo)?
  2. C#多线程编程(转)
  3. TeeChart.Direct2D.dll的使用
  4. Azure SQL的DTU和eDTU到底是个什么鬼
  5. MyBatisPlus(笔记)
  6. cocos2d-x基于windows平台交叉编辑android工程
  7. 主成分分析法案例_机器学习理论(五)主成分分析法
  8. java求阶乘1-20_java求1+2!+3!+...+20!的和,java1到20的阶乘
  9. 对一段Oracle GoldenGate (OGG) 传输进程日志(.rpt文件)的解释
  10. 特定场景下的网络质量评估与预警方法介绍
  11. windows下qt的环境配置
  12. 数据提取-数据提取软件
  13. PTA_2019春_电话聊天狂人
  14. 《天才基本法》中的P=NP?问题对应算法逻辑
  15. sql语句查询昨天,今天,最近七天,最近三十天数据
  16. 软考初级程序员上午单选题(10)
  17. 燕青遇故人 ---《水浒传》中比较有诗意的章节
  18. c++代码小游戏——扫雷
  19. 公司注册购买企业邮箱的意义
  20. FPGA实例06——FPGA驱动超声波模块

热门文章

  1. Linux下巧妙使用邮件服务器之postfix(认证+web)
  2. “互联网+”时代下 银行信息如何保证安全?
  3. 移动应用开发过程中的迭代式原型设计
  4. 程序员避免颈椎病攻略
  5. 【OpenStack】OpenStack系列1之OpenStack本地开发环境搭建向社区贡献代码
  6. Microsoft主要服务器产品使用的网络端口
  7. TensorFlow之conv2d函数解析
  8. Python中的shape和reshape()
  9. OpenCV图像处理使用笔记(五)——图像边界拓展
  10. 【机器学习入门笔记4:OpenCV图片的写入和不同图片质量保存】20190203