Spring Cloud官方文档中文版-服务发现:Eureka服务端

官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#spring-cloud-eureka-server

文中例子我做了一些测试在:http://git.oschina.net/dreamingodd/spring-cloud-preparation

Service Discovery: Eureka Server 服务发现:Eureka服务端

How to Include Eureka Server 如何创建Eureka服务端

To include Eureka Server in your project use the starter with group org.springframework.cloud and artifact id spring-cloud-starter-eureka-server. See the Spring Cloud Project page for details on setting up your build system with the current Spring Cloud Release Train.

使用Eureka服务需要引入org.springframework.cloud的spring-cloud-starter-eureka-server项目。可以参考http://projects.spring.io/spring-cloud/来创建你的第一个Eureka服务。

How to Run a Eureka Server 如何运行Eureka服务端

@SpringBootApplication
@EnableEurekaServer
public class Application {
    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }
}

The server has a home page with a UI, and HTTP API endpoints per the normal Eureka functionality under /eureka/*.

Eureka服务端有一个默认的UI主页,每个Eureka服务端你都有一个HTTP API节点在/eureka/*

Eureka background reading: see flux capacitor and google group discussion.

想了解更多Eureka背景知识,推荐阅读 https://github.com/cfregly/fluxcapacitor/wiki/NetflixOSS-FAQ#eureka-service-discovery-load-balancerhttps://groups.google.com/forum/?fromgroups#!topic/eureka_netflix/g3p2r7gHnN0

TIP Due to Gradle’s dependency resolution rules and the lack of a parent bom feature, simply depending on spring-cloud-starter-eureka-server can cause failures on application startup. To remedy this the Spring Boot Gradle plugin must be added and the Spring cloud starter parent bom must be imported like so:

gradle引入:

build.gradle

buildscript {
  dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE")
  }
}
apply plugin: "spring-boot"
dependencyManagement {
  imports {
    mavenBom "org.springframework.cloud:spring-cloud-dependencies:Brixton.RELEASE"
  }
}

High Availability, Zones and Regions 高可用,地区和地域

The Eureka server does not have a backend store, but the service instances in the registry all have to send heartbeats to keep their registrations up to date (so this can be done in memory). Clients also have an in-memory cache of eureka registrations (so they don’t have to go to the registry for every single request to a service).

Eureka服务器并不在后端存储,但注册机中的服务实例都必须用心跳信息维持他们的最新的注册状态(也就是说可以在内存完成)。客户端同样也有一份注册信息缓存存在内存里。

By default every Eureka server is also a Eureka client and requires (at least one) service URL to locate a peer. If you don’t provide it the service will run and work, but it will shower your logs with a lot of noise about not being able to register with the peer. 默认情况下,每一个Eureka服务器也时一个Eureka客户端,同样需要(至少一个)service URL来定位节点。虽然即使开发人员不提供仍然能跑,但是会大量打出无法注册的垃圾log。

See also below for details of Ribbon support on the client side for Zones and Regions.

Standalone Mode 单机模式

The combination of the two caches (client and server) and the heartbeats make a standalone Eureka server fairly resilient to failure, as long as there is some sort of monitor or elastic runtime keeping it alive (e.g. Cloud Foundry). In standalone mode, you might prefer to switch off the client side behaviour, so it doesn’t keep trying and failing to reach its peers. Example:

只要存在某种监控或弹性运行时间来使服务存活(如Cloud Foundry),两个缓存和心跳协议的组合就能让单机的Eureka服务器对故障保有相当的弹性。单机模式下,开发人员可能更喜欢关闭服务器的客户端行为,这样服务端就不必一直尝试失败地访问节点。

application.yml (Standalone Eureka Server)

server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

Notice that the serviceUrl is pointing to the same host as the local instance.

注意serviceUrl跟本地实例是一样的。

Peer Awareness 节点感知(高可用)

Eureka can be made even more resilient and available by running multiple instances and asking them to register with each other. In fact, this is the default behaviour, so all you need to do to make it work is add a valid serviceUrl to a peer, e.g.

Eureka服务器通过跑多个实例并要求注册彼此,可以变得更具弹性。实际上,这是Eureka的默认使用方式,那么你需要给节点加入有效的serviceUrl使其正常工作。例如:

application.yml (Two Peer Aware Eureka Servers)

---
spring:
  profiles: peer1
eureka:
  instance:
    hostname: peer1
  client:
    serviceUrl:
      defaultZone: http://peer2/eureka/
---
spring:
  profiles: peer2
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1/eureka/

In this example we have a YAML file that can be used to run the same server on 2 hosts (peer1 and peer2), by running it in different Spring profiles. You could use this configuration to test the peer awareness on a single host (there’s not much value in doing that in production) by manipulating /etc/hosts to resolve the host names. In fact, the eureka.instance.hostname is not needed if you are running on a machine that knows its own hostname (it is looked up using java.net.InetAddress by default).

通过运行不同的Spring profile,本例中的YAML配置文件是在不同主机上的同一服务器(节点1和节点2)。开发人员通过操纵/etc/hosts伪造127.0.0.1的主机名,可以在同一主机上测试(这样做生产环境上没有价值)。实际上,eureka.instance.hostname这个配置项在生产环境没有用(PC会查询java.net.InetAddres获取到)。

You can add multiple peers to a system, and as long as they are all connected to each other by at least one edge, they will synchronize the registrations amongst themselves. If the peers are physically separated (inside a data centre or between multiple data centres) then the system can in principle survive split-brain type failures.

只要节点之间互相连接,开发人员可以为系统添加多个节点,它们之间会同步注册信息。如果节点是物理分离的(在一个或多个数据中心),那么系统原则上可以无视split-brain型故障而运行。

Prefer IP Address 使用IP

In some cases, it is preferable for Eureka to advertise the IP Adresses of services rather than the hostname. Set eureka.instance.preferIpAddress to true and when the application registers with eureka, it will use its IP Address rather than its hostname.

某些情况下,使用IP比hostname好。eureka.instance.preferIpAddress=true可以做到这一点。

dreamingodd原创文章,如转载请注明出处。

时间: 2024-10-20 21:26:16

Spring Cloud官方文档中文版-服务发现:Eureka服务端的相关文章

Spring Cloud官方文档中文版-服务发现:Eureka客户端

官方文档地址为:http://cloud.spring.io/spring-cloud-static/Brixton.SR7/#_spring_cloud_netflix 文中例子我做了一些测试在:http://git.oschina.net/dreamingodd/spring-cloud-preparation Spring Cloud Netflix This project provides Netflix OSS integrations for Spring Boot apps th

Spring Cloud官方文档中文版-声明式Rest客户端:Feign

官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http://git.oschina.net/dreamingodd/spring-cloud-preparation Declarative REST Client: Feign 声明式Rest客户端:Feign Feign is a declarative web service client. It

Spring Boot 官方文档入门及使用

个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念,请先移步上一篇文章 Spring Boot 学习.本篇原本是为了深入了解下Spring Boot而出现的. 另外,Spring Boot 仍然是基于Spring的,建议在赶完工之后深入学习下Spring,有兴趣可以看看我的 Spring 4 官方文档学习(十一)Web MVC 框架 .欢迎探讨,笑~

【译】StackExchange.Redis官方文档-中文版(序)

StackExchange.Redis官方文档-中文版(序) Intro 最近想深入学习一些 Redis 相关的东西.于是看了看官方的项目,发现里面有一份文档,于是打算翻译成中文,方便大家学习参考,如果有什么翻译不准确的地方,欢迎大家指出. 翻译进度 文档还有一部分还未翻译完,我会争取在三月中旬前将剩下的部分翻译结束. 翻译进度详见:https://github.com/WeihanLi/StackExchange.Redis-docs-cn 文档地址: 原文文档地址: https://gith

TensorFlow 官方文档中文版

http://wiki.jikexueyuan.com/list/deep-learning/ TensorFlow 官方文档中文版 你正在阅读的项目可能会比 Android 系统更加深远地影响着世界! 缘起 2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,同日,极客学院组织在线TensorFlow中文文档翻译. 机器学习作为人工智能的一种类型,可以让软件根据大量的数据来对未来的情况进行阐述或预判.如今,领先的科技巨头无不在机器学习下予以极大投入.Faceboo

TestNG官方文档中文版(2)-annotation(转)

1. 介绍    TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器). 编写一个测试的过程有三个典型步骤: * 编写测试的 业务逻辑并在代码中插入TestNG annotation    * 将测试信息添加到testng.xml文件或者build.xml中    * 运行TestNG 在欢迎页面上可以找到快速入门示例. 下面是这篇文档使用的概念: * suite由xml文件描述.它包

Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion

前言 在Spring Framework官方文档中,这三者是放到一起讲的,但没有解释为什么放到一起.大概是默认了读者都是有相关经验的人,但事实并非如此,例如我.好在闷着头看了一遍,又查资料又敲代码,总算明白了. 其实说穿了一文不值,我们用一个例子来解释: 假定,现有一个app,功能是接收你输入的生日,然后显示你的年龄.看起来app只要用当前日期减去你输入的日期就是年龄,应该很简单对吧?可惜事实不是这样的. 这里面有三个问题: 问题一:我们输入的永远是字符串,字符串需要转成日期格式才能被我们的ap

2DToolkit官方文档中文版打地鼠教程(二):设置摄像机

这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等).当前2D Toolkit版本为2.4. 这是一篇系列教程,全文共13节(官方文档为4章,不过为了每节有明确目的,我根据官方文档的标题拆成了13节),下面是本系列教程的所有链接: 2DToolkit官方文档中文版打地鼠教程(一):初始设置 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机

Spring 4 官方文档学习(十二)View技术

1.介绍 Spring 有很多优越的地方,其中一个就是将view技术与MVC框架的其他部分相隔离.例如,在JSP存在的情况下使用Groovy Markup Templates 还是使用Thymeleaf,仅仅是一个配置问题. 本章覆盖了主要的view技术,嗯嗯,可以与Spring结合的那些,并简明的说明了如何增加新的view技术. 本章假定你已经熟悉了Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图 -- 它覆盖了views如何耦合到MVC框架